我查看了这篇文章,但它似乎是为 OSX 和/或 Windows 编写的,我不太确定如何将它应用到我的情况:
GitLab 无法使用 SSH 密钥
我使用 Omnibus(添加到 gitlab.sources 的 bash 脚本)正常设置了我的 GitLab 实例。我在本地服务器上运行 GitLab。本地服务器使用 OpenSSH 允许从我的主机进行连接,并且我已向连接到 GitLab 网站的本地计算机开放端口 80 和 8060。当 GitLab 启动时,我能够登录网站,并且能够创建管理员和用户帐户。
我进入我的用户下的设置并添加了我生成的密钥的公钥,甚至重新配置并重新启动了 GitLab 实例,但每次我尝试通过终端从本地机器连接时都会出现错误Permission Denied (publickey)
。
我不太熟悉 GitLab 配置(通过 gitlab.rb)或 SSH 配置。我能想到的唯一原因是文件或目录的权限错误,或者 GitLab 不知道在哪里查找/如何找到我正在使用的密钥。任何帮助都将不胜感激,我很乐意提供我遗漏的任何信息!
答案1
我检查了 /var/log/auth.log 下的日志,发现 AllowUsers 下没有 git@mymachine。感谢 @MichaelHampton !
答案2
检查 GitLab 的密钥文件,即,/var/opt/gitlab/.ssh/authorized_keys
它是否包含您的密钥?据说您可以使用
gitlab-rake gitlab:shell:setup
命令。但请注意,此功能破碎的不久前。他们还计划消除完全不使用这种方法。我建议您切换到“快速 SSH 查找”,这真的很简单。只需将这些行添加到/etc/ssh/sshd_config
:
Match User git # Apply the AuthorizedKeysCommands to the git user only
AuthorizedKeysCommand /opt/gitlab/embedded/service/gitlab-shell/bin/gitlab-shell-authorized-keys-check git %u %k
AuthorizedKeysCommandUser git
Match all # End match, settings apply to all users again
然后重新启动 SSH 服务器。详情:通过 GitLab Shell 设置快速查找