来自shell脚本的SSH没有密码

时间:2013-11-05 16:07:56

标签: linux shell ssh sh

我为我的学校项目生成了一个密钥对,运行在树莓派(运行raspbian)上。我跑的时候

ssh -f -N -R 54321:localhost:22 mylogin@host
命令行中的

我没有遇到任何问题。设置隧道时无需输入密码。但是,当我尝试从shell脚本运行完全相同的代码时,它会提示我输入密码。有人知道我的错误吗?

1 个答案:

答案 0 :(得分:1)

在大多数Linux发行版中,登录时会启动ssh-agent的实例。这是一个后台进程,可以保存SSH密钥的解密副本; ssh命令将尝试通过ssh-agent访问密钥以进行公钥验证。 ssh-agent的要点是,您只需在登录会话期间输入一次SSH密码即可。 (在某些发行版上你甚至不需要输入它 - 你的密钥会在你登录时自动解密。)

我猜你在尝试从cron或其他服务器进程(如Web服务器或CGI脚本)运行脚本?如果是这样,它将没有为ssh命令设置必要的环境变量来与ssh-agent通信 - 因此它将提示输入密码(因此如果它不在终端内运行则会失败) )。

你可以通过存储SSH密钥的未加密副本来解决这个问题(所以你不需要ssh-agent来解密它),但由于这是一个主要的安全措施,所以通常只做SSH密钥,允许访问锁定的,最低权限的帐户。