我想SSH到机器(我们称之为B)从一台机器(姑且称之为A),然后运行该计算机(在命令B),通常需要进入一个SSH密码(如果你有兴趣,我”我正在尝试git pull从 BitBucket 上的私有存储库中访问)。
我可以ssh到B从A(没有输入口令),并且可以在该计算机上运行的命令,如下所示:
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工作而不会从密码A的B?
设置ssh-agent(或等效),然后为 SSH 连接启用代理转发。
“本地”是你坐的那个。您不需要在其他任何地方运行代理。
如果你很幸运,一个已经在运行了;大多数 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有关确切语法,请参阅手册页。
您可以在所有机器上启用转发;您可以链接多少没有限制。
| 归档时间: |
|
| 查看次数: |
410 次 |
| 最近记录: |