我正在尝试为一个小的团队安装开发工具,但无法正确获得身份验证。
由于我们是一个分布式团队,服务器位于互联网上。我希望拥有 SSO+零客户端配置。
因此基本上通过 https+webdav 进行 git 是不切实际的,因为 git 客户端只能使用基本身份验证但不保存密码,并且一些 IDE 插件甚至不会在其 UI 中转发密码问题。
然后我必须通过 ssh 使用 git。我安装了 gitosis,它基本上可以使用非对称密钥,好的。我必须要求每个开发人员安装他们的密钥,我可以这样做,忘记零配置。
然后我想让开发人员访问 https 上的 Web 工具(wiki、票证等),但这次我必须给他们一个登录名/密码或另一个私钥,因为 SSH 和 SSL 之间的格式不兼容,并且在操作系统上存储它的位置也不相同。现在,我不得不忘记 SSO?
我搞错了吗?
答案1
TL;DR摘要:如果您有 SSL/X.509 证书+密钥,只需将私钥文件提供给ssh
。或者,如果您已经在 中拥有 SSH 密钥id_rsa
,则只需在签署 CSR 时将其与 OpenSSL 一起使用即可。就这样。
假设您有一个用户的 SSL 证书,joeuser.pem
并且其私钥在joeuser.key
。
由于 X.509 使用标准 RSA 密钥,SSH 也是如此,您应该能够直接告诉您的 SSH 客户端使用joeuser.key
——唯一的要求是它必须采用可理解的格式。
看看里面的东西joeuser.key
是否看起来像这样:
-----开始 RSA 私钥----- MGECAQACEQCxQaFwijLYlXTOlwqnSW9PAgMBAAECEETwgqpzhX0IVhUa0OK0tgkC CQDXPo7HDY3axQIJANLRsrFxClMDAghaZp7GwU2T1QIIMlVMo57Ihz8CCFSoKo3F 2 升/2 -----结束 RSA 私钥-----
在开放SSL,此格式称为“PEM”(如-outform pem
)并默认使用。OpenSSH,即可使用ssh -i joeuser.key
进行连接。
您可以提取民众以OpenSSHid_rsa.pub
格式输入密钥(用于输入authorized_keys
):
ssh-keygen -y -f joeuser.key > joeuser-ssh.pub
(可以使用 提取 PEM 格式的相同公钥openssl rsa -pubout
,但用处不大。)
如果你有 DSA 密钥,它应该工作原理与 RSA 完全相同。
答案2
OpenSSH 在这里对 x509 证书进行了实验性支持:
http://roumenpetrov.info/openssh
您可以为每个用户颁发一个 x509 证书并将其用于两者。
您可以指定用户证书的允许 DN,而不是将用户公钥放在其 authorized_keys 中;并且您必须配置 Web 服务器/Web 应用程序,以便将 DN 转换为用户名。
答案3
你很不走运——SSH 密钥和 SSL 证书是不同的,据我所知,它们不能互换。
最好的选择可能是为你的 Web 工具配置单点登录/共享密码存储/其他任何功能,并将 git/gitosis 作为身份验证岛。