使用外部 IP SSH 到本地 PC

使用外部 IP SSH 到本地 PC

我有 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。

答案1

如何使用外部 IP 进行 ssh(两者相同?

你不能;你有外部IP,正如你所说,并且你有端口 22。您的路由器无法知道您指的是哪一台电脑。

你可以做两件事:

  1. 将两个不同的外部端口转发到 PC1:22 和 PC2:22,例如端口 2211 和 2222。
  2. 在路由器上设置一个 SSH 服务器并将其用作“跳转主机”(请参阅-J​​中的选项man ssh);然后你可以。ssh -J externalIP [email protected]

如果 PC1 和 PC2 位于不同的路由器后面,该过程是否会有所不同?

是的,因为它们有不同的公共 IP。

答案2

感谢收到的评论以及对这些指南的进一步研究,我得出以下结论:

如何使用外部 IP(两者相同)进行 ssh?

这涉及几个步骤,有些是强制性的,有些是方便的。

  1. 强制的。配置转发端口在路由器中。使用以下参数添加端口转发服务(这因路由器而异):

    • 自定义名称:例如,SSH端口23
    • 服务类型:TCP/UDP(通常从菜单中选择)
    • 内部端口:PC2 中的端口号(监听连接),例如 22(默认)。
    • 起始/结束端口ssh: PC(客户端)中命令中使用的端口号。到目前为止,我只能成功地对两者使用相同的值,例如 23。
    • 服务器IPv4:PC2的本地IP,例如192.168.0.30
  2. 强制的。通过以下任一方式连接

    [user@PC1]$ ssh user@<External IP> -p 23
    [user@PC1]$ ssh ssh://user@<External IP>:23
    
  3. 选修的。设置动态 DNS,因此不需要知道<External IP>.

  4. 选修的。为PC2设置固定IP,这样端口转发服务就不会错过目标。

笔记:

  1. 像往常一样,人们可以设置一个不同的内部端口,例如 PC2 中的 5901。检查/etc/ssh/sshd_config, ufw, 等增加安全措施可以考虑。

    • /etc/ssh/sshd_config使用 line 进行编辑Port 5901,而不是默认的 commented #Port 5901
    • 设置防火墙规则$ sudo ufw allow 5901/tcp
    • 重新启动$ sudo service ssh restart
    • 改变内部端口在路由器端口转发。
  2. 通过设置相应的设置,人们可能可以 ssh 到同一路由器后面的多台 PC转发端口服务。

如果 PC1 和 PC2 位于不同的路由器后面,该过程是否会有所不同?

我还没有尝试过,但我怀疑它是完全相同的。使用时[user@PC1]$ ssh user@<External IP> -p 23,我认为我的路由器不知道(或关心)我正在从实际上通过自身连接到互联网的 PC1 进行 ssh'ing。

相关内容