Answers:
我发现了一种对我来说似乎更好的方法:
ssh-keygen -y -f <private key file>
该命令将输出给定私钥的公钥,因此只需将输出与每个* .pub文件进行比较。
id_rsa.pub.blahhost
文件,我不知道哪个文件与单独的id_rsa
私钥匹配,我正在设置无密码的scp,以便可以从旧网站上迁移。制作新的密钥对不是一种选择。我的键设置得很好,不会弄乱它。
输入以下命令,检查$ USER / .ssh目录中的私钥和公钥是匹配集(相同)还是不是匹配集(不同)。cut命令可防止比较公共密钥行尾的注释,仅允许比较密钥。
ssh-keygen -y -f ~/.ssh/id_rsa | diff -s - <(cut -d ' ' -f 1,2 ~/.ssh/id_rsa.pub)
输出看起来像这些行之一。
Files - and /dev/fd/63 are identical
Files - and /dev/fd/63 differ
我编写了一个Shell脚本,用户可使用该脚本检查〜/ .ssh / files和匹配键集的文件权限。它通过设置ssh的用户事件解决了我的挑战。它可能会帮助您。 https://github.com/BradleyA/docker-security-infrastructure/tree/master/ssh
注意:我以前的答案(2018年3月)不再适用于最新版本的openssh。以前的答案:diff -qs <(ssh-keygen -yf〜/ .ssh / id_rsa)<(cut -d''-f 1,2〜/ .ssh / id_rsa.pub)
如果没有返回任何内容,则它们匹配:
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
ssh -i $HOME/.ssh/id_rsa localhost