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

时间:2020-02-12 02:52:35

标签: github windows-subsystem-for-linux ssh-keys

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

Above is my SSH in WSL, and below is my SSH in bash (and this one is working)

编辑: 我猜这是ssh-agent无法正常工作

3 个答案:

答案 0 :(得分:3)

如果系统提示您输入用户名和密码,则可能是您尝试使用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进行密码验证。

答案 1 :(得分:1)

后跟eamodio/vscode-gitlens issue 909

我正在尝试在WSL远程服务器中通过SSH使用git。
SSH连接受受密码保护的密钥对保护。
如何启动SSH代理并为运行GitLens的shell输入密码短语?

默认情况下,在WSL远程连接的终端窗口中打开bash / wsl shell。
我在那里启动SSH代理并添加密钥,但是看来这不是GitLens在其中发送git命令的外壳

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

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

答案 2 :(得分:0)

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

安装keychain

/**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        $candidates = Candidate::query();
        $data = [];
        $data['availabilities'] = Availability::all();
        $data['job_types'] = JobType::all();
        $data['fields_of_work'] = FieldOfWork::all();
        $data['interests'] = Interest::all();
        $data['salary'] = Salary::all();
        $data['trainings'] = Training::all();
        if ($request->availaibilities && $request->availabilities !== -1 && $request->field) {
            $candidates->whereHas('availabilities', function ($query) use ($request) {
                $query->where('availabilities.id', $request->field);
            });
        }
        if ($request->secondParameter) {
            $candidates->where('secondParameter', $request->secondParameter);
        }
        // and so on
        return view('admin.candidates.index')->with('candidates', $candidates->get())->with('data', $data)->with('request', $request);
    }

然后将以下行添加到您的Shell的配置文件中(可能是sudo apt install keychain ~/.bashrc):

~/.zshrc

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

使用this article向Birk Holland致谢。