我有一个如下所示的 ssh 配置文件:
Host my.host.com
HostName my.host.com
User michael
Port 1234
如果我在命令行输入“ssh my.host.com”,它会使用正确的用户名和非标准端口正确连接到“my.host.com”。
主机的实际名称需要输入相当多的内容,因此我想到可以通过创建一个缩写名称的主机来节省大量的输入,因此我复制了上述工作部分并创建了一个较短的主机名:
Host m
HostName my.host.com
User michael
Port 1234
但是当我尝试连接时,出现错误:
ssh: Could not resolve hostname m: Name or service not known
我尝试过-v
并且没有得到有用的信息:
OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014 debug1: Reading configuration
data /root/.ssh/config debug1: Reading configuration data
/etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying
options for * ssh: Could not resolve hostname m: Name or service not
known
我尝试添加更多-v
s 来查看是否会提供更详细的输出,但没有显示其他信息。
我尝试使用-v
为其他主机设置的另一个别名运行,得到以下结果:
OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /root/.ssh/config
debug1: /root/.ssh/config line 11: Applying options for z
因此,似乎无论出于什么原因,ssh 都会忽略主机“m”的选项,但不会忽略主机“z”的选项。主机之间唯一可能相关的区别是“z”位于 Internet 的其他地方,而“m”位于 LAN 上,这是怎么回事?
我的第一个想法是也许我必须重新启动某些东西才能使更改生效,但这是 ssh,而不是 sshd。
答案1
问题解决了——正如我们在问题下的评论中所讨论的那样,m
别名根本不起作用的原因是编辑的文件和ssh
命令实际使用的文件不一致。
编辑:具体来说,请确保您使用的是当前用户拥有的 .ssh 目录下的配置文件。如果您将 HOME 设置为其他值,则编辑的~/.ssh/config
文件将是错误的。