我需要通过代理跳转建立到远程服务器的连接。我正在尝试使用 -J 标志来做到这一点。据我了解,语法如下:
ssh -J A B
Run Code Online (Sandbox Code Playgroud)
但我需要对两个连接使用密钥文件。所以我尝试过这个:
ssh -J -i /path/proxy.pem user@proxy_host -i /path/target.pem user@target_host
Run Code Online (Sandbox Code Playgroud)
显然它不起作用,我得到了
option requires an argument -- i
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-E log_file] [-e escape_char]
[-F configfile] [-I pkcs11] [-i identity_file]
[-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec]
[-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address]
[-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]]
[user@]hostname [command]
ssh_exchange_identification: Connection closed by remote host
Run Code Online (Sandbox Code Playgroud)
在这种情况下,在不编辑 ssh 设置的情况下,正确的内联语法是什么?在这种情况下,密钥存储在哪个服务器上没有区别。
use*_*686 11
\n\n据我了解,语法如下:
\nRun Code Online (Sandbox Code Playgroud)\nssh -J A B\n
是的,但这还不是故事的全部。-J不是一个独立的标志 \xe2\x80\x93 它并不只是让您在同一命令行中指定两组独立的连接选项,正如您尝试做的那样。
相反,该-J标志将中间主机的名称作为参数,因此就像-i <keyfile>总是在一起一样,-J <proxy>也必须保持在一起。
即使您使用此选项,整体 'ssh' 语法也不会更改 \xe2\x80\x93 ,仍然没有对哪些选项属于主机 A 和哪些属于主机 B 进行分组。如果您有两个 '-i'像这样的选项,SSH在建立两个连接时只会尝试两个密钥。
\n然而,后一部分应该不是问题,因为每个服务器只会表明它不接受该密钥,并且 SSH 将尝试另一个。所以以下应该有效:
\nssh -J user@proxy_host -i /path/proxy.pem -i /path/target.pem user@target_host\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\nRun Code Online (Sandbox Code Playgroud)\n但是,如果其中一台主机不喜欢尝试多个密钥的事实,则需要将 -J 转换为长格式的 ProxyCommand:
\nssh -o ProxyCommand="ssh -i /path/proxy.pem -W %h:%p user@proxy_host" -i /path/target.pem user@target_host\nRun Code Online (Sandbox Code Playgroud)\n\n
| 归档时间: |
|
| 查看次数: |
13336 次 |
| 最近记录: |