我一直在尝试理解 ssh 的整个概念。但我仍然无法掌握这个概念。我参考了网上的各种资料 -
ssh_config 和 sshd_config 之间有什么区别/
以下是我的疑问——
每次我们创建 ssh 密钥(假设我们每次都覆盖 id_rsa.pub 文件)时,远程服务器如何收到通知?它是否收到通知是因为它已被添加到已知主机列表中,并且有一些内部机制可以告知这些远程主机密钥已更改。还是因为文件授权密钥?
如果我更改了公钥,我可以手动将其改回我生成的任何旧密钥吗?在这种情况下,我可以使用那些旧密钥连接到我之前连接的远程服务器吗?
在本地主机上执行 ssh 到底是什么意思?它有什么好处呢?因为它可以连接到您可以访问的本地机器。
任何提供 ssh 详细解释的资料都非常受欢迎。TIA :)
笔记 这是我在这个社区的第一个问题。如果这里不适合提问,请告诉我。
答案1
每次我们创建一个 ssh 密钥(并且假设我们每次都会覆盖 id_rsa.pub 文件),远程服务器如何收到通知?
没有自动通知。此外,如果您覆盖现有密钥对,而这是唯一允许您访问远程系统的东西,您将不再具有访问权限。我强烈建议您不要覆盖密钥。而是创建多个密钥。然后使用您的 .ssh/config 为特定连接定义密钥,或将所有活动密钥添加到 ssh 代理。
一旦创建新的密钥对,您就需要将公钥重新发布到您需要进行身份验证的任何主机。
当我生成密钥时,我倾向于给它们命名,并添加注释,包括生成它们的时间。就像这样。
ssh-keygen -C zoredache_20160217_id -f zoredache_20160217_id_rsa
如果我更改了我的公钥,我可以手动将其改回我生成的任何旧密钥吗?
如果您覆盖/替换它则不会。再次提醒,请保留您的旧密钥对。请保留您的旧密钥对。
它与本地机器建立连接后能带来什么好处
这样做的理由很少。但是,我发现一些罕见的应用程序在我 时无法正常工作。sudo -i -u anotheraccount
当我ssh anotheraccount@localhost
可以使用这些应用程序时。一个例子是断开连接的 GNU Screen 会话。Screen 对用于重新连接的终端的所有权有些挑剔。使用 SSH 连接到另一个帐户可以使其正常工作。