Bow*_*ark 6 dual-boot ssh openssh
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 地址相关联。
您的问题是主机密钥就是这样,它们是主机的密钥。每个主机实际上应该只有一个。当然有多种,因为有多种类型的密钥,但我会避免依赖密钥类型来为单个主机提供多个可接受的密钥。
\n我的第一个建议是,如果您真的想在客户端执行此操作,请仔细考虑。您可以将这两个操作系统视为同一主机,只需将主机密钥从一个操作系统复制到另一个操作系统即可。
\n如果/etc/ssh/ssh_host*从 OpenSSH 复制,您可以在其他操作系统上使用它们。尽管它们可能需要一些重新格式化,具体取决于您运行的 SSH 服务器。
\n\n请问为什么您排除了服务器端解决方案?最简单的方法不是尝试让两个操作系统使用相同的主机密钥吗?\xe2\x80\x93 菲利普·库林
\n@PhilipCouling 部分是为了易于使用:操作系统之一是 Windows。部分原因是不要将密钥从主机转移到另一个主机,这种做法有时不被鼓励。但主要原因是:如果可能的话,我希望在 ssh 客户端配置中获得一定程度的灵活性。\xe2\x80\x93 弓公园
\n
我认为您正在寻找一种将两个操作系统视为不同主机的方法,即使它们共享 IP 和端口号。
\n也许最可靠的方法是为每个操作系统设置主机特定配置。编辑(或创建)~/.ssh/config以添加:
Host windows.dualbootbox\n Hostname 192.168.10.20\n UserKnownHostsFile ~/.ssh/windows.dualbootbox.known_hosts\n\nHost ubuntu.dualbootbox\n Hostname 192.168.10.20\n UserKnownHostsFile ~/.ssh/ubuntu.dualbootbox.known_hosts\nRun Code Online (Sandbox Code Playgroud)\n您无需指定Hostname每个地址是否Host已解析为 IP。看man ssh_config参考资料 了解更多配置选项。
通过上述配置,您可以:
\nssh user@windows.dualbootbox\nssh user@ubuntu.dualbootbox\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1848 次 |
| 最近记录: |