机器:
- 让我们呼叫我的机器的MacBook。
- 我在互联网上有一个服务器。叫它服务器。
- 我在其他地方有一台 Mac Mini,我可以通过 iChat 屏幕共享来访问它。我们称之为小型的。
可达性:
- 服务器都看不到的MacBook也不小型的。
- 的MacBook可以看到服务器但不是小型的。
- 小型的可以看到服务器, 但不是的MacBook。
屏幕共享很慢。我想要一个 SSH 连接来小型的。由于路由器、NAT等原因,无法进行直接连接。
我想要做的是连接两者的MacBook和小型的到服务器通过 SSH,创建适当的隧道,以便从的MacBook我可以运行ssh …
命令来连接到小型的通过隧道连接服务器。
所以我的问题是,我必须在哪些机器上运行哪些命令才能使其工作?
为了简单起见,请使用服务器,小型的,的MacBook作为答案中的主机名。
答案1
只需要一个 ssh 隧道。从 mini 开始:
ssh -N -R 0.0.0.0:8022:localhost:22 serverUser@server
现在你可以从 macbook 连接到服务器ssh -p 8022 miniUser@server
请确保已在服务器的中GatewayPorts
设置为。yes
/etc/ssh/sshd_config
此外,您可能希望在 ~/.ssh/config 中定义一些内容:
Host gate.mini
HostName server
Port 8022
HostKeyAlias mini
这使得您可以做更连贯的事情,同时不受服务器指纹不匹配的困扰。ssh [email protected]
答案2
在 Mac Mini 上执行以下操作:
ssh -R 1234:localhost:22 serverUser@server
这会将服务器端口 1234 的连接转发到 Mac Mini 上的端口 22。
然后,在 MacBook 上执行以下操作:
ssh -L 1235:localhost:1234 serverUser@server
这会将 MacBook 上端口 1235 的连接转发到服务器上的端口 1234(然后通过上述命令转发到 Mac Mini)。
最后,为了获取实际连接,请在 MacBook 上执行以下操作:
ssh -p 1235 miniUser@localhost
它连接到 MacBook 上的端口 1235,然后转发到服务器上的端口 1234,再转发到 Mac Mini 上的端口 22。端口 1234 和 1235 可以设置为或多或少你喜欢什么就用什么 - 可以是相同的(我使用了不同的数字以使解释更清楚)。同样,如果 Mac Mini 上的 SSH 正在监听不同的端口,则应该更改端口 22。
答案3
您可以通过 ssh 会话传输任何命令。这意味着您也可以通过 ssh 传输 ssh 命令。
这看起来像这样:
ssh -t [email protected] ssh [email protected]
这将打开 ssh 会话服务器然后立即打开第二个 ssh 会话小型的。使用 ssh 隧道,这应该可以顺利完成的MacBook机器。至少考虑到小型的可从服务器。
要求:
- 开启 ssh的MacBook
- ssh 服务器和 ssh 客户端服务器
- ssh 服务器和 ssh 客户端小型的
创建一个别名可能很不错,这样您就不必每次连接时都输入这个别名。另外,考虑一下无密码连接服务器因此您不必为此隧道连接输入2个密码。