我为在树莓派上运行的学校项目(运行树莓派)生成了一个密钥对。当我跑
ssh -f -N -R 54321:localhost:22 mylogin@host
在命令行中我没有问题。无需我输入密码即可设置隧道。但是,当我尝试从 shell 脚本运行完全相同的代码时,它会提示我输入密码。有人知道我的错误吗?
在大多数 Linux 发行版中,ssh-agent
当您登录时会启动一个实例。这是一个后台进程,它保存您的 SSH 密钥的解密副本;该ssh
命令将尝试通过ssh-agent
访问密钥以进行公钥身份验证。关键ssh-agent
是您应该只需要在登录会话期间输入一次 SSH 密钥的密码。(在某些发行版上,您甚至不需要输入 - 您的密钥会在您登录时自动解密。)
我猜你正在尝试从 cron 或其他服务器进程(如 Web 服务器或 CGI 脚本)运行脚本?如果是这样,它将没有为ssh
命令设置必要的环境变量来与之交谈ssh-agent
- 所以它会提示输入密码(如果它没有在终端中运行,则会失败)。
您可以通过存储 SSH 密钥的未加密副本来解决此问题(因此您不需要ssh-agent
解密它),但由于这是一个主要的安全问题,不,这通常仅适用于允许访问锁定的 SSH 密钥-下来,最低权限的帐户。