是否有安全的方法使用来自共享服务器的私钥?

信息安全 SSH 打开sh 混帐
2021-09-11 22:54:10

我正在家里通过 SSH 在学校服务器上远程工作。我想使用 SSH 从远程系统访问私有 GitHub 存储库。

如果我在远程系统上创建一个新的公钥/私钥对并为其使用强密码,那么拥有 sudo 访问权限的系统管理员是否能够访问和使用私钥?

一般来说,我不会代表系统管理员假设任何恶意意图,但我知道他们中的一个人总是有可能不诚实。我想知道对于恶意系统管理员和非恶意案例,我将面临什么样的风险。

我不担心管理员看到我的 GitHub 存储库的内容。我担心他们将要使用私钥冒充我并擦除我们的存储库或克隆尚未复制到服务器上的其他私有存储库。换句话说,使用密钥身份验证会让我面临比现在更多的风险吗?

4个回答

考虑到你的解释:

我不担心他们看到我的 GitHub 存储库的内容——我担心他们将使用私钥冒充我并擦除我们的存储库或克隆其他尚未复制到服务器上的私有存储库。

您可以考虑使用称为只读部署密钥的GitHub 功能


在非敌对环境中,您可以使用SSH 代理转发,它允许您在客户端计算机上使用密钥,而无需将其保存在跳板服务器上,但管理员可以利用此方法。

如果您用作跳板的机器由恶意管理员控制,则您无法完全保护您的密钥或 GitHub 帐户。

请注意,无论您使用何种保护密钥的方法,git命令(您可能合法地执行和授权)都可能被替换为有害的命令。

正如已经建议的那样,使用只读部署密钥可能是一种有用的方法,我相信这是最常见的解决方案。

如果您在学校的服务器上使用对 github 具有读/写访问权限的密钥,您仍然可以将其设为除该存储库之外不用于任何其他内容的密钥,这限制了其被滥用的可能性。

或者(更好),这里有两种方法可以避免在不受信任的服务器上运行 git 客户端所固有的问题:

  1. 以更多的网络流量和延迟为代价,您还可以从您的工作站执行所有 git/ssh 的工作,同时将 git 存储库文件从学校服务器安装到您的工作站上,例如使用 sshfs。如果您靠近您正在使用的服务器,这是非常可行的,并且需要绝对最低的设置复杂性。

  2. 您可以将学校服务器的副本配置为另一个 git 存储库,您可以通过 ssh 访问它。您将笔记本电脑上的副本设置为具有两个遥控器,因此您可以像往常一样在 github 上推拉,而您只推到您的学校。像这样使用,git 是一个非常轻量级的部署协议 - 甚至可能比 rsync 更轻,因为它不需要扫描整个文件树以进行更改。只要将学校的副本转换为 git 存储库不成问题,这将是我的首选方法,这可能还取决于还有谁在处理它。

我正在家里通过 SSH 在学校服务器上远程工作。我想使用 SSH 从远程系统访问私有 GitHub 存储库。

您可以使用ssh-agent转发来解决此问题,而无需在服务器上存储任何密钥材料。这是首选方式,这是为了什么(最好向代理添加一个密钥并确认每个操作:-c切换)。

如果我在远程系统上创建一个新的公钥/私钥对并为其使用强密码,那么拥有 sudo 访问权限的系统管理员是否能够访问和使用私钥?

一般来说,ssh 密钥的加密非常好,但理论上,root可以转储您的客户端ssh进程的内存,或者以其他方式捕获您在该服务器上所做的一切。物理和root访问是您无法防范的事情。

无论您以何种方式处理此类问题,如果有人比您拥有更大的管理权限,您绝对无法确保数据的完全安全和隐私。他们可以查看您的文件,复制它们,并实施大量方法来监视您所做的一切。

如果您认为您的 GitHub 帐户需要更高的安全性,您将需要从更安全的机器(例如您自己的计算机)访问它。