繁体   English   中英

将 git 与 powershell 和 ssh 密钥与密码一起使用

[英]Using git with powershell and ssh key with passphrase

每当我在 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. 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 中使用它。

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

这是:

您不应使用 Git for Windows 附带的 Open SSH 客户端。 相反,Windows 10 有自己的与系统集成的 Open SSH 实现。 要实现这一点:

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

  2. 通过编辑位于C:\\Users\\%YOUR_USERNAME%\\.ssh\\configconfig文件,将 SSH 配置为在启动时自动将密钥添加到代理,并添加以下行:

Host *
    AddKeysToAgent yes
    IdentitiesOnly yes

如果您使用自定义名称或多个 SSH 密钥生成了 SSH 密钥,您还可以添加以下行:

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

我正在使用 Windows 10 专业版附带的 openssh。 git 与scoop install gitscoop install git )。

我必须设置GIT_SSH环境变量。

$env:GIT_SSH = (gcm ssh | select -expand source)或者对于 scoop 用户$env:GIT_SSH = (scoop which ssh)

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

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

然后查看“在 Windows 上使用 git 和 ssh-agent ”以在您的 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM