我试图理解为什么 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/hosts
IPv4 地址或等效地址10.17.238.146
。
或者将所有内容放入.ssh/config
其中,因为它是默认设置,并且会简化您的使用。