我有 PC1 和 PC2,都在 Ubuntu 下,有活动的 SSH 服务器,在同一个路由器后面。为了清楚起见,我将使用不同的 bash 提示。我可以使用本地 IP 从 PC1 SSH 到 PC2。
[user@PC1]$ ssh [email protected]
/user@PC2/$ logout
Connection to PC2 closed.
[user@PC1]$ ssh [email protected]
/user@PC2/$ logout
Connection to PC2 closed.
[user@PC1]$ dig +short myip.opendns.com @resolver1.opendns.com
<External IP>
[user@PC1]$ ssh [email protected]
/user@PC2/$ dig +short myip.opendns.com @resolver1.opendns.com
<External IP>
如何使用外部 IP 进行 ssh(两者都相同?
[user@PC1]$ ssh user@<External IP> ... etc?
如果 PC1 和 PC2 在不同的路由器后面,该过程会与我所做的不同吗?
请注意,我打算学习如何做到这一点,因为我手头有两台 PC,并为将来我不在的场合准备 PC2。
你不能;正如您所说,您有一个外部 IP,并且您有一个端口 22。您的路由器无法知道您指的是哪一台 PC。
你可以做两件事:
-J
选项man ssh
);那么你可以ssh -J externalIP [email protected]
。是的,因为它们会有不同的公共 IP。
感谢收到的评论以及对这些指南的进一步研究,我得出以下结论:
如何使用外部 IP 进行 ssh(两者都相同)?
这涉及到几个步骤,有些是强制性的,有些是方便的。
强制性的。在路由器中配置端口转发。使用以下参数添加端口转发服务(这因路由器而异):
ssh
PC(客户端)命令中使用的端口号。到目前为止,我只能对两者使用相同的值,例如 23。192.168.0.30
.强制性的。通过任一连接
可选。设置动态 DNS,因此不需要知道
<External IP>
.可选。为PC2设置一个固定IP,使端口转发服务永远不会错过目标。
笔记:
可以像往常一样在 PC2 中设置不同的内部端口,例如 5901。检查
/etc/ssh/sshd_config
,ufw
等。可以考虑增加安全措施。/etc/ssh/sshd_config
使用 linePort 5901
而不是默认的 commented 进行编辑#Port 5901
。$ sudo ufw allow 5901/tcp
。$ sudo service ssh restart
。通过设置相应的端口转发服务,一个人可能会通过 ssh 连接到同一路由器后面的多台 PC。
如果 PC1 和 PC2 在不同的路由器后面,该过程会与我所做的不同吗?
我还没有尝试过,但我怀疑它完全一样。使用时
[user@PC1]$ ssh user@<External IP> -p 23
,我认为我的路由器不知道(或关心)我正在从实际上通过自身连接到互联网的 PC1 进行 ssh'ing。