我如何在没有私钥的情况下登录另一台服务器?

我如何在没有私钥的情况下登录另一台服务器?

我刚刚经历了非常恐惧的时刻,这迫使我开始怀疑我的私人 SSH 密钥的安全性。

事情是这样的:

  1. 使用我的 SSH 密钥登录到我的服务器。
  2. 将我的公钥条目提供.ssh/authorized_keys给我的朋友。
  3. 他将其放入authorized_keys他为我创建的新帐户中,以供登录。
  4. 使用我的 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

相关内容