Как часть сценария запуска, я должен автоматически открыть несколько окон gnome-терминала, один из этих терминалов автоматически отправляет:
ssh user@192.168.1.3
Ограничением является то, что мне все еще нужно ввести пароль для завершения соединения SSH.
Я хочу, чтобы мой скрипт инициировал команду и завершил соединение. В той мере, я пытался следовать инструкциям , как указано в общепринятом ответ здесь .
Из системы, к которой я хочу подключиться, я запустил:
ssh-keygen
Enter file in which to save the key: /home/user/ssh/keys/server1key
Затем мне предложили ввести фразу-пароль. Я оставил это поле пустым, так как не знал, для чего оно будет, поэтому я предполагал, что для его установки потребуется разблокировать его с помощью ключевой фразы каждый раз, когда я буду его использовать.
Продолжая с инструкциями, связанными выше, я тогда побежал и получил следующее:
ssh-copy-id user@IP
ERROR: No identities found
Быстрый поиск показал, что мне нужно было указать местоположение ключа, поскольку оно не было в месте сохранения по умолчанию, поэтому я исправил это:
ssh-copy-id -i /home/user/ssh/keys/server1key.pub user@192.168.1.3
После запроса пароля сервера он успешно добавил ключ. Тем не менее, при попытке войти в систему с помощью «ssh user @ IP», мне все равно было предложено ввести пароль.
Насколько я знаю, я правильно следовал связанным инструкциям, так что либо я что-то упустил, либо, возможно, существующая конфигурация мешает мне заставить это работать?
Обе системы используют 18.04 и openssh.
источник
Ответы:
Сбой происходит по той же причине, что и
ssh-copy-id
при первом сбое, т. Е. Потому что вы выбрали нестандартное расположение для файла идентификации.Вы можете разрешить это таким же образом, добавив
-i /home/user/ssh/keys/server1key
к вашейssh
команде - обратите внимание, что на стороне клиента требуется расположение файла закрытого ключа.Из
man ssh
В качестве альтернативы вы можете создать
~/.ssh/config
запись файла для хоста в соответствии систочник
~/.ssh/config
, в противном случае OpenSSH использует общесистемное значение по умолчанию/etc/ssh/ssh_config
. В случае, если кто-то найдет это полезным, я загрузил предварительно собранный ssh_config на свой GitHub некоторое время назад как отправную точку для пользователей, у которых может не быть времени, чтобы прочитать справочную страницу~/.ssh/config
переопределяют глобальныеssh_config
, но только наличие файла не отключит общесистемную конфигурацию.Другая причина, по которой происходит
ssh-copy-id
сбой, заключается в том, что ключ не был добавлен к агенту SSH.Сначала проверьте и запустите, если
ssh-agent
запущено:Если вы получили идентификатор процесса, вы можете добавить свой ключ:
С
-k
вами добавьте ключ в связку ключей.Проверьте, добавлены ли ключи с помощью:
ssh-copy-id
должен работать сейчас.источник
Надеюсь, что это сработает для вас. "Sshpass -p yourpassword" автоматически подключится к удаленному хосту.
[root @ localhost .ssh] # sshpass -p password123 ssh -l root localhost
источник
Просто выполните 2 команды:
Длинный ответ:
А потом:
источник