每当我在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_SOCK
和SSH_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。
答案 0 :(得分:3)
这些都不适合我。该页面上的解决方案确实做到了:https://gist.github.com/danieldogeanu/16c61e9b80345c5837b9e5045a701c99
这里是:
您不应使用Git for Windows随附的Open SSH客户端。相反,Windows 10具有自己的Open SSH实现,该实现与系统集成在一起。要实现这一目标:
ssh-agent
:Services
或Start Menu
中键入Win+R
,然后键入services.msc
以启动“服务”窗口; OpenSSH Authentication Agent
,然后双击它; OpenSSH Authentication Agent Properties
窗口中,从Automatic
下拉列表中选择Startup type:
,然后从Start
单击Service status:
。确保现在显示Service status: Running
。通过在Powershell中发出以下命令来配置Git以使用Windows 10实现的OpenSSH:git config --global core.sshCommand C:/Windows/System32/OpenSSH/ssh.exe
;
配置SSH以在启动时通过编辑位于config
的{{1}}文件自动将密钥添加到代理,并添加以下几行:
C:\Users\%YOUR_USERNAME%\.ssh\config
如果您生成具有自定义名称或多个SSH密钥的SSH密钥,也可以添加以下行:
Host *
AddKeysToAgent yes
IdentitiesOnly yes
Host github.com
HostName github.com
User your_user_name
IdentityFile ~/.ssh/your_file_name
命令并输入密码,将SSH密钥添加到ssh-agent
:ssh-add
答案 1 :(得分:1)
我正在使用scoop
来安装git
和openssh
个软件包。我删除了这些软件包并安装了软件包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