У меня есть Ubuntu 16.04 и компьютер Debian, оба подключены через сеть. На моей машине с Ubuntu запущена служба, которая должна перезагрузить компьютер debian при запуске службы. Служба вызывается sudo service debian_client start
и выполняет несколько команд, таких как ssh root@192.168.0.1 reboot
на компьютере с Debian. Проблема в том, что мне нужно вводить пароль один раз для каждой команды ssh, что очень раздражает.
Я попытался перейти к ~/.ssh
на машине с Ubuntu и сделал
ssh-keygen -t rsa
ssh-copy-id root@192.168.0.1
После этого я вошел в систему через ssh root@192.168.0.1
, которая работает без ввода пароля. Но при вызове команды ssh через службу мне все равно приходится вводить пароль. Кто-нибудь знает, почему и как решить эту проблему, я не могу найти помощь онлайн для этой конкретной проблемы?
Интересно, я изменил сценарий на ssh -v root@192.168.0.1
и сравнил вывод сценария с выводом если я сделаю это через Bash. Разница в том, что скрипт всегда ищет ключи в / root, как показано в выводе:
...
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/id_rsa
debug1: Trying private key: /root/.ssh/id_dsa
debug1: Trying private key: /root/.ssh/id_ecdsa
debug1: Trying private key: /root/.ssh/id_ed25519
debug1: Next authentication method: password
Если я сам делаю это через bash, вывод будет выглядеть так:
debug1: Next authentication method: publickey
debug1: Offering RSA public key: user@ubuntucomputer
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: Authentication succeeded (publickey).
и Я вошел в систему без ввода пароля. Кто-нибудь может помочь, почему мой сервис ищет ключ в / root /? Большое спасибо.
Я предполагаю, что:
debug1: Offering RSA public key: user@ubuntucomputer
) Возможный быстрый способ сделать пароль менее работающим при аутентификации:
cd ~; sudo cp -R .ssh /root/