无法通过 22 以外的主机名和端口通过 SSH 连接到 Ubuntu

无法通过 22 以外的主机名和端口通过 SSH 连接到 Ubuntu

我正在尝试从 OS X 通过 SSH 连接到 Ubuntu,并按照本页中的说明执行了相同的步骤(https://help.ubuntu.com/10.04/serverguide/openssh-server.html)。设置好之后,我尝试通过 的形式进行连接username@ip_address,然后成功了,我可以从 OS X Terminal 进入 Ubuntu(这次我使用了端口 22)。但是,当我尝试通过 的形式通过 SSH 连接到 Ubuntu 时username@hostname,却无法连接,并且ssh: Could not resolve hostname my_user_name: nodename nor servname provided, or not known出现错误。我还尝试通过更改 来通过端口 2222 进行连接/etc/ssh/sshd_config,然后也失败了,并出现错误debug1: connect to address my_ip_address port 22: Connection refused(这次我尝试通过 IP 地址进行连接)。

所以我认为后一个问题源于这样一个事实:我必须在 OS X 上做出某种修改,但不知道在哪里/如何做,也不知道这是否属实。

前一个问题更烦人,因为我不确定我是否能正确理解它。我使用了在 Ubuntu 终端上hostname运行得到的值hostname...但它是对的吗?当我在网上搜索这个问题时,我知道这是 DNS 问题...但不知道它是什么以及如何解决它...

谢谢。

答案1

在 OS X 上的终端中,使用 ssh 使用本地网络上的主机名建立远程连接时,添加后缀,.local使命令显示为 如果您需要覆盖默认端口 22,如使用端口 2222 的示例,请添加到命令中。您也可以在终端的“新远程连接...”对话框中进行设置(Command-Shift-K),以便于访问。ssh [email protected]-p 2222

答案2

当你运行 时ssh username@hostname,你连接的计算机(你的 Mac OS)不知道这个 的 IP hostname,所以它会告诉你ssh: Could not resolve hostname。因此,你需要做的就是告诉你的 Mac 这hostnameip_address。要在 Mac 上执行此操作,页面会告诉您如何操作。基本上,您需要做的是sudo nano /private/etc/hostssudo nano /etc/hosts在 Mac OS X 10.7 及更高版本上),并在文件末尾添加一行,如下所示:

ip_address       hostname

使用您的 Ubuntu 机器的实际 IP 和主机名。完成后,按 Control+O,然后按 Enter,然后按 Control+X 保存并关闭文件。然后执行dscacheutil -flushcache以使更改生效。现在,当您执行时ssh username@hostname,它应该可以工作。

关于端口 2222:

你说得对,你必须在 Mac OS 上做一些修改……好吧,只需要多加几个字符。当你这样做时ssh username@hostname,后台实际发生的是ssh username@hostname -p22,因为端口 22 是默认的 SSH 端口。但是,如果你知道你尝试连接的机器正在使用不同的端口,你必须手动指定它。所以,既然你已经将 Ubuntu 上的端口更改为 2222,你就必须执行。这与使用或ssh username@hostname -p2222无关。hostnameip_address

相关内容