我知道私钥被泄露的风险很大;但是公钥呢?如果它们被篡改了怎么办?
如果有人访问我用于 Linux 服务器 SSH 的私钥所关联的公钥并对其进行修改,这是否会阻止我访问服务器?从而影响我的可用性?
答案1
只要您有私钥,您就可以随时重新生成公钥。
你问:
如果有人访问我用于 Linux 服务器 SSH 的私钥所关联的公钥并对其进行修改,这是否会阻止我访问服务器?从而影响我的可用性?
所以,你所担心的情况是不是类似于你忘了关电脑,没有让它进入睡眠状态,然后跑去做某事,然后有人进入你的电脑,在你的公钥上添加几个字符,从而有效地损坏了它? 甚至删除它?
只要你有私钥就不用担心。只需运行以下命令:
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
然后您的公钥将被重新生成。请注意,公钥行末尾的注释可让您更轻松地识别哪个密钥是什么(通常是电子邮件地址),但不会id_rsa.pub
通过此方法添加到此。因此,您可能需要在文本编辑器中打开它并手动添加它。
关于您的其他顾虑。
现在,如果您担心有人以某种方式破解远程计算机上的公钥,从而拒绝您的访问?老实说,在这种情况下,您要处理的问题会更大。
通常,有人需要能够访问 root 权限(或具有无密码 sudo 权限的帐户或访问您自己在该计算机上的帐户的帐户)才能执行此操作。这种情况并非闻所未闻,但最多也只是罕见情况。
答案2
听起来你是在问,如果有人进入“我的”Linux 机器,修改了 .ssh/authorized_keys(其中包含允许访问 Linux 机器的公钥),并且“修改它,这不会阻止我访问服务器吗?因此,影响我的可用性?”
是的,如果在 authorized_keys 文件中更改了公钥,它将与您的私钥不匹配,但这就像说,有人进入了您的房子,更改了您的门锁,现在您的家门钥匙不再起作用了。
他们一开始是如何做出改变的?只有 root 和登录所有者可以更改他们自己的 authorized_keys 文件,因此这些人就是您的嫌疑人。
答案3
公钥的意义在于广为人知。它可以由 PKI(公钥基础设施)审核。您可以在本地 PC 上使用私钥对消息(和其他内容)进行签名,其他人可以确认该消息来自您。
类似地,公钥可以放入远程服务器上的 SSH 配置文件中。当您通过 SSH 进入这些服务器时,它们会提出一个挑战,只有拥有正确私钥的人才能正确回答。
您最初的问题是:
“如果有人访问我用于 Linux 服务器 SSH 的私钥所关联的公钥,并对其进行修改”...
那么它将不再是相同的公钥。您可以立即重新生成公钥,以便其他管理员设置正确的公钥。
您还有次要的担忧:还有谁可以访问我的机器,他们可以做什么,以及我如何恢复?这些答案很复杂并且要视具体情况而定。
网络上有很多关于 SSH 和 PKI 的优秀资源...这里有一个很好的开始:SSH 基础知识:使用 SSH 服务器、客户端和密钥
答案4
这个问题似乎类似于问“如果有人修改了我的程序源代码怎么办?”关于开源软件,答案是一样的:他们只能修改他们的副本或他们(无论合法还是非法)有权访问的副本。通常,这不会对您造成任何影响,如果有影响,影响与公钥无关,而是与您在系统上错误地进行更改的能力有关,而这些更改会对您造成影响。