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

Den*_*nge 5 git ssh powershell github

每当我git在Powershell中输入命令时,都会询问我:

Enter passphrase for key '/c/Users/***/.ssh/id_rsa'
Run Code Online (Sandbox Code Playgroud)

该密钥使用密码创建:

ssh-keygen -t rsa -b 4096 -C "myemail@somewhere.com" 
Run Code Online (Sandbox Code Playgroud)

我已经设置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网址代替https

git remote -v
origin  git@github.com:tkvw/pshazz.git (fetch)
origin  git@github.com:tkvw/pshazz.git (push)
Run Code Online (Sandbox Code Playgroud)

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

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

但是调用git操作:

git fetch 
Enter passphrase for key '/c/Users/***/.ssh/id_rsa':
Run Code Online (Sandbox Code Playgroud)

我没有想法了。我不想使用git bash任何东西,我喜欢在Powershell中使用它。

Phi*_*ber 12

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

这里是:

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

  1. ssh-agent从 Windows 服务启动:
  • 键入ServicesStart MenuWin+R,然后键入services.msc启动服务窗口;
  • OpenSSH Authentication Agent在列表中找到并双击它;
  • OpenSSH Authentication Agent Properties窗口出现,选择AutomaticStartup type:下拉菜单,然后单击StartService status:。确保它现在说Service status: Running
  1. 配置Git的发出在PowerShell中的以下命令来使用Windows 10执行的OpenSSH:git config --global core.sshCommand C:/Windows/System32/OpenSSH/ssh.exe;

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

Host *
    AddKeysToAgent yes
    IdentitiesOnly yes
Run Code Online (Sandbox Code Playgroud)

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

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


xor*_*ves 5

我正在使用 Windows 10 专业版附带的 openssh。git 是用 scoop ( scoop install git)安装的。

我必须设置GIT_SSH环境变量。

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


Von*_*onC 0

您可能需要使用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
Run Code Online (Sandbox Code Playgroud)