Назад | Перейти на главную страницу

известный_хост для SSH-соединения

Я программирую приложение на Java. Это приложение устанавливает соединение между двумя ПК (один Windows и один Linux). Мое приложение должно установить соединение и выполнить несколько команд. Среди команд я хочу передать файл.

Это соединение SSH с протоколом SCP.

Мне удалось установить соединение с JSCH, я нашел команду для передачи файла, но сейчас у меня проблема.

Моя команда для передачи файла:

scp -r -p path1 ***@***.***.***.***:path2;

Но когда я запускаю программу, у меня появляется такое сообщение:

Host '***.***.***.***' is not in the trusted hosts file.
(fingerprint md5 CLE)
Do you want to continue connecting? (y/n)

Но это сообщение находится на моей консоли, в моем приложении Java, поэтому я не отправляю y или n. Я продолжил поиск известного_хоста, но это ничего не дало.

Я пробую это:

jsch.setKnownHosts(System.getProperty("user.home") + "/.ssh/known_hosts");
session.setConfig("StrictHostKeyChecking", "no");

Или это (в моих файлах hosts):

ssh -o StrictHostKeyChecking=no username@hostname.com

Или это :

Host 192.168.0.*
   StrictHostKeyChecking no
   UserKnownHostsFile=/dev/null

Но ничего не работает, не понимаю логики. Какой файл хоста мы должны изменить? К какому из компьютеров я хочу подключиться или какой компьютер подключается?

Если вам нужны более подробные сведения о моей программе, скажите мне.

Спасибо !

Если вам все еще интересно.

StrictHostKeyChecking - это мера безопасности, используемая для противодействия атакам типа «злоумышленник в середине». Когда вы подключаетесь к новому серверу через SSH, он уведомляет пользователя о том, что это новый компьютер, и я никогда не подключался к нему раньше, поэтому я ему не доверяю, так что вы хотите сделать? Это в основном то, что означает это сообщение.

Host '***.***.***.***' is not in the trusted hosts file.
(fingerprint md5 CLE)
Do you want to continue connecting? (y/n)

Если вы ответите утвердительно, он добавит открытый ключ этого сервера в $HOME/.ssh/known_hosts машины, работающей ssh user@ip. Что-то вроде этого:

192.168.1.136 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJj/87wetLDd27TX+JEIPxWZbu4DJXjYYM9IQZoCKBCi8H66cXgrT4M0Vf9x8OE7R8Vnz5JkVnnAoic311mQB44=

В случае атаки «человек посередине» вы увидите что-то вроде этого:

user@hostname ~]$ ssh user@ip
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
6e:45:f9:a8:af:38:3d:a1:a5:c7:76:1d:02:f8:77:00.
Please contact your system administrator.
Add correct host key in /home/hostname /.ssh/known_hosts to get rid of this message.
Offending RSA key in /home/hostname/.ssh/known_hosts:4
RSA host key for pong has changed and you have requested strict checking.
Host key verification failed.

Это сообщение часто встречается, если вы повторно инициализируете сервер на том же IP-адресе, что и тот, который вы подключались в прошлом, для этого вам нужно удалить строку 4 и снова пройти процесс доверия.

Пароль запроса PuTTY

С SSH вы можете использовать аутентификацию с закрытым ключом с открытым ключом или пароль. Большинство системных администраторов удаляют функцию пароля, поскольку это может дать хакерам преимущество использовать что-то вроде грубой силы или радужной таблицы для получения доступа.

Чтобы избавиться от пароля, вам нужно добавить открытый ключ вашего компьютера (тот, который запускает java) в серверный $HOME/.ssh/authorized_keys файл.

Эта команда распечатает открытый ключ текущего используемого закрытого ключа: ssh-add -L. Или вы можете найти это в своей машине $HOME/.ssh/id_*.pub. * будет какое-то слово в зависимости от типа ключа, скорее всего RSA. Поскольку вы используете Putty, вам нужно принять второй подход. Если у вас нет SSH-ключа, Putty также может создать его для вас.

Теперь он не будет спрашивать ваш пароль при следующей попытке входа в систему.

Это файл ~ / .ssh / known_hosts. Вы проверили, что файл обновляется с использованием правильного ключа? В качестве теста вы можете попробовать ssh из командной строки, а затем принять открытый ключ. Таким образом, хост будет добавлен в ваш ~ / .ssh / known_hosts, и тогда вы больше не должны получать ошибку. Обычно StrictHostKeyChecking no не рекомендуется для обеспечения безопасности.