无法通过 ssh 推送到 GitLab 存储库
Cannot push into GitLab repository via ssh
我设置了 GitLab 并将我的存储库放入其中。
我按如下方式制作了 ssh 密钥,并将 public 密钥放入我的 GitLab 配置文件中。好像还可以。
ssh-keygen -t rsa -C "$your_email"
我可以通过 ssh 克隆我的存储库。但我无法通过 ssh 如下推送。
root@192.168.141.136's password:
Counting objects: 6, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 337 bytes | 0 bytes/s, done.
Total 4 (delta 1), reused 0 (delta 0)
remote: GitLab: No such user or key
To ssh://root@192.168.141.136/var/opt/gitlab/git-data/repositories/root/reponame.g
it
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'ssh://root@192.168.141.136/var/opt/gitlab/gi
t-data/repositories/root/reponame.git'
我检查了 GitHub 并查看了源代码,很明显找不到我的用户或 ssh 密钥。
但是很奇怪,因为我明明都设置了。
actor = if params[:key_id]
Key.find_by(id: params[:key_id])
elsif params[:user_id]
User.find_by(id: params[:user_id])
end
unless actor
return Gitlab::GitAccessStatus.new(false, 'No such user or key')
end
我误解了整个故事。
Linux用户和GitLab用户完全无关。
如果我想在 GitLab 中使用 user_a
、user_b
和 user_c
,我所要做的就是在 GitLab 中添加这些用户,每个用户都必须创建ssh 密钥并在 GitLab 中设置它。
如果 reponemae.git 是 public 存储库,那么所有这些都可以通过 ssh 克隆,如下所示。
git 克隆 ssh://git@192.168.141.136://root/reponame.git
我设置了 GitLab 并将我的存储库放入其中。
我按如下方式制作了 ssh 密钥,并将 public 密钥放入我的 GitLab 配置文件中。好像还可以。
ssh-keygen -t rsa -C "$your_email"
我可以通过 ssh 克隆我的存储库。但我无法通过 ssh 如下推送。
root@192.168.141.136's password:
Counting objects: 6, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 337 bytes | 0 bytes/s, done.
Total 4 (delta 1), reused 0 (delta 0)
remote: GitLab: No such user or key
To ssh://root@192.168.141.136/var/opt/gitlab/git-data/repositories/root/reponame.g
it
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'ssh://root@192.168.141.136/var/opt/gitlab/gi
t-data/repositories/root/reponame.git'
我检查了 GitHub 并查看了源代码,很明显找不到我的用户或 ssh 密钥。 但是很奇怪,因为我明明都设置了。
actor = if params[:key_id]
Key.find_by(id: params[:key_id])
elsif params[:user_id]
User.find_by(id: params[:user_id])
end
unless actor
return Gitlab::GitAccessStatus.new(false, 'No such user or key')
end
我误解了整个故事。
Linux用户和GitLab用户完全无关。
如果我想在 GitLab 中使用 user_a
、user_b
和 user_c
,我所要做的就是在 GitLab 中添加这些用户,每个用户都必须创建ssh 密钥并在 GitLab 中设置它。
如果 reponemae.git 是 public 存储库,那么所有这些都可以通过 ssh 克隆,如下所示。
git 克隆 ssh://git@192.168.141.136://root/reponame.git