使用 proxycommand 无法进行 ssh 无密码登录

使用 proxycommand 无法进行 ssh 无密码登录

我有 2 台服务器。我只能使用服务器 A 连接到服务器 B。在我的~/.ssh/config文件中:

Host serverB
  Hostname serverb
  User root
  ForwardAgent yes
  Port 22
  ProxyCommand ssh user@serverA nc %h %p

当我登录到 serverA 并键入时,ssh root@serverB它会在不询问密码的情况下进行连接,但是当我ssh ServerB在本地计算机上键入时,它会询问 ServerB 的密码。为什么?

答案1

ProxyCommand只给出一个隧道来通过管道连接外部ssh

当您ssh serverB从执行此操作时serverA,您可能正在使用 上帐户的密钥serverA

当您从客户端计算机执行此操作时,您通过启动的命令ssh serverB进行连接的事实不会神奇地让您访问 serverA 上的密钥。ncserverA

您需要将 serverA 的密钥添加到您的客户端代理。

例如:

ssh-add <(ssh serverA 'cat .ssh/id_rsa')

在 serverA 上添加密钥.ssh/id_rsa(上面的 ksh93/bash/zsh 语法)。

答案2

一些事情:

  1. 您有多确定它要求 serverB 的密码?它可能会要求 serverA
  2. 您不需要转发您的代理 - 在这种情况下您将直接与 serverB 握手 - 它不会是 serverA 与 serverB 握手
  3. 您不需要将服务器 A 中的密钥添加到您的客户端 - 同样,您将直接与服务器 B 对话 - 只需通过服务器 A - 所以看不到这样做的意义 - 而且这也是一个安全隐患。
  4. 当您ssh serverA- 它会要求输入密码吗? 如果是这样 - 您是否考虑过在 serverA 的 authorized_hosts 上安装您的公钥ssh-copy-id serverA
  5. 使用 -vvv 和 Pastebin/filebin/post 输出运行

答案3

我没有完整的答案,只是需要检查一些事情。验证两个机器上 unix 用户的主目录的权限。验证两个框中 $HOME、$HOME/.ssh 以及 .ssh 下所有文件的目录权限。检查 ssh 的版本。还比较两个盒子的 ssh 配置文件。

但这种情况过去在我身上发生过很多次。是这两件事造成的?
1.目录权限不正确。 2. $HOME/.ssh/ 中的服务器密钥错误

相关内容