我试图匹配客户端和服务器上的公钥和私钥以及配置文件,但无法解决不匹配的问题。尽管不匹配,我还是可以在 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>
在命令行上给出 。
有两种密钥:服务器或主机密钥,用于向用户标识服务器,以及用户密钥,用于登录。
服务器的私有主机密钥存储在/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_keys
Ubuntu 服务器上的文件中必须等于您id_rsa.pub
在 Mac 上的密钥。
如果相等,但您仍然无法登录,则说明其他问题。
归档时间: |
|
查看次数: |
7582 次 |
最近记录: |