通过具有公共 IP 的*不同*服务器访问具有私有 IP 的远程服务器

通过具有公共 IP 的*不同*服务器访问具有私有 IP 的远程服务器

我们假设有以下主机:

localhost : my laptop 
remoteserver : a server with a public IP which runs a SSH server on port 22. (remoteserver ip for example 194.152.16.111) 
private.remoteserver ssh on port 2255: a server with a private IP which is only accessible from remoteserver. (private.remoteserver ip for example 194.152.16.222

我想创建 ssh 隧道,这样我就可以通过远程服务器从我的笔记本电脑连接到 private.remoteserver

我试过这个

ssh -L 2255:194.152.16.222:2255 [email protected]

and then from laptop

ssh localhost:2255

但不起作用。我做错了什么?

答案1

最简单的实现所谓的“多跳 ssh”并从主机 A 通过主机 B 连接到主机 C 的方法是使用较新 ssh 版本中提供的ProxyJump命令开关:-J

 ssh -J userB@hostB:portB userC@hostC:portC

仅当使用不同于默认 ssh 端口 22 的端口号时才需要端口号。

或者使用 scp

 scp -o 'ProxyJump userB@hostB' localfile userC@hostC:/remote/path/

答案2

您可以将其放入您的 ~/.ssh/config 中

Host <internal.ips>
    Proxycommand ssh -C -W %h:%p -q -A <public server ip>

只需确保 internal.ips 可以从公共服务器访问。

相关内容