在 WSL 中使用 SSH 连接到 Github 时出现问题

Problem connecting to Github with SSH in WSL

我想在我的 WSL 中使用 SSH 协议连接到 github,我遵循了 github 文档 here 中的每一步。 密钥已生成,我已经测试了我的连接,但仍然无法正常工作。每次将我的代码推送到 github 时,我仍然必须输入用户名或密码。谁能帮我解决这个问题?

我也是这样做的

# start the ssh-agent in the background
$ eval $(ssh-agent -s)
> Agent pid 59566

$ ssh-add ~/.ssh/id_rsa

PS:我不知道这是否相关,但我的 WSL 和 bash 根文件夹中有两个 .ssh 目录。 它在我的 bash 中有效,因为我猜 VS Code 为我生成了 SSH 密钥。

编辑: 我猜是 ssh-agent 不工作

接下来是eamodio/vscode-gitlens issue 909

I am trying to use git through SSH in a WSL remote.
The SSH connection is protected with a key pair which is password-protected.
How do I start an SSH agent and input that passphrase for a shell in which GitLens operates?

By default a bash/wsl shell is opened in terminal window on WSL remote connection.
I start an SSH agent there and add the key, but it seems like this is not the shell in which GitLens is sending its git commands.

解决方法是重新生成这些密钥(在使用现有密钥首先打开会话之后)并且:

  • 确保新密钥不受密码保护
  • 在 WSL 会话的 ~/.ssh/authorized_keys 文件中添加新的 public。

如果系统提示您输入用户名和密码,可能是您尝试使用 HTTPS 协议而不是 SSH。您可以使用 git remote -v 查看 URL 的外观。如果你想更改为使用 SSH 协议,你可以使用类似 git remote set-url origin git@github.com:git/git.git 的东西(其中 git/git.git 是你要推送到的存储库)。

一般来说,尝试通过 SSH 连接到 GitHub 不会提示您输入用户名和密码,因为 GitHub 不支持通过 SSH 进行密码验证。

在 WSL 2 上,我使用 SSH 提交到 GitHub,发现每次都要求我输入密码。经过数小时的搜索和尝试多种方法(这些方法适用于我无法忍受的警告),这对我有用。

安装keychain:

sudo apt install keychain

然后将以下行添加到您的 shell 的配置文件(可能 ~/.bashrc~/.zshrc):

eval `keychain --quiet --eval --agents ssh id_rsa`

现在您只需在启动 WSL 时输入密码!

感谢 Birk Holland this article