【发布时间】:2017-06-13 19:38:28
【问题描述】:
我在 stackoverflow 的其他地方找到了这段代码:
if [ -z "`ssh-keygen -F ${wPCS_IP}`" ]; then
ssh-keyscan -p ${wPCS_PT} -H ${wPCS_IP} >> ~/.ssh/known_hosts
fi
我在使用代码时遇到了两个问题:
即使成功,此代码也会生成错误 ($?=1)。
如果我在添加 known_hosts 后再次运行 ssh-keygen -F ${wPCS_IP},它不会在 known_hosts 中找到密钥,即使它们是刚刚添加的。这是更大的问题。
本地机器是 Ubuntu Server 16.04 LTS,远程机器是 Ubuntu Server 14.04 LTS。
我的代码和我找到的代码示例之间的主要区别在于我使用了端口选项 -p。
另外,我注意到 known_hosts 文件没有按名称或 IP 地址列出机器。这与我的 Gentoo 笔记本电脑不同。
【问题讨论】:
-
尝试告诉
ssh-keygenknown_hosts文件在哪里。更好的方法是if ! ssh-keygen -F ${wPCS_IP} -f ~/.ssh/known_hosts > /dev/null 2>&1; then ssh-keyscan -p ${wPCS_PT} ${wPCS-IP} >> ~/.ssh/known_hosts; fi。 -
感谢您的回复。我完全按原样使用了您的命令,并且产生了相同的结果。它添加了 known_hosts 所需的行,但是当再次运行时,它不会检测到 known_hosts 文件中的主机并再次生成它们。
-
在 Ubuntu 16.04 服务器上,known_hosts 文件列出了远程机器的端口号。我想知道是否需要以某种方式指定端口才能使 ssh-keygen -F 工作?
标签: openssh ssh-keygen