【问题标题】:SSH from shellscript without password [duplicate]来自没有密码的shell脚本的SSH [重复]
【发布时间】:2013-11-05 16:07:55
【问题描述】:

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

ssh -f -N -R 54321:localhost:22 mylogin@host

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

【问题讨论】:

标签: linux shell ssh sh


【解决方案1】:

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

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

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

【讨论】:

  • 密钥以解密方式存储,安全性不成问题,因为它位于没有外部互联网访问的教室环境中。我正在从 rc.local 启动脚本,调用 python 脚本来运行命令。当脚本被自动调用时,我得到“主机密钥验证失败”。当我一秒钟后手动运行脚本时,一切都很好。我通过启动 xsession 并运行后台应用程序找到了解决方法,但我认为这不是一个很好的解决方案。
猜你喜欢
  • 1970-01-01
  • 2011-09-05
  • 1970-01-01
  • 2021-12-14
  • 2012-05-01
  • 1970-01-01
  • 2014-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多