我正在运行一个 Docker 容器,它期望在端口 22 上有 SSH 流量。主机也期望 SSH 流量,但在端口 2222 上。
尽管在端口 2222 上运行 SSH 没有任何问题,但我的 SSH 客户端却抱怨说,在端口 22 上运行 SSH 时,远程主机标识已经发生了变化。这是有道理的,因为 docker 容器与主机具有不同的标识。
有办法解决这个问题吗?
答案1
最简单的(不确定是否最干净或最好的)方法是将主机密钥也复制到容器中。
答案2
正如手册页所示sshd(8)
,known_hosts 文件具有这样的语法:
主机名是一个以逗号分隔的模式列表(“*”和“?”用作通配符);每个模式依次与规范主机名(在验证客户端时)或用户提供的名称(在验证服务器时)进行匹配。模式前面还可以加上“!”以表示否定:如果主机名与否定模式匹配,则不会接受(该行),即使它与该行上的另一个模式匹配。主机名或地址可以选择括在“[”和“]”括号内,然后跟上“:”和非标准端口号。
尤其是最后一句提到,您还可以为主机名指定非标准端口,以确保它用于正确的端口。以前的解决方案更加晦涩难懂...
因此,编辑~/.ssh/known_hosts
文件即可获得此结果。