Ale*_*meu 98 git ssh ubuntu gitlab
我的问题是我不能从GitLab推送或获取.但是,我可以克隆(通过HTTP或通过SSH).我尝试推送时出现此错误:
权限被拒绝(publickey)致命:无法从远程存储库读取
从我看过的所有主题来看,这就是我所做的:
现在我想要打我的电脑.如果您对如何解决我的问题有任何见解,我们将不胜感激.
Muh*_*han 181
经过大量搜索后我发现了这个.它对我来说非常好.
ssh-keygen
.ssh
文件夹.id_rsa.pub
.在记事本上打开它.从中复制所有文本.现在试一试,它肯定会起作用.
小智 50
第1步:在〜/ .ssh /文件夹中添加了一个配置文件
User git
Hostname gitlab.com
IdentityFile ~/.ssh/id_rsa_gitlab
TCPKeepAlive yes
IdentitiesOnly yes
Run Code Online (Sandbox Code Playgroud)
第2步:只需克隆没有sudo的git repo.
Hus*_*ain 20
我认为简单的解决方案是将私钥添加到身份验证代理(如果您的密钥不是~/.ssh/id_rsa
),
ssh-add ~/.ssh/<your private key>
Run Code Online (Sandbox Code Playgroud)
你基本上让它ssh-agent
照顾它.
此外,您可以永久添加它.
Ela*_*lad 15
对此有一个非常简单的解决方案:不要使用 ssh - 移至 https。要做到这一点:在您的项目文件夹中,您有一个 .git 文件夹 - 您有一个配置文件 - 在文本编辑器中打开它并更改该行
url =git@gitlab.com:yourname/yourproject.git
到
TmT*_*ron 13
就我而言,它在WSL(Linux的Windows子系统)中不起作用。
启动WSL时,我必须
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa
现在连接正常。
我们可以用ssh -T git@github.com
笔记:
riv*_*nov 11
确保你没有运行sudo git clone git@gitlab.com:project/somethiing.git
,否则ssh会查找/root/.ssh
而不是你上传的密钥~/.ssh/id_rsa
小智 6
如果您使用的是Linux或macox,请在终端中尝试以下操作:
ssh-add -l
Run Code Online (Sandbox Code Playgroud)
如果没有返回任何内容,请尝试以下操作:
ssh-add
Run Code Online (Sandbox Code Playgroud)
它必须在〜/ .ssh / id_rsa中创建身份
重试后:
ssh-add -l
Run Code Online (Sandbox Code Playgroud)
它必须返回您的身份,因此在尝试克隆后,它必须可以工作
注意:不要忘记在个人资料gitlab中添加ssh密钥
谢谢
就我而言,这不是一个gitlab问题,而是一个sshd配置问题。ssh服务器不允许连接,但用户列表除外。用户git(一个远程连接到gitlab的用户)不在该列表中。因此,请先检查此内容。
您可以在中检查ssh服务器配置/etc/ssh/sshd_config
。如果您在选项行中AllowUsers
添加git:
AllowUsers user1 user2 user3 git
Run Code Online (Sandbox Code Playgroud)
要完成的步骤,遇到了同样的错误,但我修复了它。Gitlab 需要 ssh-rsa 所以下面是为 rsa 运行 ssh 的代码
ssh-keygen -o -t rsa -b 4096 -C "name@gmail.com"
name@gmail.com 是您的 gitlab 帐户电子邮件
它会提示你输入,所以在下面的代码提示后按 Enter 键,
输入保存密钥的文件 (/home/yourDesktopName/.ssh/id_rsa):
它会再次提示您输入,因此在提示以下代码后按 Enter 键,
输入密码(空表示没有密码):
它会再次提示您最后一次输入,因此在提示以下代码后按 Enter 键,
再次输入相同的密码:
您将显示您的 ssh-rsa 生成。
登录到您的 Gitlab 帐户并转到右侧导航栏,您将获得设置,在左侧边栏中,您将获得 ssh 密钥。进入其中。
看上面提示你输入,你会得到ssh-rsa的路径。
转到您的 SSH 文件夹并获取 id_rsa.pub
打开它并获取密钥并复制粘贴到 Gitlab,您就快完成了。
检查方式: ssh -T git@gitlab.com
你会得到: Welcome to GitLab, @joy4!
完毕。
我知道,我很晚才回答这个问题,甚至 StackOverflow 也确认了我是否真的想回答。我回答是因为没有人真正描述过实际问题,所以想分享相同的问题。
首先,了解一下这里的遥控器是什么。Remote 是 GitLab,而您的系统是本地的,所以当我们谈论 remote 时origin
,git remote -v
输出中设置的任何 URL都是您的远程 URL。
基本上,Git clone/push/pull 主要适用于两种不同的协议(还有其他协议)-
当您克隆存储库(或更改远程 URL)并使用https://gitlab.com/wizpanda/backend-app.git等 HTTPs URL 时,它使用第一个协议,即 HTTP 协议。
如果您克隆存储库(或更改远程 URL)并使用该 URL,git@gitlab.com:wizpanda/backend-app.git
则它使用 SSH 协议。
在这个协议中,每个远程操作,即克隆、推和拉都使用简单的身份验证,即您的远程(在本例中为 GitLab)的用户名和密码,这意味着对于每个操作,您必须输入您的用户名和密码,这可能很麻烦.
因此,当您推/拉/克隆时,GitLab/GitHub 会使用您的用户名和密码对您进行身份验证,并允许您进行操作。
如果你想试试这个,你可以通过运行命令切换到 HTTP URL git remote set-url origin <http-git-url>
。
为了避免这种情况,您可以使用 SSH 协议。
一个简单的 SSH 连接适用于公私密钥对。因此,在您的情况下,GitLab 无法对您进行身份验证,因为您使用 SSH URL 进行通信。现在,GitLab 必须以某种方式了解您。为此,您必须创建一个公私钥对并将公钥提供给 GitLab。
现在,当您使用 GitLab 推/拉/克隆时,GIT(内部 SSH)将默认将您的私钥提供给 GitLab 并确认您的身份,然后 GitLab 将允许您执行操作。
所以我不会重复穆罕默德已经给出的步骤,我会在理论上重复它们。
~/.ssh
命名id_rsa.pub
(公钥)& id_rsa
(私钥)中。您应该始终创建至少 2048 字节的强 rsa 密钥。所以命令可以是ssh-keygen -t rsa -b 2048
.
https://gitlab.com/help/ssh/README#generating-a-new-ssh-key-pair
这两种方法都有其优点和缺点。在我输入上面的文字后,我去搜索了更多关于这个的内容,因为我从来没有读过关于这个的东西。
我找到了这个官方文档https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols,它讲述了更多关于这个的信息。我的观点是,通过阅读错误并思考错误,您可以做出自己的理论或理解,然后可以匹配一些谷歌结果来解决问题:)
小智 5
cd path/to/project
ssh-keygen
cat ~/.ssh/id_rsa.pub
在终端中运行Gitlab/Settings/SSH-KEYS
这对我来说就像一个魅力!
归档时间: |
|
查看次数: |
106757 次 |
最近记录: |