在涉足 Ubuntu 和其他 Linux 版本十年之后,我是 SSH 的新手。今天我成功设置了 SSH,但在此过程中我遇到了一些挂断和头痛。虽然系统现在运行正常,但我不完全确定它是如何工作的,这让我很生气。
我有一段时间遇到的主要头痛是:
- 我会通过 OS X 和“ssh”命令将 SSH 连接到我的 Ubuntu 机器。当我这样做时,我会收到警告说这是我正在连接的新主机,并且我得到了一个 RSA 指纹。
- 然后我会访问我的 Ubuntu 机器(通过 VNC)并运行 ssh-keygen -lf [public key],指纹是不同的。
- 挫折。
闲逛了一会儿,我发现了/etc/ssh/ssh_host_rsa_key.pub。长话短说,我检查了指纹,瞧,这就是 OS X 获取指纹的地方。在同一个文件夹中,我看到似乎是匹配的私钥(通过检查指纹验证)非常好。
所以现在我的假设是这些是预先制作的默认密钥,您可以使用它们而无需生成自己的密钥或任何其他密钥。因为我已经生成了自己的(受密码保护的)密钥,所以我想替换它们。然后我进入 SSHD_config 文件并将 RSA 密钥的目录更改为我的主目录(~/.ssh/[authorized_keys 文件中的公钥])。然后我删除了 ssh_host_rsa_key.pub。那没有用。我重建了主机密钥,撤消了配置更改,将生成的公钥留在了主目录中,并将生成的私钥移到了客户端。连接效果很好,指纹 OS X(我的客户端)提示我匹配 ssh_host_rsa_key.pub。
此外,我知道安全性正在发挥作用,因为如果我从我的 home/.ssh/ 中删除了 authorized_keys 文件,我的客户端将无法再连接。
我的问题:
如果我的客户 OS X 告诉我指纹是 ssh_host_rsa_key.pub 的指纹,为什么我可以在没有匹配私钥的情况下进行连接?
换句话说,当我还需要生成的私钥和公钥正确就位时, ssh_host 密钥扮演什么角色(客户端上没有匹配的私钥)?
说ssh需要两个公钥和一个私钥才能正常连接准确吗?或者我应该用我生成的公钥(也在授权用户中)的内容覆盖 /etc/ssh/ssh_host_rsa_key.pub 的内容?[编辑:我尝试用我生成的私钥和公钥替换 ssh_host_rsa_key.pub 和 ssh_host_rsa_key(当然是重命名的)。当我尝试重新启动 SSH 服务时,我得到“结束必须是 KEY=VALUE 对”)。所以我破坏了 SSH 服务。]
在此先感谢您的帮助。我已经在 Google 上搜索了好几个小时,甚至还给我更精通技术的朋友打了电话,他恰好在 Google 工作。而我还没有得到答案。