通过 SSH 连接到服务器(没有外部 IP)

通过 SSH 连接到服务器(没有外部 IP)

我有一台小型 PC 设置为 Ubuntu 服务器,并且我已配置 ssh-server 以便能够通过 ssh 连接到它。问题从这里开始,因为我的 ISP 没有提供外部 IP(所有设备都有 1 个外部 IP),而且我无法更改它。因此,根据我所做的研究,我创建了一个免费 AWS 实例,并在那里创建了 OpenVPN。

所以我有一个像这样的工作:

  1. PC1
  2. 具有托管 OpenVPN 服务器的外部 IP 的 AWS 实例
  3. PC2

PC1 和 PC2 连接到 AWS 上的 OpenVPN 服务器,然后我可以使用 PC2 通过 SSH 连接到 PC1。我可以
使用哪些选项(如果有)来使用 PC2 通过 SSH 连接到 PC1,而无需 PC2 连接到 OpenVPN,或者是否有一些选项可以仅连接到 OpenVPN 进行 ssh 连接,其余流量不使用 openVPN?

答案1

我对 OpenVPN 一无所知。我使用的是 SSH 隧道。基本操作非常简单,但完整的设置可能有些困难。话虽如此,您可以让任意数量的计算机建立隧道(只要您不同时尝试使用所有隧道,速度就会很快)。

ssh -fNR 2222:localhost:22 aws-computer

aws-computer是我的文件中的名称~/.ssh/config,它定义了要使用的密钥和用户名/密码。

现在当我在我的 ssh 上时aws-computer我可以使用:

ssh -p 2222 pc1

并且它的连接就像我有一个单一/正常的 SSH 连接一样。

您可以根据需要多次重复隧道传输,这意味着,最后您可以ssh pc2从 pc1 传输一次,ssh pc1从 pc2 传输一次。只需进行一些设置即可让一切正常运行。

Host aws-computer
  HostName <ip-address-or-domain-name>
  User name
  Port 22
  PasswordAuthentication no
  HostbasedAuthentication no
  IdentitiesOnly yes
  IdentityFile /home/name/.ssh/tunnel_keys/tunnel_rsa

注意:我使用子目录来存放额外的键(除了我通常使用的键之外的键),这样我可以有任意数量

主要的限制是您需要使用不同的端口(即您不能在一台计算机上使用一个端口运行两种服务)。另一个限制是其中一台计算机必须具有静态 IP 地址,或者您需要提供记录 IP 的域名服务器。这样的 DNS 不太安全,因为其他人可能会获得“您的”旧 IP,并且您的系统可能会尝试通过第三方计算机进行连接。

相关内容