Я использую приведенный ниже код для подключения к удаленному серверу, и я выполнил следующие шаги, чтобы подключить генерацию частного / открытого ключа и объединить открытый ключ с авторизованным ключом.
Код:
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