我正在尝试从 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 这hostname
是ip_address
。要在 Mac 上执行此操作,这页面会告诉您如何操作。基本上,您需要做的是sudo nano /private/etc/hosts
(sudo 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
无关。hostname
ip_address