ssh:连接到主机端口 22:使用主机名时连接超时

ssh:连接到主机端口 22:使用主机名时连接超时

我在家里安装了两个 Ubuntu 18.04 和 20.x,并尝试在它们之间进行 ssh,我可以通过内部 IP 连接,但不能通过主机名设置连接:

机器A:192.xx115

机器B:192.xx125

两个安装都运行了 ssh,并且我可以使用内部 IP 正常连接。

从机器 BI 想要使用主机名或 hostname.ddns.net 连接到机器 A

以下是我已设置的内容:

机器 A:

机器A> /etc/hosts

127.0.0.1    machineA.ddns.net machineA

192.x.x.115  machineA

机器A> /etc/主机名

machineA.ddns.net

机器A> /etc/resolv.conf

nameserver 127.0.0.53
options edns0 trust-ad
search hsd1.xx.isp.net

机器B:

machineB> #即machineA成功ssh [email protected]

机器B> ssh -vvv[电子邮件保护] 给出

Connecting to machineA.ddns.net [ISP assigned address] port 22.

ssh: connect to host machineA.ddns.net port 22: Connection timed out

机器B> ssh -vvv 用户@机器A

ssh: Could not resolve hostname machineA: Name or service not known

SSH_from_external_to_machineA 成功

远程控制[电子邮件保护] # 成功

在机器A上尝试的命令:

机器A>sudo service ssh status # gives active(running)

机器A>sudo netstat -alnp | grep :22 # shows :22 with LISTEN

机器A>sudo iptables -A INPUT -p tcp --dport ssh -j ACCEPT

  1. 我觉得 ISP 没有阻止 ssh,因为我可以使用 machineA.ddns.net 从外部连接

  2. 因为我可以使用 IP 连接,所以路由器允许端口 22。

我觉得主机名没有正确解析,请检查并让我知道是否遗漏了任何其他步骤。

谢谢,

其他编辑:

machineB> ping machineA_Hostname 成功

machineB> nslookup machineA.ddns.net按照预期显示外部 IP

machineB> ssh machineA # 无法解析主机名:名称或服务未知

machineB> ssh machineA.ddns.net 尝试连接到 ping 报告的确切外部 IP 和“连接超时”

答案1

为了避免对内部 IP 地址进行硬编码,请在 Ubuntu 上设置 avahi-daemon,以便您可以ubuntu.local从主机操作系统访问主机名。

sudo apt-get install avahi-daemon avahi-discover avahi-utils libnss-mdns mdns-scan

答案2

你想要 ssh机器_B机器_A通过主机名, 正确的?

因此只需将 machine_B 的内部 IP 与所需名称(用于调用 machine_B)一起放入 machine_A 中即可

为了做到这一点,只需编辑machine_A的/etc/hosts并添加如下内容:

192.168.222.1 my_lovely_machine_B

现在如果你输入:

ssh user@my_lovely_machine_B

那应该可行!

如果您不想费心对内部 IP 地址进行硬编码并每次进行更改(因为 IP 地址可能会更改),您可以做两件事。

第一种方法:这种方法虽然困难,但很实用:您需要运行 DNS 服务(例如 BIND)才能获得所需的信息

第二种方法:简单但并不适合所有情况(对你来说还可以):编写一个 bash 脚本自动为 machine_B 设置静态 IP,并让它在每次启动时运行。这样,你就不需要担心 IP 变化,你的 machine_B 总是有相同的 IP。

相关内容