известный_хост для 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

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

Если вы хотите получить более подробную информацию о моей программе, сообщите мне.

Спасибо!

0
задан 4 July 2018 в 10:32
2 ответа

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

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 @ 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 может создать его и для вас.

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

1
ответ дан 4 December 2019 в 15:54

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

0
ответ дан 4 December 2019 в 15:54

Теги

Похожие вопросы