我不清楚你是否被告知SSH比HTTPS协议在你的特殊情况下(我们没有所有细节),这可能是绝对正确的,或者你是否被当作一般建议。SSH与HTTPS的分析可能令人惊讶对于那些不熟悉安全系统分析的人来说这就是为什么我们倾向于发表诸如“SSH比HTTPS“:这通常是正确的,即使在每个案例。无论如何,这里有一些关于这个问题的想法。
既然您提到在文件中存储凭据,那么这个答案假设您正在对HTTPS和SSH。密码身份验证在这两种情况下都不太安全案例。
本地凭据存储
首先,您假设用户的凭据存储在磁盘上不受密码保护。这可能会也可能不会是真的,但如果它受到密码短语的保护,这将非常重要提高安全性。
在SSH的情况下,凭据更有可能受到密码短语,因为密钥代理更易于使用且更频繁与SSH一起使用。有了SSH,密钥代理几乎总是可用的因为ssh-代理
或类似的是几乎所有标准集的一部分SSH客户端工具。这也使使用代理的培训变得容易,因为训练以一种特定的方式使用一种工具几乎无处不在。
HTTPS系统的关键代理更加多样化,可能更少通常安装,即使在特定系统中可用,不太可能有人知道某个特定的可用并且知道如何使用它。
远程代理
其次,SSH支持远程代理连接,允许删除一个您正在使用的系统中的关键材料git获取
在许多情况下,这可以大大提高安全性。这是最好的通过一个我最常用的工作流示例进行描述。
我的笔记本电脑是一台“个人”机器,我是唯一的一台(它有完整的磁盘加密和用户帐户仅适用于我。)当我登录时,我启动本地ssh-代理
并加载我的使用ssh-ask通道
通过启用确认ssh-添加-c
.
当我将SSH连接到我正在进行开发的主机时,通常会共享与其他人一起,我使用ssh-A型
以启用代理转发。然后我吉特取来
,它启动从开发主机到Git远程服务器。
当远程请求进行身份验证时,该SSH接收请求并将其转发回我笔记本电脑上的代理。我收到一个在我的屏幕上提醒我的本地代理已收到请求身份验证,这是我所期望的,因为我刚刚启动了一个操作这会导致这种情况,所以我批准了身份验证。SSH开发主机上的进程接收它需要的信息验证(仅对该特定会话有效),成功通过远程服务器和我的git获取
收益。
请注意,这更安全,因为a)钥匙是从不在开发服务器上因此很难接近攻击者(他们需要访问我的私人笔记本电脑),b)我得到已通知有关使用我的密钥的请求,允许我检测使用密钥的意外尝试。(在上具有root用户的任何用户开发服务器还可以将身份验证请求转发给我的笔记本电脑。)我不必每次都输入密码,所以拥有受密码保护的密钥文件要容易得多。