以下のコードを使用してリモートサーバーに接続し、以下の手順に従って、秘密/公開キーの生成と公開キーと承認済みキーの連結を接続します。
コード:
private Session createSession() throws JSchException {
JSch jsch = new JSch();
jsch.addIdentity(privateKey); //add private key path as ~/.ssh/id_rsa
Session session;
session = jsch.getSession(user, Host, port);
Java.util.Properties config = new Java.util.Properties();
Properties cfg = new Properties();
cfg.put("trust", "true");
cfg.put("StrictHostKeyChecking", "no");
cfg.put("HashKnownHosts", "yes");
session.setConfig(cfg);
session.connect();
return session;
}
手順:
1. I can able to generate private/public key in the path ~/.ssh/id_rsa(private key) and ~/.ssh/id_rsa.pub(public key)
>> ssh-keygen (or) ssh-keygen -t rsa -b 4096
Note: Generated key with no passphrase
2. I have added public key with authorized_keys with below command
>> ssh user@Host "echo \"`cat ~/.ssh/id_rsa.pub`\" >> .ssh/authorized_keys"
それでも、「com.jcraft.jsch.JSchException:Auth fail」という例外に直面しています。先に進むために私を案内してください。
これはいくつかの理由で発生する可能性があると思います。
秘密鍵はパスワードで保護されていますが、すでに確認済みですが、そうではありません。
キーを含むディレクトリは暗号化されています。
.sshディレクトリおよび/または公開/秘密鍵のファイル許可がオープンされています。彼らはする必要があります:
また、許可されているキーファイル内の公開キーの形式に互換性がない可能性もあります。別の形式に変換する必要がある場合があります。 OpenSSHを想定:
ssh-keygen -i -f /path/to/private/key ssh-keygen -i -f /path/to/public/key
ssh-keygen -e -f /path/to/private/key ssh-keygen -e -f /path/to/public/key