我需要连接到ssh
只能通过前门服务器“B”访问的计算机“C”。我可以通过ProxyCommand
配置文件中的设置或以下方式实现此目的:
ssh -t user@B ssh user@C
在计算机“C”中,X11 转发是在,但在服务器“B”上它是关闭的,而且我不是管理员/root。
有没有办法通过 X11 转发将“A”连接到“C”(即使“B”已关闭)?
答案1
ssh 隧道可以通过提供从您的计算机到服务器 C 的“直接”路由来解决这个问题 - 但您需要能够登录到服务器 B...
user@serverA:~/ $ ssh -L2222:serverC:22 user@serverB
正常登录,打开一个新终端并
user@serverA:~/ $ ssh -p 2222 serverCusername@localhost
当你连接到本地主机(即服务器 A)上的端口 2222 时,你的连接将通过 SSH 连接到服务器 B,此时它会在服务器 B 上打开一个新的随机高端口,并作为新连接(源自服务器 B)进行连接,并尝试连接到服务器 C
在第一个 ssh 命令中,当你引用 serverC 时,使用 serverB 认为/可以解析/可以连接的任何名称/ip
答案2
ProxyJump
显然,您可以使用此方法使用代理进行连接,但首选方法是使用或切换进行设置-J
,这将导致从您的计算机而不是中间计算机对您进行身份验证,并且不会限制 SSH 提供的任何功能(端口转发、X11 转发等)。您可以使用以下方法实现相同的目的
ssh -J user@B user@C
也可以在配置文件中这样写
Host C
User user
ProxyJump user@B
或者如果你有旧版本的 OpenSSH,请使用ProxyCommand
:
Host C
User user
ProxyCommand ssh -W %H:%p user@B
然后连接ssh -Y C