libook
2022-10-22 10:14:15 +08:00
HTTPS 是 HTTP 外套 TLS/SSL ,协商的时候大体上是:客户端接收服务器公钥和签名,根据客户端上的 CA 证书来验证服务器可信(认证),然后使用服务器公钥发送客户端的公钥和数据,服务器用服务器私钥解密再用客户端公钥加密数据返回,客户端用客户端私钥解密。
SSH 是 Secure Shell ,协商的时候大体上是:客户端接收服务器公钥,然后看本地是否记录过,未记录再提示用户验证是否可信(认证),然后客户端生成对称秘钥,用 Diffie - Hellman 算法在不直接传输秘钥的情况下、以服务器公钥加密相关参数的形式然后服务器自己把这个对称秘钥算出来,然后双方通过这个临时对称秘钥加密通信。
总体来说只要验证身份阶段把好关、秘钥和算法足够强、私钥不泄露,两种方式都是十分安全的。
关于 SSH 端口,其实可以分开运维用端口和 Git 端口,一种简单方式是把 Git 服务部署在 Docker 等隔离环境中,内部配置 SSHD 仅允许 git 用户访问 git-shell ,需要运维则登录到宿主机再使用 Docker 的 exec 指令打开 shell 操作。SSH 不使用 22 端口,用户也可以在客户端配置 remote 的时候指定其他端口。
有的企业可能规定不允许记住登录状态,比如配置公钥自动登录这种就不符合要求,但其实可以打开两步验证,实际上现在等保会要求两种及以上验证方式同时使用。
个人认为题主的情况要么是因为其他原因,要么是运维人员水平有限,要么是安全负责人员懒政。