我的问题是我不能从GitLab中push或fetch。但是,我可以克隆(通过HTTP或SSH)。当我试图推的时候,我得到这个错误:

权限被拒绝(publickey)致命:无法从远程存储库读取

从我看过的所有线索来看,以下是我所做的:

在我的电脑上设置一个SSH密钥,并将公钥添加到GitLab 完成了用户名和电子邮件的config -global 通过SSH和HTTP克隆,以检查它是否能解决问题 执行ssh -T git@gitlab.com命令

如果您对如何解决我的问题有任何见解,我将不胜感激。


当前回答

我的问题是,我在/etc/ssh/sshd_config下的SSH配置文件中将UsePAM从yes切换为no。有了UsePAM,一切都很完美。

其他回答

步骤1: 在~/中添加了一个配置文件。Ssh /config文件,看起来像

   User git
   Hostname gitlab.com
   IdentityFile ~/.ssh/id_rsa_gitlab
   TCPKeepAlive yes
   IdentitiesOnly yes

步骤2:克隆没有sudo的git repo。 文档:https://gitlab.com/help/ssh/README working-with-non-default-ssh-key-pair-paths

**有时在~/中有配置。ssh/config,但是,IdentityFile路径错误。您可以像这样检查文件名ls ~/.ssh/。gitlab的文件通常是id_ed25519。因此正确的配置是IdentityFile ~/.ssh/id_ed25519

在我的例子中,这不是一个gitlab问题,而是一个sshd配置问题。除了用户列表之外,ssh服务器不允许连接。用户git,即远程连接到gitlab的用户,不在该列表中。所以,先检查这个。

您可以在/etc/ssh/sshd_config中查看您的ssh服务器配置。如果你有一行AllowUsers选项,添加git到它:

AllowUsers user1 user2 user3 git

我添加了~/.ssh/id_rsa。pub到我的GitLab设置中的已知SSH密钥列表https://gitlab.com/profile/keys。这为我解决了问题。: -)

使用cd路径/to/project进入终端工程目录 运行ssh - keygen 按enter键输入密码 执行命令cat ~/.ssh/id_rsa。终点站酒吧 复制你在终端上得到的密钥 进入Gitlab/Settings/SSH-KEYS 粘贴键并按添加键按钮

这对我来说就像一个咒语!

我也有同样的问题,在尝试了@Khan的答案后,我提出了这个问题。然而,我只能通过将.git/config文件中的原始url更改为https地址:https://gitlab.com/mygitlabusername/mygitproject.git来使其工作

由于通过ssh访问被拒绝,我发现使用https应该不是问题。但是,每次推送到at存储库时,它都会要求您提供用户名和密码