![我如何在没有私钥的情况下登录另一台服务器?](https://linux22.com/image/1085072/%E6%88%91%E5%A6%82%E4%BD%95%E5%9C%A8%E6%B2%A1%E6%9C%89%E7%A7%81%E9%92%A5%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E7%99%BB%E5%BD%95%E5%8F%A6%E4%B8%80%E5%8F%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%9F.png)
我刚刚经历了非常恐惧的时刻,这迫使我开始怀疑我的私人 SSH 密钥的安全性。
事情是这样的:
- 使用我的 SSH 密钥登录到我的服务器。
- 将我的公钥条目提供
.ssh/authorized_keys
给我的朋友。 - 他将其放入
authorized_keys
他为我创建的新帐户中,以供登录。 - 使用我的 SSH 密钥从我的服务器登录到他的服务器。
现在,我不明白我如何使用我的 SSH 密钥登录到他的服务器从我的服务器。我的服务器没有我的私钥。我如何从它登录?我的私钥可能在我的服务器上的某个地方,即使我从未把它放在那里?
authorized_keys
两台服务器上的内容:
ssh-rsa AAAAB3NzaC1yc2EAAAAD[more characters]FdQCw== robo@robo-ubuntu
一些额外的信息:
robo@other-server:~$ ssh robo@localhost
robo@localhost's password:
Login Success. [More default login info]
robo@other-server:~$
我的服务器在非默认 SSH 端口上运行。
robo@my-server:~$ ssh -p [port number] robo@localhost
Login Success. [More default login info]
robo@my-server:~$ ls .ssh
authorized_keys known_hosts
robo@my-server:~$ ssh -p [port number] robo@localhost
robo@localhost's password:
Login Success. [More default login info]
robo@my-server:~$
请注意两次通过 SSH 连接到本地主机不会自动登录。
那么显然我的密钥被转发了?我的配置似乎说明了这一点:
robo@my-server:~$ cd /etc/ssh/; grep -iR "forward"
sshd_config:X11Forwarding yes
ssh_config:# ForwardAgent no
ssh_config:# ForwardX11 no
ssh_config:# ForwardX11Trusted yes
robo@roboserver:/etc/ssh$
我看到两个不同的“转发”可能就是这个原因。但是,它似乎表明它没有转发身份验证。
答案1
您的桌面客户端使用 SSH 代理。您可以通过在命令行中输入以下命令,轻松检查您的连接是否有代理在运行,如果是,则是否已填充您的 ssh 密钥:
ssh-add -L
另一种可能性是使用全局 ssh 配置文件 /etc/ssh/ssh_config 或本地 ssh 配置文件 ~/.ssh/config 中的“IdentityFile”参数定义的预定义身份文件
找出它使用了哪个密钥的方法是使用更详细的 ssh 输出:
ssh -vv user@host