我安装了 Ubuntu 22.04 并使用激活了 ssh 服务
sudo apt install ssh
我尝试通过 putty 使用 ssh 从我的 Windows 连接到我的 Ubuntu,并且成功了。putty 要求信任 Ubuntu 的密钥,一切都很好。
但是如果我进入 Ubuntu 并尝试查看安装 ssh 服务时生成的公钥和私钥,它们并不在目录中~/.ssh/
。
有人能解释一下吗?
答案1
使用 SSH 连接和生成 SSH 公钥和私钥之间存在区别。请注意,问题中的术语(公钥和私钥、“id 文件”、~/.ssh/
)会让人想到用户生成的 SSH 密钥对。
您所指的目录 ( ~/.ssh/
) 是用于用户生成的 SSH 密钥对、known_hosts
文件等,并且安装 SSH 本身不会生成用户密钥对。如果您想从 Windows 使用 SSH 密钥对进行连接,您需要执行以下操作:
- 在 Windows 机器上创建 SSH 密钥对(此处与主题无关,但与主题相关)超级用户)
- 在 Ubuntu 机器上安装你在 Windows 上生成的公钥
这里有一个超级用户问答详细说明如何在 Windows 上设置 SSH 密钥以用于 PuTTY,以及另一个关于为何以及如何存储密钥。
但是,如果您指的是安装 SSH 时生成的 SSH 主机密钥,则它们位于里面/etc/ssh
,可以使用以下命令列出:
$ ls -la /etc/ssh/ssh_host*
-rw------- 1 root root 1373 May 8 2020 /etc/ssh/ssh_host_dsa_key
-rw-r--r-- 1 root root 597 May 8 2020 /etc/ssh/ssh_host_dsa_key.pub
-rw------- 1 root root 492 May 8 2020 /etc/ssh/ssh_host_ecdsa_key
-rw-r--r-- 1 root root 169 May 8 2020 /etc/ssh/ssh_host_ecdsa_key.pub
-rw------- 1 root root 399 May 8 2020 /etc/ssh/ssh_host_ed25519_key
-rw-r--r-- 1 root root 89 May 8 2020 /etc/ssh/ssh_host_ed25519_key.pub
-rw------- 1 root root 2590 May 8 2020 /etc/ssh/ssh_host_rsa_key
-rw-r--r-- 1 root root 561 May 8 2020 /etc/ssh/ssh_host_rsa_key.pub
公共主机密钥保存在客户端计算机上(作为known_hosts
),用于验证远程计算机的身份并将连接标记为“受信任”。在 Ubuntu 上,已知主机保存在~/.ssh/known_hosts
(请参阅超级用户当谈到 Windows 时)。