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.
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();
}
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