从我使用 ssh 连接的机器上 ssh 连接

Dom*_*ger 3 ssh git

我想SSH到机器(我们称之为B)从一台机器(姑且称之为A),然后运行该计算机(在命令B),通常需要进入一个SSH密码(如果你有兴趣,我”我正在尝试git pull从 BitBucket 上的私有存储库中访问)。

我可以ssh到BA(没有输入口令),并且可以在该计算机上运行的命令,如下所示:

A > ssh B 'ls'
Run Code Online (Sandbox Code Playgroud)

我也可以B从ssh 进入A,然后运行我的git pull,它会要求输入密码:

A > ssh B
B > git pull
Enter passphrase for key '/home/username/.ssh/id_rsa': 
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试 git pull (这需要密码),就会发生这种情况:

A > ssh cbc 'git pull'
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)

任何想法,我怎么能得到git pull工作而不会从密码AB

use*_*686 5

设置ssh-agent(或等效),然后为 SSH 连接启用代理转发

在本地机器上启用 ssh-agent

“本地”是你坐的那个。您不需要在其他任何地方运行代理。

如果你很幸运,一个已经在运行了;大多数 Linux 发行版为每个 X11 会话启动一个实例。运行ssh-add以导入您的密钥;ssh-add -l列出键。

如果使用 GNOME 或 Mac OS X,您可能会有自己的代理实现,它会在登录时导入已知的密钥。ssh-agent但是,使用标准 OpenSSH ,您必须手动执行此操作(尽管存在脚本和 PAM 模块可以自动执行)。

在 Windows 上,PuTTY 带有Pageant,而 Cygwin OpenSSH 带有相同的ssh-agent(尽管使用起来比在 Unix 中复杂得多)。

启用代理转发

一旦代理工作并加载了密钥,请尝试像这样连接:

A> ssh-add -l

A> ssh -A B ssh-add -l
Run Code Online (Sandbox Code Playgroud)

-A选项允许通过 SSH 连接进行代理转发,所以如果一切正常,上面的两个命令应该给出相同的输出。

$ ssh-add -l
2048 06:b7:29:1e:6b:ea:c3:04:c4:33:fc:48:e0:62:2f:ef grawity@anywhere(旧密钥)(RSA)
4096 19:3c:f0:79:32:00:fa:04:2f:15:5d:2a:e2:c9:a3:ad grawity@anywhere (2011-11-01) (RSA)

$ ssh panther ssh-add -l
无法打开与您的身份验证代理的连接。

$ ssh -A黑豹 ssh-add -l
2048 06:b7:29:1e:6b:ea:c3:04:c4:33:fc:48:e0:62:2f:ef grawity@anywhere(旧密钥)(RSA)
4096 19:3c:f0:79:32:00:fa:04:2f:15:5d:2a:e2:c9:a3:ad grawity@anywhere (2011-11-01) (RSA)

如果有效,请通过编辑使其持久化~/.ssh/config- 将其放在底部:

Host *
    ForwardAgent yes
Run Code Online (Sandbox Code Playgroud)

而不是*你可以给出一个受信任的名字列表;ssh_config有关确切语法,请参阅手册页。

您可以在所有机器上启用转发;您可以链接多少没有限制。