客户端和服务器上的公钥和私钥如何存储和关联?

use*_*994 0 ssh openssl

我试图匹配客户端和服务器上的公钥和私钥以及配置文件,但无法解决不匹配的问题。尽管不匹配,我还是可以在 ssh 上成功连接到服务器。这有点令人担忧。

我将准确显示存储在何处。

客户端:Mac 服务器:Ubuntu(托管在 AWS 上)

我本地 mac /Users/sm/.ssh 目录中的文件

ls -la 
Sanjays-iMac:.ssh sm$ ls -la
total 24
drwx------   5 sm  staff   160 26 Nov 21:29 .
drwxr-xr-x+ 59 sm  staff  1888 26 Nov 21:29 ..
-rw-------   1 sm  staff  1696 26 Nov 20:49 id_rsa
-rw-r--r--@  1 sm  staff   451 26 Nov 20:50 id_rsa.pub
-rw-r--r--   1 sm  staff  1151 26 Nov 21:08 known_hosts
Run Code Online (Sandbox Code Playgroud)

我的 ubuntu 服务器上的文件:

ubuntu@ip-172-31-30-19:~/.ssh$ ls -la
total 12
drwx------ 2 ubuntu ubuntu 4096 Nov 26 14:37 .
drwxr-xr-x 8 ubuntu ubuntu 4096 Oct 30 18:02 ..
-rw------- 1 ubuntu ubuntu  391 May 25  2018 authorized_keys
Run Code Online (Sandbox Code Playgroud)

Ubuntu 上的当前工作目录:

ubuntu@ip-172-31-30-19:~/.ssh$ pwd
/home/ubuntu/.ssh
Run Code Online (Sandbox Code Playgroud)

authorized_keys服务器上的文件内容:

ubuntu@ip-172-31-30-19:~/.ssh$ cat authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAA....0g1bMv+p11K8MDH sanjaydev
Run Code Online (Sandbox Code Playgroud)

(出于隐私原因,内容被砍掉)

同样,我的本地服务器上有一个 known_hosts 文件:

Sanjays-iMac:.ssh sm$ cat known_hosts
54.251.104.13 ecdsa-sha2-nistp256 AAAAE2VjZHNhLX..Xsb/RBY=
52.76.85.25 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTI....hAkfLOc5g=
ec2-13-127-241-121.ap-south-1.compute.amazonaws.com,13.127.241.121 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXN....fu5Co4vYB0=
ec2-13-232-81-251.ap-south-1.compute.amazonaws.com,13.232.81.251 ecdsa-sha2-nistp256 AAAAE2VjZHNhL....nhNcRyfu5Co4vYB0=
35.154.168.85 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNo....NcRyfu5Co4vYB0=
13.126.30.42 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTIt....NcRyfu5Co4vYB0=
Run Code Online (Sandbox Code Playgroud)

(出于隐私原因,内容被砍掉)

现在我的问题是:

什么应该等于什么?

我认为客户端上的公钥应该与authorised_keys服务器文件中的条目之一匹配,服务器的公钥应该与known_hosts客户端文件中的条目之一匹配。

不幸的是,当我手动尝试匹配它们时,它们没有完全匹配(只有前几个字符匹配)。重要的是要注意 ssh 连接仍然可以通过,而不会-i <pemfile>在命令行上给出 。

dir*_*rkt 5

有两种密钥:服务器主机密钥,用于向用户标识服务器,以及用户密钥,用于登录。

服务器的私有主机密钥存储在/etc/ssh/. 相应的公共密钥被自动添加(后提示),以known_hosts~/.ssh所述客户端上。这些密钥的目的是检测中间人 (MITM) 攻击:如果ssh ...像往常一样键入时主机密钥突然更改,并且您知道服务器上没有任何更改,您应该怀疑。

通常您不必关心主机密钥,它们是自动管理的。

用户密钥允许在不输入密码的情况下进行身份验证。用户密钥在客户端进行管理:您已经创建了一个由公钥id_rsa.pub和私钥组成的密钥对id_rsa。它们存储在客户端上的~/.ssh. 不使用公钥,它只是存储在那里以在需要时可用。您必须~/.ssh/authorized_keys为服务器上的相应用户手动添加公钥。每行一个键;如果authorized_keys文件是空的,复制一份(例如通过scp和密码)id_rsa.pub就足够了。

所以在你的情况下,

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAA....0g1bMv+p11K8MDH sanjaydev
Run Code Online (Sandbox Code Playgroud)

authorized_keysUbuntu 服务器上的文件中必须等于您id_rsa.pub在 Mac 上的密钥。

如果相等,但您仍然无法登录,则说明其他问题。