在Windows上使用git和ssh-agent

LuM*_*uMa 25 git ssh powershell ssh-agent atom-editor

我在Windows上.我安装了git和posh-git(Windows PowerShell的一些助手).我可以添加密钥,ssh-add并可以使用github和我的网络服务器进行身份验证.我也可以使用PowerShell中的git与我的存储库进行交互.

但有一件事我不能做:我使用git-plus作为Atom编辑器.我不会把它推到我的回购.我的问题是什么?

Gre*_*ray 41

用于Windows 2.7的posh-gitgit应该包含设置ssh-agent所需的一切.安装模块后,您可以使用以下内容启动代理:

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)

然后,您应该看到设置了SSH_AUTH_SOCK环境变量:

C:\Code\Go\src\bosun.org\cmd\scollector [master]> gci env:SSH_AUTH_SOCK

Name                           Value
----                           -----
SSH_AUTH_SOCK                  /tmp/ssh-6ORcVQvRBZ2e/agent.11668
Run Code Online (Sandbox Code Playgroud)

运行命令时,git-plus atom包应该能够使用哪个.我能够使用Ctrl + Shift + H调出原子中的git菜单,选择push,然后推送到远程仓库(如果失败则不显示错误,但我推送的新分支就在那里) .

在打开atom之前需要启动ssh-agent,以便设置SSH_AUTH_SOCK环境变量.如果它仍然不起作用,您可能希望在PowerShell中测试ssh以验证它可以在没有密码的情况下连接:

Set-Alias ssh "$env:ProgramFiles\git\usr\bin\ssh.exe"
ssh hostname
Run Code Online (Sandbox Code Playgroud)


Jon*_*dén 21

几年以来,ssh 部分已经从 中分离出来posh-git,现在可以通过posh-sshell.

安装:

PowerShellGet\Install-Module posh-sshell -Scope CurrentUser
PowerShellGet\Install-Module posh-git -Scope CurrentUser
Run Code Online (Sandbox Code Playgroud)

在你的 ps1 文件中:

Import-Module posh-git
Import-Module posh-sshell
Start-SshAgent
Run Code Online (Sandbox Code Playgroud)

它应该会自动拾取您的~/.ssh.


Aje*_*i32 11

如果您将Windows 的 OpenSSH 本地实现本机 ssh-agent Windows 服务结合使用,请确保在安装时将 Windows 版 git 配置为使用该 SSH 实现:

Windows 版 Git 安装程序的屏幕截图; 选择 SSH 可执行文件。 选择“使用外部 OpenSSH”选项。

如果您使用捆绑的 OpenSSH 安装,git 将默认使用该安装,并且不会使用导入到 Windows 本地 ssh-agent 服务中的任何密钥。当出现提示时,您需要选择“使用外部 OpenSSH”。

如果您在安装时没有进行此选择,则只需再次运行安装程序即可修复该问题。


Gar*_*ley 8

您可以在Powershell中使用Git for Windows随附的命令来运行ssh-agent:

 start-ssh-agent.cmd
Run Code Online (Sandbox Code Playgroud)

这将启动ssh-agent。

然后您可以使用添加密钥

 ssh-add ~/.ssh/namneOfPrivateKey
Run Code Online (Sandbox Code Playgroud)

在这里找到:https : //docs.microsoft.com/zh-cn/azure/devops/repos/git/use-ssh-keys-to-authenticate?view=azure-devops

  • 此外,您可能需要使用“C:\Program Files\Git\usr\bin\ssh-add”,而不是“ssh-add”。`ssh-add` 解析为 `C:\Windows\System32\OpenSSH\ssh-add`,但 git 在 `C:\Program Files\Git\usr\bin\ssh-add` 中提供了另一个版本。`start-ssh-agent.cmd` 有一个错误,它无法识别 `ssh-agent` 位于 `PATH` 中,因此它使用 git 版本。由于它使用 git 的 `ssh-agent`,因此您也需要使用 git 的 `ssh-add`。因此,您需要指定git版本的完整路径。这会将示例命令更改为 `"C:\Program Files\Git\usr\bin\ssh-add" "%USERPROFILE%\.ssh\namneOfPrivateKey"`。 (3认同)

Gio*_*tri 6

git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe"

全局配置以使用 OpenSSH 代理。添加您的密钥

ssh-add.exe <path to ssh key>