Connexion SSH à l'aide de SSHJ à partir de l'application Java 6

Chose que tu veux faire

Il s'agit d'établir une connexion SSH depuis votre propre application compilée avec Java 6 vers une autre machine en utilisant la bibliothèque SSHJ. J'essayais de le faire en utilisant la bibliothèque JSch, mais cet article Comme je l'ai écrit dans 86c9e9efb5358601b25b), cela ne fonctionne pas, donc j'essaie de passer de la bibliothèque JSch à la bibliothèque SSHJ.

environnement

point d'accès

client

Exemple de code

Je pense que vous pouvez trouver de nombreux exemples qui effectuent une authentification par mot de passe au moment de la connexion SSH, mais il semble qu'il y avait peu d'échantillons qui effectuent une authentification par clé (avec phrase de passe), donc j'écrirai l'exemple de code qui a réussi à se connecter sous forme de mémorandum. Je vais.

La simple connexion à SSH ne suffit pas, j'ai donc essayé de faire télécharger le fichier après la connexion à SSH.

Les alphabets entièrement en majuscules sont les parties qui doivent être spécifiées en externe ou définies dans le code. De plus, la gestion des exceptions est souvent ignorée.

Sample.java


        SSHClient ssh = new SSHClient();
        ssh.addHostKeyVerifier(new PromiscuousVerifier());
        try {
            ssh.connect(HOST, PORT);
            ssh.authPublickey(USER, ssh.loadKeys(PRIVATEKEYFILEPATH, PASSPHRASE));
            ssh.newSCPFileTransfer().download(SRCDIR, new FileSystemFile(DSTDIR));
            ssh.disconnect();
            ssh.close();
        } catch (UserAuthException e) {
            e.printStackTrace();
        } catch (TransportException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

Précautions pour l'authentification par clé

Le fichier de clé privée qui peut être utilisé avec SSHJ semble être un fichier au format PEM.

Je pense que le fichier de clé privée et le fichier de clé publique sont créés à l'aide de la commande ssh-keygen, mais en fonction de la version de la commande ssh-keygen utilisée, le fichier de clé privée au format suivant est généré par défaut. .. L'authentification échoue lors de l'utilisation de ce fichier de clé privée avec la bibliothèque SSHJ.

-----BEGIN RSA PRIVATE KEY-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
:
:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END RSA PRIVATE KEY-----

Pour vous authentifier auprès de la bibliothèque SSHJ, utilisez un fichier de clé privée au format suivant.

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
:
:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END RSA PRIVATE KEY-----

Pour générer un fichier de clé privée au format PEM comme celui ci-dessus, spécifiez -m PEM comme option pour la commande ssh-keygen.

-- c'est tout --

Recommended Posts

Connexion SSH à l'aide de SSHJ à partir de l'application Java 6
Connectez-vous de Java à MySQL à l'aide d'Eclipse
Connectez-vous à Aurora (MySQL) depuis une application Java
Utilisation de la base de données (SQL Server 2014) à partir d'un programme Java 04/01/2018
Connectez-vous de Java à PostgreSQL
Utilisation de Docker depuis Java Gradle
Faire un diamant en utilisant Java
[Non résolu] Une exception se produit lorsqu'une connexion SSH est exécutée à l'aide de JSch à partir d'une application Java 6.
J'ai créé une application shopify @java
Télécharger des fichiers à l'aide de Java HttpURLConnection
Accéder à Teradata depuis une application Java
Créer un projet Java à l'aide d'Eclipse
Exemple de code utilisant Minio de Java
Essayez de transmettre des valeurs de Java Servlet à l'application iPhone à l'aide de JSON
Traitement des données à l'aide de l'API de flux de Java 8
Essayez d'exécuter Kubernetes Job à partir de Java
Créer une application TODO dans Java 7 Créer un en-tête
Créons une application de calcul avec Java
Déployer des applications Web Java sur Heroku
[Java] Générez une liste restreinte à partir de plusieurs listes à l'aide de l'API Stream
Si une personne de Java apprend PHP
[Java] J'ai essayé de me connecter en utilisant le pool de connexion avec Servlet (tomcat) & MySQL & Java
Accédez à Forec.com depuis Java en utilisant Axis2 Enterprise WSDL
GetInstance () à partir d'une classe @Singleton dans Groovy à partir de Java
Pour devenir programmeur VB.net depuis une boutique Java
Créer une application Kotlin à l'aide du conteneur OpenJDK Docker
Les débutants en programmation apprennent PHP à partir d'une perspective Java-variables-
Créer Scala Seq à partir de Java, faire de Scala Seq une liste Java
Essayez d'accéder à l'ensemble de données depuis Java en utilisant JZOS
[Java] Récupère des valeurs de manière aléatoire dans un tableau
Créez un environnement de développement Java à l'aide de jenv sur votre Mac
[Java] [SQL Server] Se connecter à SQL Server 2017 local à l'aide de JDBC pour SQL Server
Créer une image docker pour exécuter une application Java simple
Sortie de la valeur maximale d'un tableau à l'aide de la sortie standard Java
Etudier java8 (comme lire des fichiers à l'aide de Stream)
Comment passer d'Eclipse Java à un fichier SQL
Appeler une méthode avec le bloc de rappel de Kotlin depuis Java
[Java] Extraction de texte de PowerPoint (ppt) à l'aide d'Apache POI
J'ai essayé d'utiliser Log4j2 sur un serveur Java EE
[Note] Créez un environnement Java à partir de zéro avec docker
Comment convertir A en A et A en A en utilisant le produit logique et la somme en Java
J'ai créé un Wrapper qui appelle KNP depuis Java
Essayez de créer un environnement de développement Java à l'aide de Docker
J'ai essayé de gratter un graphique boursier en utilisant Java (Jsoup)