在 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。
我想在我的 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。