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

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

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

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

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


当前回答

我找了很久才找到这个。这对我来说是完美的。

Go to "Git Bash" just like cmd. Right click and "Run as Administrator". Type ssh-keygen Press enter. It will ask you to save the key to the specific directory. Press enter. It will prompt you to type password or enter without password. The public key will be created to the specific directory. Now go to the directory and open .ssh folder. You'll see a file id_rsa.pub. Open it on notepad. Copy all text from it. Go to https://gitlab.com/-/profile/keys or Paste here in the "key" textfield. Now click on the "Title" below. It will automatically get filled. Then click "Add key".

现在试一试,肯定会管用的。

其他回答

我在gitlab help中找到了解决方案。

To create a new SSH key pair: 
 1. Open a terminal on Linux or macOS, or Git Bash / WSL on Windows.
 2. Generate a new ED25519 SSH key pair: ssh-keygen -t ed25519 -C "email@example.com"
 2.1 Or, if you want to use RSA: ssh-keygen -o -t rsa -b 4096 -C "email@example.com"
 3. Next, you will be prompted to input a file path to save your SSH key pair to... use the suggested path by pressing Enter
 4. Once the path is decided, you will be prompted to input a password to secure your new SSH key pair. It's a best practice to use a password, but it's not required and you can skip creating it by pressing Enter twice.
 5. Copy your public SSH key to the clipboard by using one of the commands below depending on your Operating System:
        macOS:        pbcopy < ~/.ssh/id_ed25519.pub
        WSL / GNU/Linux (requires the xclip package):      xclip -sel clip < ~/.ssh/id_ed25519.pub
        Git Bash on Windows:      cat ~/.ssh/id_ed25519.pub | clip
 6. Navigating to SSH Keys and pasting your public key in the Key field
 7. Click the Add key button

我希望它能帮助到你们中的一些人!

我是这样解决的。

使用此命令生成Windows密钥:

ssh-keygen -t rsa -C "your.email@example.com" -b 4096

但问题是,在运行这个命令后,它弹出了一行: 输入保存密钥的文件(/c/Users/xxx/.ssh/id_rsa): " 在这里,我只给文件名,因为我的密钥被保存在我的pwd,而不是在给定的位置。当我做“git克隆”时,它假设键位于“/c/Users/xxx/”。Ssh /id_rsa”的位置,但没有找到,因此抛出错误。

在密钥生成时,生成了2个文件,即“file1”和“file1.pub”。我将这两个文件重命名为

file1 -> id_rsa 

and

file1.pub -> id_rsa.pub

并将它们放在“/c/Users/xxx/.ssh/”的位置。

在我的情况下,我使用Ubuntu有两个用户,一个是管理员用户,另一个是我,我创建了“id_rsa”和“id_rsa”。Pub”文件,而登录为我(普通用户),这些文件创建在您的”。home文件夹中的Ssh文件夹, 它可能找不到,因为它是隐藏的,所以让它可见,以检查文件是否在其中。

所以文件是在“home/”中创建的。但当我把代码推到gitlab时,我在终端上以管理员身份登录, 使用命令:su - adminName(提示输入密码)

因此“adminhome/”中没有SSH私钥。文件夹。要解决这个问题,你可以:

创建“id_rsa”和“id_rsa”。Pub”在管理配置文件(或)中 使用您的配置文件而不是管理员配置文件将代码推入gitlab。

这可能听起来很愚蠢,但请确保您的系统和git客户端使用相同的ssh客户端。这在Windows上可能是最相关的。

当您安装现代版本的Windows时,默认情况下会安装OpenSSH客户端,而当您为Windows安装Git时,它在内部使用自己捆绑的ssh客户端。因此,您需要将Git for Windows指向您的OpenSSH安装。

对于任何其他第三方ssh客户端也是一样的,我们在这里只选择OpenSSH作为我们的客户端。

Win + R => cmd 如果安装了OpenSSH路径 Win + S => '编辑环境变量 系统变量=>查找GIT_SSH密钥 编辑或创建(如果不存在),将其值设置为OpenSSH path 创建一个新的终端实例,现在应该在其中应用更改,这样就可以继续了。

注意,如果你使用的是VS Code或其他具有集成终端的编辑器,仅仅创建一个新的编辑器是不够的,你需要重新启动你的编辑器。

如何在ubuntu中添加SSH密钥到gitlab帐户?

在项目目录中打开终端。 输入' ssh-keygen -o -t rsa -b 4096 -C "your gitlab email" ',然后按enter键 输入“vim /home/mnbtech/.ssh/id_rsa”。Pub '然后按回车键 (或者手动打开你的'id_rsa. exe '。Pub '从你保存它的地方) SSH密钥将出现。复制这些 转到你的gitlab账户。 单击头像,单击“设置” 在左侧选择SSH-Keys 然后粘贴这些键 点击添加键

SSH-Key将被添加!

(注意,如果您有生成预览SSH密钥和获得拒绝权限(公钥)。您删除您的预览ssh密钥,并生成一个新的,并在您的终端上添加git用户名和电子邮件)