God*_*ebh 9 windows git ssh-keys pycharm gitlab
我为我的 GitLab 存储库创建了一个 SSH 密钥,当我使用 SSH 测试它时,它确实有效并要求输入密码:
>ssh -T git@gitlab.lrz.de
Enter passphrase for key 'C:\Users\[username]/.ssh/id_ed25519':
Welcome to GitLab, @000[...]!
Run Code Online (Sandbox Code Playgroud)
我也用过
>git remote set-url origin git@gitlab.lrz.de:000[...]/project.git
Run Code Online (Sandbox Code Playgroud)
没有错误。但是,当我尝试提交并推送到存储库时,Git 会询问 SSH 密钥的密码git@gitlab.lrz.de,而不是密码。
根据文档(https://docs.gitlab.com/ee/ssh/),您可以在配置文件中设置 ssh 密钥~/.ssh/config。因此,我在此目录中创建了一个包含以下内容的文本文件:
Host gitlab.lrz.de
HostName gitlab.lrz.de
IdentityFile ~/.ssh/id_ed25519
Run Code Online (Sandbox Code Playgroud)
它仍然无法工作,我不确定它是否使用这个配置文件。我能够在 Linux 服务器上运行所有内容,但不能在这台 Windows 计算机上运行。我通过命令行和 Pycharm 尝试过。
>git --version
git version 2.35.1.windows.1
Run Code Online (Sandbox Code Playgroud)
Jac*_*_Hu 18
@kipy 几乎是正确的......
问题是 git 捆绑了自己的 SSH 可执行文件,并且与 Windows 中一样(至少在历史上),本机 OpenSSH 客户端是可选的,默认情况下 git 不会承认它。因此,当您执行以下操作时:
ssh-add <my-key>
在 Powershell(或其他)中,这实际上并不是 git 命令正在使用的 SSH 客户端。
这使事情变得更加复杂,因为像我一样,您将输入:
ssh -T git@github.com
看到“成功了!” 消息,然后挠头,想知道为什么git clone git@github.com:<username>/<repo>.git会出现(public key)错误。我想线索很清楚,但并不明显......在一个中ssh直接运行,在另一个中运行git,然后通过代理调用“ssh”。
解决这个问题的正确命令是告诉你的 git 安装(通过它的配置)你希望它使用哪个版本的 SSH,所以:
git config --global core.sshCommand C:/Windows/System32/OpenSSH/ssh.exe
然后,这将提示所有git命令使用与您的ssh命令相同的 SSH 客户端。
这还允许您对不同的遥控器使用不同的按键,以及在所有终端/应用程序中工作。
注意:上面假设 OpenSSH for Windows 是通过 Windows 可选程序进程安装的,这很可能是这种情况,但为了确定,您可以打开 PowerShell 窗口,然后运行:
(Get-Command ssh).Path
这将输出类似的内容:
C:\Windows\System32\OpenSSH\ssh.exe
如果它没有输出,则git config用此输出替换上面命令的最后部分。
您可以在 git 配置中自定义 git 使用的 ssh 命令,然后在使用任何 git 命令时传递您的密钥。
git config core.sshCommand "ssh -i ~/.ssh/id_ed25519"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10202 次 |
| 最近记录: |