Git SSH 身份验证

Posted

技术标签:

【中文标题】Git SSH 身份验证【英文标题】:Git SSH authentication 【发布时间】:2012-11-05 17:20:44 【问题描述】:

我的服务器上有 Debian、Fisheye 和 Git。 我的 git 存储库由 Fisheye 管理。鱼眼部分没有认证。所有的认证过程都由 git 管理。

我想使用 SSH 身份验证,以便在将更改推送到服务器时不需要提供用户名和密码。我知道如何创建 rsa 密钥,但是我在服务器的哪里复制我的公钥?

【问题讨论】:

【参考方案1】:

“Git on the Server - Setting Up the Server”一文的关键部分是:

您需要将一些开发人员 SSH 公钥添加到该用户的 ~/.ssh/authorized_keys 文件中。 假设您通过电子邮件收到了一些密钥并将它们保存到临时文件中。同样,公钥看起来像这样:

$ cat /tmp/id_rsa.john.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4L
ojG6rs6hPB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4k
Yjh6541NYsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9Ez
Sdfd8AcCIicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myiv
O7TCUSBdLQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPq
dAv8JggJICUvax2T9va5 gsg-keypair

(注意:确保键显示在一个单行)

您只需将它们附加到您的授权密钥文件中:

$ cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys

如果您的服务器上没有authorized_keys 文件,请创建它,但请确保正确保护它。

server$ mkdir ~/.ssh
server$ chmod 700 ~/.ssh
server$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
server$ chmod 600 ~/.ssh/authorized_keys
server$ rm ~/id_rsa.pub

具体示例请参见“Creating SSH keys for Gerrit and Hudson”。

确保 git 位于 ssh 守护程序使用的 PATH 中。 确保您的~/.ssh 的所有父目录对于组都不可写(仅限chmod 755)。

【讨论】:

请注意,这会为您提供完整的 shell/交互式会话。考虑使用专用的“git 键”结合“强制命令”来将此键限制为“仅 git”。 特别是如果多个用户使用相同的“git 帐户”,请执行此操作。参见例如这里举个例子:superuser.com/questions/299927/… @Jens 我同意。那(“ssh 强制命令”)是我多年来一直在使用 gitolite 的东西,我当时(5 年多前)在 ***.com/a/13320256/6309 中介绍了它。【参考方案2】:

您需要将您的公钥粘贴到~/.ssh/authorized_keys 中。如果文件不存在,则创建该文件。

【讨论】:

以上是关于Git SSH 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 上删除 git bash ssh 身份验证

如何在有和没有 ssh 身份验证的情况下将 Git 与两个不同的存储库一起使用?

连接到 gitlab 时使用 ssh 面临身份验证失败

启用 2FA 后 Git 身份验证失败

使用密码短语(如 SSH 密钥)存储 Github / Gitea 身份验证令牌

在 Windows 上配置 Git 以使用 NTLM 代理身份验证