因此,像往常一样,我有一个双启动的 Kubunutu / Windows 7 盒子(带有 cygwin),在本地 192.168.0.x 范围的某个静态 IP 上,并且我想从我的其他盒子通过 SSH 连接到它,无论它运行的是哪个系统。
问题是 - 我分别配置了 Kubuntu 和 Windows 7 部分,因此它们具有不同的 ssh 主机密钥(这是双启动设置所固有的),但也有用户名,并且IdentityFile
(这非常尴尬,当我选择 Windows 7 帐户名时我并没有多想)并且 ssh 会变得疯狂,因为每次我启动到不同的操作系统时,它都会认为有人在进行 MITM 攻击,因为同一 IP 的密钥发生了变化。
我能做什么呢?每次登录时删除~/.ssh/known_hosts
并注释掉不同部分都行得通,但我宁愿正确地解决它。~/.ssh/config
答案1
我要自己回答这个问题。
首先,我在 cygwin 中重命名了我的用户帐户,/etc/passwd
但没有更改 Windows 帐户名,然后/home/myoldname
转到/home/mynewname
。
然后我~/.ssh/authorized_keys
从 Ubuntu 复制到 cygwin,这样我就可以使用相同的身份密钥来访问两者。
然后我在~/.ssh/config
访问它们的机器上添加了以下几行:
Host 192.168.*.*
User mynewname
IdentityFile /path/to/identity.key
UserKnownHostsile /dev/null
StrictHostKeyChecking no
这样可以防止保存密钥文件,每次我登录时都会收到有点烦人的消息:
Warning: Permanently added '192.168.x.x.' (RSA) to the list of known hosts.
我可以忍受这一点。
答案2
如果有人想知道,您可以在 .ssh/known_hosts 中拥有两个具有相同 IP 地址的条目。如果其中一个条目有效,SSH 将接受主机。
您只需手动编辑 .ssh/known_hosts,或者您可以注释掉一个,使用另一个 ssh,然后取消注释。
例子:
- 您通过 ssh 进入 Kubuntu
- 在与你的 IP 地址对应的条目中添加一个破折号
- 您使用 ssh 进入 Windows
- 取消注释 .ssh/known_hosts 中 kubuntu 的条目
- 你可以 ssh 进入两个系统而无需任何警告或任何