3

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

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

但是,当我 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
4

2 回答 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
于 2013-02-04T17:41:32.533 回答
0

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

于 2013-02-04T17:51:37.990 回答