为了澄清起见,这是问:
我有一台运行 ubuntu 的家用电脑。我希望能够从远程位置(例如带笔记本电脑的咖啡馆)通过 ssh 进入它。
到目前为止,我的尝试都没有成功:我设置了路由器,将端口 22 转发到我家用电脑的 IP 地址上的端口 22。当我使用 ssh@ 时,连接被拒绝。
我找不到有关如何执行此操作的在线综合指南。我知道这涉及设置一些内容,例如家用机器上的静态 IP 地址以及路由器端口转发。除此之外,还有很多问题,例如如何具体设置静态 IP(似乎有几种方法)、使用什么 IP 地址、在路由器上转发什么端口、在家用 ubuntu 机器上选择转发到哪个端口、通过该特定端口登录时的 ssh 详细信息等。
答案1
现在您已验证该服务可以在本地网络上运行,您就可以将端口从路由器转发到所需的计算机了。
你可以得到 (验证你的计算机的 IP) 计算机的本地 IP 地址,方法是运行以下命令。输出将类似于此示例,我将在此步骤中使用它作为示例。
$ hostname -I
192.168.1.5
您想将ssh
路由器配置中的端口(端口 22)转发到服务器的 IP 地址。
步骤:
- 通过从本地网络测试来确保 ssh 正常工作。
- 验证本地 IP 地址您的计算机的 IP 地址。这将是
- 验证公共 IP 地址你的路由器(从外面看起来是怎样的)。
- 将端口 22(tcp 协议)转发
ssh
到您计算机的本地 IP 地址。
通过这些步骤,您现在就可以从网络外部使用路由器的公共 IP 登录到您的计算机。
一些方便的细节
您可以设置一个 DNS 来指向您的路由器的公共 IP 地址,这样您就可以方便地使用名称登录,而不必记住 IP 地址。
静态 IP 与动态 IP
大多数家庭互联网服务提供商都会对静态 IP 地址收取费用。因此,您很可能拥有动态 IP,并且该 IP 可能会不时发生变化。如果您拥有动态 IP 并且无法远程连接,则必须检查以确保您尝试连接到路由器的正确 IP 地址。
如果没有某种类型的良心配置和意图,静态 IP 是不会改变的。
如果你有动态 IP,则可以使用ddns 服务(动态域名系统)分配一个名称,当 IP 发生变化时,该名称将自动更改为指向新的动态 IP。大多数路由器都具有一项功能,可将其配置为使用您的 DDNS 服务。
故障排除替代方案
互联网服务提供商通常会封锁许多常用端口。这通常是为了保护用户免受黑客和漏洞攻击。有时是为了阻止用户运行某些服务并尽量减少带宽。
无论出于何种目的,您都必须为 ssh 服务器使用备用端口。这可以通过添加或更改 ssh 服务器将监听的端口来实现。您可以通过编辑文件来实现这一点/etc/ssh/sshd_config
。
Ubuntu 使用端口 1022作为远程执行版本升级时的替代方案。如果您丢失连接,这可以为您提供登录恢复会话的方法。我在下面的示例中使用了相同的端口。您可以将其设置为任何当前未用于其他用途的端口。
更改服务器上的监听端口后,请务必将路由器中的端口转发配置更改为 ssh 服务器正在监听的端口。另外,请务必在本地测试新的端口配置。
更改自:
#打包生成配置文件 # 有关详细信息,请参阅 sshd_config(5) 手册页 # 我们监听哪些端口、IP 和协议 端口 22 # 使用这些选项来限制 sshd 将绑定到哪些接口/协议
改成:
#打包生成配置文件 # 有关详细信息,请参阅 sshd_config(5) 手册页 # 我们监听哪些端口、IP 和协议 端口 22 端口 1022 # 使用这些选项来限制 sshd 将绑定到哪些接口/协议
更改 sshd 服务配置后,使用以下命令重新启动 sshd 服务:
$ sudo systemctl restart sshd
通过 ssh 进入备用端口的命令:
(可以从任何计算机(包括服务器本身)执行此命令,以进行测试和登录端口。)
$ ssh -p 1022 [email protected]
一个用于测试港口外部景观的网站
您可以通过连接到此站点来验证您的设置:
http://www.canyouseeme.org。