我有一个自己的 linux 服务器(ngnix、gunicorn、python flask)通过 dyndns 连接到我的 frtizbox 以及我的域和 dyndns 提供程序(selfhost.de)。现在我想像这样使用 ssh 连接到这个 linux 服务器:
ssh [email protected]
这意味着与 ip addr 无关,因为在电源故障或筛箱重启的情况下它会发生变化。
我看到有像 ddclient这样的服务。我设置了此服务,但我现在不知道如何使用上述命令进行连接:我仍然收到此错误:
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.....
接下来,我使用具有相同本地网络的两台机器进行了测试,以连接 publich 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 吗?
不,这是因为您的公共 IP 指向您的 Fritzbox,而不是机器。所以你需要告诉 Fritzbox 如何处理请求。这就是您使用“端口转发”的原因。然后,Fritzbox 将流量从该端口转发到本地机器。您也可以告诉 Fritzbox 将所有流量转发到一台机器,但如果您不能 100% 确定自己在做什么,请不要这样做。
它有效,因为您的 IP 尚未更改。一旦更改,
domainname.de
仍将指向旧的 IP 地址,该地址将无法正常工作。您需要告诉服务提供商您的新 IP 地址,这就是ddclient
自动为您做的事情。题外笔记:
请注意,路由器中的转发端口会带来很大的风险。你的机器会受到攻击(这是正常的),你应该知道如何处理它:
fail2ban
您不一定需要一次所有这些...