每当我在 powershell 中输入 git
命令时,我都会被问到:
Enter passphrase for key '/c/Users/***/.ssh/id_rsa'
此 key 是使用密码短语创建的:
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
回复:你好 tkvw!您已成功通过身份验证,但 GitHub 不提供 shell 访问。
这表明使用了 git url 而不是 https
。
git remote -v
origin git@github.com:tkvw/pshazz.git (fetch)
origin git@github.com:tkvw/pshazz.git (push)
这表明代理处于事件状态并且 key 已加载:
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 中工作。
最佳答案
这些都不适合我。此页面上的解决方案确实如此:https://gist.github.com/danieldogeanu/16c61e9b80345c5837b9e5045a701c99
这里是:
您不应使用 Git for Windows 附带的 Open SSH 客户端。相反,Windows 10 有自己的与系统集成的 Open SSH 实现。要实现这一点:
- 启动
ssh-agent
来自 Windows 服务:
- 输入
Services
在Start Menu
或Win+R
然后输入services.msc
启动服务窗口; - 找到
OpenSSH Authentication Agent
在列表中并双击它; - 在
OpenSSH Authentication Agent Properties
在出现的窗口中,选择Automatic
来自Startup type:
下 pull 并单击Start
来自Service status:
.确保它现在显示Service status: Running
.
通过在 Powershell 中发出以下命令,将 Git 配置为使用 OpenSSH 的 Windows 10 实现:
git config --global core.sshCommand C:/Windows/System32/OpenSSH/ssh.exe
;通过编辑
config
将 SSH 配置为在启动时自动将 key 添加到代理文件位于C:\Users\%YOUR_USERNAME%\.ssh\config
, 并添加以下行:
Host *
AddKeysToAgent yes
IdentitiesOnly yes
如果您使用自定义名称或多个 SSH key 生成 SSH key ,您还可以添加以下行:
Host github.com
HostName github.com
User your_user_name
IdentityFile ~/.ssh/your_file_name
- 将您的 SSH key 添加到
ssh-agent
通过发布ssh-add
命令并输入您的密码:
ssh-add $HOME/.ssh/your_file_name
- 完成!现在,如有必要,请重新启动您的 Powershell 甚至 Windows。
关于git - 使用带有 powershell 的 git 和带有密码的 ssh key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48843643/