通过SSH实现无密码登录

3
我正在编写一个脚本,需要能够访问一个受限制的服务器。我希望通过连接到另一台我有权限访问且可以访问其他计算机的Unix服务器来实现这一点。
我可以从家里SSH进入第二台机器而不需要输入密码,因为我生成了SSH密钥并使用ssh-copy-id。当我在第二台机器上时,我也可以以同样的方式SSH进入第三台机器,而不需要输入密码。
然而,当我SSH进入第二台机器,然后尝试SSH进入第三台机器时,我会被提示输入密钥的密码和第三台计算机的密码。
为什么会发生这种情况,我该如何停止这个提示?
编辑:澄清一些要点。
  • 我没有在任何一台机器上拥有root权限,只有在家里的机器上有。
  • 我上面打错了(已经更正)。当我在第二台机器上时,我可以SSH进入第三台服务器。
图示:
Machine A : Home machine, root access
|           SSH (passwordless)
v
Machine B : Publicly accessible server, no root permissions
|           SSH (passwordless while physically logged in,
|           password prompted while at machine A SSHed into machine B)
v
Machine C : Only accessable on campus 
            (which B is and A is not), no root permissions

无密码登录是否能在任何地方使用?您的问题中没有提到。 - jman
另外,我看到了一些不相关的关闭投票。我不认为这是不相关的。如果您想让提问者完善问题,请提出要求! - jman
我不确定您所说的“任何地方”是什么意思。我认为机器B(请参见编辑后的问题)是我唯一可以访问并能够SSH到机器C的机器。当我身处机器B时,我可以无需密码地从机器B SSH到机器C,但当我实际在A上并尝试通过SSH进入B然后再尝试SSH进入C时则不行。 - superbriggs
2个回答

2

您提到能够从第一台机器进入第二台机器,从第一台机器进入第二台机器。因此,如果链中有第三台机器,则需要在第三台机器上设置SSH密钥或获取第三台机器的公钥。

另一个好的提示是手动运行带有详细/调试 (-v) 选项的SSH,这样您可以看到每个步骤正在发生的情况。

 -v      Verbose mode.  Causes ssh to print debugging messages about its
         progress.  This is helpful in debugging connection, authentica-
         tion, and configuration problems.  Multiple -v options increase
         the verbosity.  The maximum is 3.

过去,它曾经让我省去了很多麻烦,因为它清楚地显示了登录过程的具体流程以及阻塞它的原因。

因此,如果你的第三台机器的名称是machine3.local,那么使用详细模式的ssh命令如下:

ssh -v machine3.local

编辑:原帖作者说他为第三台机器生成的密钥被要求输入密码。如果是这样,那就是问题所在。如果想实现无密码访问,你不能在SSH密钥上设置密码。

另一个编辑:此外,请确保它们具有与以下匹配的权限,并且由尝试访问的帐户拥有所有权,就像这个示例显示的那样:

-rw------- [username] [usergroup] authorized_keys
-rw------- [username] [usergroup] id_rsa
-rw-r--r-- [username] [usergroup] id_rsa.pub
-rw-r--r-- [username] [usergroup] known_hosts

谢谢。我已经完成了,似乎以下几行可能会提供一些关于问题的见解:debug1: Server accepts key: pkalg ssh-rsa blen 277 | debug1: PEM_read_PrivateKey failed | debug1: read PEM private key done: type <unknown>|表示新行(我无法在评论中显示)。这发生在我被提示输入密码之前。另外,我稍微编辑了一下问题,因为我打错了几个部分。再次感谢。 - superbriggs
那么看起来你需要从第三台机器获取公钥。就这么简单。或者将第二台机器的公钥设置到第三台机器上。 - Giacomo1968
你刚刚回答了自己的问题。你给SSH密钥添加了一个口令,这样做就无法实现无密码登录。只需在要求输入口令时输入100%的空白,然后按回车键,将该密钥复制到C机器(也称为第三台机器),问题就应该解决了。 - Giacomo1968
我没有设置密码,当系统提示时,我只需按回车键继续。 - superbriggs
此外,请检查C机器(也称为第三台机器)上.ssh目录的权限。请查看我的新编辑。 - Giacomo1968
显示剩余2条评论

0

只需检查第二台计算机是否已登录为root用户。
如果是,则必须像为用户创建ssh密钥一样创建它。
基本上,即使您已为用户创建了ssh密钥,当您再次以root身份登录时,也必须创建ssh密钥。


我在SSH连接的两台机器上都没有root权限。很抱歉没有说清楚。 - superbriggs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接