我想在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无法正常工作
答案 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命令的外壳。
一种解决方法是重新生成这些密钥(首先使用现有密钥打开会话之后),然后:
~/.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致谢。