我有一台自己的 Linux 服务器(ngnix、gunicorn、python flask),通过 dyndns 将其连接到我的 frtizbox 以及我的域和 dyndns 提供商(selfhost.de)。现在我想使用 ssh 连接到这台 Linux 服务器,如下所示:
ssh [email protected]
这意味着与 IP 地址无关,因为在电源故障或玻璃料盒重启的情况下,IP 地址会发生变化。
我看到有这样的服务 dd客户端。我设置了此服务,但我不知道现在如何使用上述命令进行连接:我仍然收到此错误:
ssh: connect to host domain_name.de port 22: No route to host
操作系统:
- Ubuntu 服务器:20.04 LTS
- 我想要访问服务器的 Ubuntu 笔记本电脑有:18.04 LTS
细节: 如果我的两台机器都在本地网络中,我已经可以通过以下方式访问:
ssh server_name@192.....
接下来我测试了两台机器是否具有相同的本地网络,是否通过公共 IP 进行连接:
ssh [email protected]...... --> Error no route to host
然后我在我的 fritzbox 上允许端口 22,它就成功了!
该问题是否与两台机器具有相同的公网 IP 有关?
接下来我测试将我的笔记本电脑连接到其他网络(手机热点)
ssh [email protected]...... --> Error no route to host
最后我想用域名实现上述功能....
然后我在我的 fritzbox 上允许端口 22,它就成功了!
我现在也停止了我的 ddclient: sudo service ddclient stop
我仍然可以使用
ssh [email protected]
我到底需要 ddclient 吗?
答案1
该问题是否与两台机器具有相同的公网 IP 有关?
不,这是因为您的公共 IP 指向您的 Fritzbox 而不是机器。因此,您需要告诉 Fritzbox 如何处理请求。这就是您使用“端口转发”的原因。然后,Fritzbox 会将该端口的流量转发到本地机器。您还可以告诉 Fritzbox 转发全部流量到一台机器,但如果您不是 100% 确定自己在做什么,请不要这样做。
我仍然可以使用
ssh [email protected]
我到底需要 ddclient 吗?
它有效是因为你的 IP 没有改变然而。一旦更改,domainname.de
仍将指向旧的 IP 地址,这将不起作用。您需要告诉服务提供商您的新 IP 地址,这就是它ddclient
自动为您执行的操作。
非问题注释:
请注意,路由器中的端口转发会带来很大的风险。您的机器将要受到攻击(这是正常的),你应该知道如何应对:
- 保持软件更新(始终!)并跟踪相关的安全公告
- 强密码或更好的密码:仅允许基于密钥的身份验证
- 拒绝 root 登录
- 使用标准端口以外的端口
- 使用
fail2ban
- 在机器上使用软件防火墙
- 使用端口敲击
你不一定需要全部立刻就做到这一点……