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 与两个不同的存储库一起使用?