当我在本地执行 运行 命令时,未加载 ssh-agent

ssh-agent isn't loaded when i run command locally

我想从我的 Mac 部署一个应用程序到我的 ubutun 18.04 服务器。问题是当我去我的服务器并执行一个简单的命令时 ssh -T git@bitbucket.org 一切正常。它不问我的密码等... 但是当我 运行 命令

ssh deploy@ipofmyserver 'ssh -T git@bitbucket.org'

我遇到了这个错误:

git@bitbucket.org: Permission denied (publickey).

我的 ssh 密钥已生成并通知我的 bitbucket 帐户。

我注意到当我使用 ssh deploy@... 连接时,用户代理没有启动。当我 运行 命令

ssh deploy@... 'eval `ssh-agent -s` && ssh-add && ssh -T git@bitbucket.org'

它询问我的密码,我得到了可以连接的响应。 我尝试使用此解决方案来使用用户代理 运行ning : https://github.com/wwalker/ssh-find-agent 但它不起作用。

有什么解决办法吗?

I try to use this solution to use a user-agent already running : https://github.com/wwalker/ssh-find-agent but it doesn't work.

如果按照记录,您尝试在 ~/.bashrc~./.zshrc 中使用 . ssh-find-agent.sh,那将不起作用。

您问题的核心(ssh inside ssh)是 [ssh 会话将显示为:

  • ~/.bash_profile 在交互式会话中(不是 .bashrc
  • 非交互式会话中没有任何内容 (ssh user@server 'a command')

您至少应该找到 .bashrc_profile)来触发 . ssh-find-agent.sh 并查看它是否找到您的 ssh 代理(已经 运行, 密码已经输入)

如果您必须输入密码,您可能需要expect as shown at the end of this answer

采购.profile而非 .bash_profile)的OP jean-max confirms 足以使. ssh-find-agent.sh工作。


chepner mentions the ssh -J "jump host" option,这里是动态的:

ssh -J deploy@ipfmyserver git@bitbucket.org