SSH通过SSH无密码登录

时间:2013-02-04 17:38:02

标签: unix ssh ssh-keys

我正在编写一个脚本,该脚本需要能够访问具有有限访问权限的服务器。我希望通过另一台我有权访问的unix服务器来访问另一台计算机。

我可以从家里通过SSH连接到第二台机器,因为我生成了一个SSH密钥并使用了ssh-copy-id。当我身在第二台机器上时,我可以用相同的方式SSH进入第三个,而不会被提示输入密码。

然而,当我通过SSH连接到第二个,然后尝试SSH进入第三个时,我被提示输入密码和第三台计算机的密码。

为什么会发生这种情况,如何停止此提示?

编辑:澄清一些观点。

  • 我没有root权限,我正在SSH服务器,只有我家里的机器
  • 我错过了上面的打字(现已修复)。在第二台机器上,我可以通过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

2 个答案:

答案 0 :(得分:2)

你提到能够从1日进入第2台机器,从1日到2日进入。因此,如果链中有第3台机器,您需要在第3台机器上设置SSH密钥,或者从您提到的第3台机器上获取公钥。

另一个好的建议是使用详细/调试(-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.

过去,通过向我展示登录过程的流程和方式,这给我带来了很多麻烦。究竟是什么堵塞了它。

因此,如果您的第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

答案 1 :(得分:0)

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