SSH 代理命令错误

SSH 代理命令错误

我试图理解为什么 SSH proxycommand 不起作用。我在自定义位置有一个 SSH 配置文件,如下所示。

vagrant@ansible:~$ cat ~/.ssh/cml-config
Host mgmt-lxc
  HostName 10.17.238.146
  IdentityFile ~/.ssh/id_rsa
  User Rod

Host 10.255.0.*
  ProxyCommand ssh -W %h:%p mgmt-lxc
vagrant@ansible:~$

我可以通过 SSH 连接到跳转主机,然后从那里连接到另一个设备。

vagrant@ansible:~$ ssh -F ~/.ssh/cml-config mgmt-lxc
Rod@mgmt-8Fe5bN$ ssh [email protected]
Warning: Permanently added '10.255.0.47' (RSA) to the list of known hosts.

            ,,,,,
            /'''\
           ( o o )
      -oOOO--(_)--OOOo-------------------------------------------
       Router: Core-1
                      Secured system for authorized users only.
       .oooO          Unauthorized access is strictly prohibited.
        (   )   Oooo. All activities may be logged and monitored.
      ---\ (----(   )--------------------------------------------
          \_)    ) /
                (_/
Password:

但是,当我尝试使用自定义 SSH 密钥直接 SSH 到 10.255.0.47 时,出现错误。

vagrant@ansible:~$ ssh -F ~/.ssh/cml-config [email protected]
ssh: Could not resolve hostname mgmt-lxc: Name or service not known
ssh_exchange_identification: Connection closed by remote host
vagrant@ansible:~$

我运行的是 Ubuntu Xenial64。

答案1

添加-F /the/path/to/.ssh/cml-config用作ssh -W的命令ProxyCommand(我不确定该~路径在这里是否有效,所以尝试一下,也许使用完整路径)。

因为否则您的ssh交互式命令将运行ssh -W ... mgmt-lxc,但它将没有配置文件可供读取,以发现这mgmt-lxc不是真正的名称解析,而是您在配置文件中使用的昵称。

或者添加mgmt-lxc/etc/hostsIPv4 地址或等效地址10.17.238.146

或者将所有内容放入.ssh/config其中,因为它是默认设置,并且会简化您的使用。

相关内容