使用带有powershell的git和带密码的ssh密钥

时间:2018-02-17 16:51:35

标签: git powershell github ssh

每当我在powershell中输入git命令时,我都被问到:

Enter passphrase for key '/c/Users/***/.ssh/id_rsa'

此密钥是使用密码创建的:

ssh-keygen -t rsa -b 4096 -C "myemail@somewhere.com" 

我已设置ssh-agent以在启动我的powershell时加载,并设置了环境变量SSH_AUTH_SOCKSSH_AGENT_PID。 与github的连接是成功的:

ssh -T git@github.com回复:Hi tkvw! You've successfully authenticated, but GitHub does not provide shell access.

这表示使用git url而不是https

git remote -v
origin  git@github.com:tkvw/pshazz.git (fetch)
origin  git@github.com:tkvw/pshazz.git (push)

这表示代理处于活动状态且已加载密钥:

ssh-add -l
4096 b1:73:2a:11:....63:e8:2a:34 /c/Users/***/.ssh/id_rsa (RSA)

但是调用git操作:

git fetch 
Enter passphrase for key '/c/Users/***/.ssh/id_rsa':

我没有任何想法。我不想使用git bash或其他东西,我喜欢这个来自powershell。

4 个答案:

答案 0 :(得分:3)

这些都不适合我。该页面上的解决方案确实做到了:https://gist.github.com/danieldogeanu/16c61e9b80345c5837b9e5045a701c99

这里是:

您不应使用Git for Windows随附的Open SSH客户端。相反,Windows 10具有自己的Open SSH实现,该实现与系统集成在一起。要实现这一目标:

  1. 从Windows服务启动ssh-agent
  • ServicesStart Menu中键入Win+R,然后键入services.msc以启动“服务”窗口;
  • 在列表中找到OpenSSH Authentication Agent,然后双击它;
  • 在出现的OpenSSH Authentication Agent Properties窗口中,从Automatic下拉列表中选择Startup type:,然后从Start单击Service status:。确保现在显示Service status: Running
  1. 通过在Powershell中发出以下命令来配置Git以使用Windows 10实现的OpenSSH:git config --global core.sshCommand C:/Windows/System32/OpenSSH/ssh.exe;

  2. 配置SSH以在启动时通过编辑位于config的{​​{1}}文件自动将密钥添加到代理,并添加以下几行:

C:\Users\%YOUR_USERNAME%\.ssh\config

如果您生成具有自定义名称或多个SSH密钥的SSH密钥,也可以添加以下行:

Host *
    AddKeysToAgent yes
    IdentitiesOnly yes
  1. 通过发出Host github.com HostName github.com User your_user_name IdentityFile ~/.ssh/your_file_name 命令并输入密码,将SSH密钥添加到ssh-agent
ssh-add
  1. 完成!现在,如果需要,重新启动Powershell甚至Windows。

答案 1 :(得分:1)

我正在使用scoop来安装gitopenssh个软件包。我删除了这些软件包并安装了软件包git-with-openssh,现在可以正常运行了。不完全确定软件包之间有什么区别,但我希望版本不兼容。

答案 2 :(得分:1)

我正在使用Windows 10 Pro随附的openssh。 git是随瓢(scoop install git)安装的。

我必须设置GIT_SSH环境变量。

$env:GIT_SSH = (gcm ssh | select -expand source) 或独家新闻 $env:GIT_SSH = (scoop which ssh)

答案 3 :(得分:0)

您可能需要使用posh-git(集成了Git和PowerShell的PowerShell模块)

然后看" Using git with ssh-agent on Windows"为了在Powershell会话中启动ssh代理:

Import-Module ~\Documents\WindowsPowerShell\Modules\posh-git\posh-git
Set-Alias ssh-agent "$env:ProgramFiles\git\usr\bin\ssh-agent.exe"
Set-Alias ssh-add "$env:ProgramFiles\git\usr\bin\ssh-add.exe"
Start-SshAgent -Quiet