//开始编辑
我现在应该注意到,我已经修改了一些,如果从“自动化”连接并指向“自动化”上的私钥时使用“-i identity_file”开关,则一切正常。
//结束编辑
这里涉及三个系统。
1)生产
2)工作站
3)自动化
数字2和3在同一个networking上,#1在远程networking上。 #3没有连接显示器,它通过#2的SSH进行pipe理。
现在#2有公共/私人密钥可用,并且能够连接到#1和#3而没有密码就好了。
我需要以同样的方式从#3连接#1。 我第一次尝试复制#1到#3的#2用途。 当我尝试从#3连接到#1时,系统会提示input密码。 我login到#3时使用了ssh-keygen,并将这些密钥导入#1,就像我在设置#2连接到#1时一样。 我仍然提示input密码。
为什么从#3连接而不是#2连接时提示input密码?
我能想到的唯一区别是,当从#3连接时,我已经从#2远程login到#3。
如果你使用的是OpenSSH,这就是你如何做Zoredachebuild议的:
在machine-1 ,启动一个SSH代理(如果还没有运行,例如GNOME会自动启动):
一个$ eval $(ssh-agent) Agent pid
将密钥加载到代理中(再次,GNOME的gnome-keyring自动执行此操作;使用ssh-add -l列出所有密钥)。
一个$ ssh-add 为/home/grawity/.ssh/id_rsa:******input密码
一个$ ssh-add -l
4096 11:83:7a:39:74:9d:75:e6:90:35:34:23:f5:d7:6b:6a /home/grawity/.ssh/id_rsa
连接到machine-2 ,启用代理转发:
一个$ ssh - 一台机器-2
连接后,validation代理转发的工作原理:
两个$ ssh-add -l 4096 11:83:7a:39:74:9d:75:e6:90:35:34:23:f5:d7:6b:6a /home/grawity/.ssh/id_rsa
如果有效,从machine-2连接到machine-3 ,然后回到machine-1 :
两个$ ssh -A-machine-3 三个$ ssh - 一台机器-1 一个$ _
如果一切正常,编辑~/.ssh/config并添加:
主机-1台机-2台-3台
AgentForwarding是的
你最初的问题似乎是要求使用你的SSH访问多个系统,我提供了build议ssh-agent的答案(见下文)。 看完你的评论后,我知道你明白了不同的问题。
在您提到的问题中,您提到您将私钥和公钥从工作站复制到另一台计算机,以供您尝试自动化的服务使用。 这是一个坏主意 。 SSH密钥应该确定一个用户或一个服务。 您和另一个系统上的服务帐户之间不应共享私钥 。 你应该在你的服务器上创build一组新的密钥。
我猜想你有问题连接的最可能的原因是关于你如何从你的工作站复制密钥到其他系统。 OpenSSH对密钥的所有权和许可非常挑剔。 私钥应该由用户拥有,它应该具有0600的权限。如果密钥可以被群组读取,那么ssh将拒绝使用它。 如果您在尝试连接时向ssh提供-v选项,则会看到关于密钥权限的抱怨。
因此,我build议您在自动化主机上为服务帐户生成一组新的密钥 ,然后将公钥传输到其他服务器。
由于听起来您信任这些系统,并且您的所有连接最初都是从工作站创build的,您可以简单地在工作站上启动SSH代理 ,将密钥添加到agenct,并在所有主机上的客户端configuration中启用代理转发。