我有一台 Ubuntu 16.04 和一台 Debian 机器,两者都通过网络连接。在我的 Ubuntu 机器上有一个服务正在运行,启动服务时需要重新启动 Debian 计算机。该服务被 Debian 机器调用sudo service debian_client start
并执行一堆命令,就像在 Debian 机器上一样。问题是,我需要为每个 ssh 命令输入一次密码,这非常烦人。ssh [email protected] reboot
然后我尝试在~/.ssh
Ubuntu 机器上
ssh-keygen -t rsa
ssh-copy-id [email protected]
之后我通过登录,无需输入密码。但是当通过服务调用 ssh 命令时,我仍然必须输入密码。有人知道为什么以及如何解决这个问题吗,我在网上找不到针对该特定问题的帮助?ssh [email protected]
有趣的是,我修改了脚本,并将脚本的输出与通过 bash 执行的输出进行了比较。不同之处在于脚本始终在 /root 中查找键,如输出所示:ssh -v [email protected]
...
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/ 处寻找密钥?非常感谢。
答案1
我的猜测是:
- 您以用户“user”身份生成了 ssh-key(通过 bash/cli 进行 ssh 登录
debug1: Offering RSA public key: user@ubuntucomputer
) - 有一个包含 ssh 密钥的 /home/user/.ssh 文件夹。
- 该服务以“服务”用户身份执行,主目录为“/root”。
使无密码身份验证正常工作的可能快速方法是:
cd ~; sudo cp -R .ssh /root/