微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – 将已知密钥/指纹添加到known_hosts的好方法是什么

有很多类似于这个问题的答案,但我似乎找不到一个有明确答案的问题.它们都至少抓取一次公钥,完全忽略密钥,或直接写入kNown_hosts文件(暗示没有哈希)

我有服务器的指纹和/或公钥.我想要一个shell命令将它添加到客户端的kNown_hosts文件中.这必须使用任何配置(散列/无哈希)

此外,该脚本将从此服务器执行git pull,因此我不知道此时提供端口信息是否相关.请告诉我它是不是.

谢谢.如果已经回答了这个问题并且我以某种方式错过了它,请随时指出我正确的方向.

PS – 额外信息:我询问端口的原因之一是因为我做了以下事情没有成功(我知道这是从主机获取密钥,我宁愿不这样做):

ssh-keygen -R my.awesome.host # hostname
ssh-keygen -R 1.2.3.4         # IP
ssh-keygen -R my.awesome.host,1.2.3.4
ssh-keyscan -H my.awesome.host,1.2.3.4 >> ~/.ssh/kNown_hosts
ssh-keyscan -H 1.2.3.4 >> ~/.ssh/kNown_hosts
ssh-keyscan -H my.awesome.host >> ~/.ssh/kNown_hosts

但是当我git clone(通过ssh)时,我遇到了一个响亮的声音:

The authenticity of host '[my.awesome.host]:7999 ([1.2.3.4]:7999)' can't be established.
RSA key fingerprint is fi:ger:pr:in:ti:nf:or:ma:ti:on
Are you sure you want to continue connecting (yes/no)?

然而,ssh user@my.awesome.host没有提示我指纹.

解决方法

拥有公钥,您只需将密钥写入kNown_hosts文件并可能重新哈希,如果您需要:
HOSTNAME=my.awesome.host
PORT=7999
PUBKEY="ssh-rsa AAAAB3NzaC1yc2EAAAAD...E"
KNowN_HOSTS="~/.ssh/kNown_hosts"
echo "[$HOSTNAME]:$PORT $PUBKEY" >> $KNowN_HOSTS
# re-hash,if needed:
ssh -G -p $PORT $HOSTNAME | grep "hashkNownhosts yes" && \
  ssh-keygen -H -f $KNowN_HOSTS

ssh的-G开关相当新.如果它不起作用,则必须确定是否以不同方式散列已知主机(或者无论条件如何都这样做).

使用已散列的主机散列文件不会触及这些行.

我没有尝试上面的脚本,但你应该能够从中得到重点(并修复拼写错误,如果有的话).

原文地址:https://www.jb51.cc/linux/399666.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐