ssh
客户端(默认情况下,至少在Ubuntu 18.04和FreeBSD 12中至少是默认设置)总是检查服务器的密钥指纹是否在known_hosts
文件中。
我在局域网中有一台具有双启动功能的主机;两个操作系统都使用相同的静态IP。我想连接ssh
到他们两个,而不会遇到错误。
这显然违反了对以下内容执行的检查known_hosts
:如果我接受一个指纹,它将与主机IP相关;切换操作系统时,指纹会更改,而IP相同,因此我需要手动将其删除,known_hosts
然后才能再次连接。我希望在考虑该IP时可以接受一个指纹或另一个指纹。
有客户端解决方案可以解决此问题吗?
我正在使用OpenSSH_7.8p1, OpenSSL 1.1.1a-freebsd 20 Nov 2018
和OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017
。
注意:我不希望对服务器的指纹进行“不检查”。我只是想知道是否有可能将两个替代指纹(而不仅仅是一个)与服务器的IP地址相关联。
您的问题是主机密钥就是这样,它们是主机的密钥。每个主机实际上只应该有一个。当然有几种,因为有几种类型的密钥,但是我会避免依赖密钥类型为单个主机提供多个可接受的密钥。
我的第一个建议是,您是否认真考虑是否真的要在客户端执行此操作。您可以将这两个OS视为同一主机,只需将主机密钥从一个复制到另一个即可。
如果/etc/ssh/ssh_host*
从OpenSSH复制,则可以在其他操作系统上使用它们。尽管它们可能需要重新格式化,具体取决于您运行的SSH服务器。
请问您为什么排除服务器端解决方案?难道不是最简单的方法就是尝试使两个OS使用相同的主机密钥吗?–菲利普·库林
@PhilipCouling部分出于易于使用:Windows是其中一个操作系统。部分原因是不要将密钥从主机转移到另一个主机,这有时是一种不鼓励的做法。但是主要原因是:如果可能,我希望在ssh客户端配置中获得一定程度的灵活性。– BowPark
我认为您正在寻找的是一种将两个OS视为不同主机的方法,即使它们共享IP和端口号也是如此。
也许最可靠的方法是为每个OS设置主机特定的配置。编辑(或创建)~/.ssh/config
以添加:
Host windows.dualbootbox
Hostname 192.168.10.20
UserKnownHostsFile ~/.ssh/windows.dualbootbox.known_hosts
Host ubuntu.dualbootbox
Hostname 192.168.10.20
UserKnownHostsFile ~/.ssh/ubuntu.dualbootbox.known_hosts
您无需指定Hostname
每个Host
地址是否已经解析为IP。请参阅man ssh_config
以获取更多配置选项。
使用以上配置,您可以:
ssh [email protected]
ssh [email protected]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句