在 Windows 上使用 git 和 ssh-agent
Using git with ssh-agent on Windows
我在 Windows。我安装了 git 和 posh-git(Windows PowerShell 的一些助手)。我可以使用 ssh-add
添加密钥,并且可以使用 github 和我的网络服务器进行身份验证。我还可以使用 PowerShell 中的 git 与我的存储库进行交互。
但是有一件事我不能做:我使用 git-plus 作为 Atom 编辑器。而且我无法将其推送到我的回购协议。我的问题是什么?
posh-git and git for windows 2.7 should include everything you need to setup an 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
然后您应该会看到 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
git-plus 原子包应该可以在您执行 运行 命令时使用。我能够使用 Ctrl+Shift+H 在 atom 中调出 git 菜单,select 推送,然后推送到远程仓库(不是它在失败时不显示错误,但是我推的新分支就在那里)。
需要在打开 atom 之前启动 ssh-agent,以便设置 SSH_AUTH_SOCK 环境变量。如果它仍然不起作用,您可能需要在 PowerShell 中测试 ssh 以验证它是否可以在没有密码的情况下连接:
Set-Alias ssh "$env:ProgramFiles\git\usr\bin\ssh.exe"
ssh hostname
问题是 git 无法找到提供凭据的 ssh_agent.exe
我遵循的步骤如下
- 搜索了 ssh_agent.exe 文件驱动器
- 在 profile.example.ps1 文件
中添加了作为环境路径的路径
$env:path += ";" + "C:\Program Files\Git\usr\bin"
您可以在 powershell 中使用 Git for Windows 附带的命令获取 ssh-agent 运行:
start-ssh-agent.cmd
这将启动 ssh-agent。
然后你可以用
添加你的密钥
ssh-add ~/.ssh/namneOfPrivateKey
几年后,ssh 部分已从 posh-git
中分离出来,现在可以通过 posh-sshell
.
使用
要安装:
PowerShellGet\Install-Module posh-sshell -Scope CurrentUser
PowerShellGet\Install-Module posh-git -Scope CurrentUser
在您的 ps1 文件中:
Import-Module posh-git
Import-Module posh-sshell
Start-SshAgent
它应该会自动选取您 ~/.ssh
中的任何密钥文件。
如果您使用的是 Windows' native implementation of OpenSSH with the native ssh-agent Windows service,请确保 Windows 的 git 在安装时已配置为使用该 SSH 实现:
如果您使用捆绑的 OpenSSH 安装,git 将默认使用它,并且不会使用导入到 Windows 的本机 ssh-agent 服务中的任何密钥。当出现提示时,您需要 select“使用外部 OpenSSH”。
如果您在安装时没有创建此 selection,您应该可以通过再次 运行 安装程序来修复它。
我在 Windows。我安装了 git 和 posh-git(Windows PowerShell 的一些助手)。我可以使用 ssh-add
添加密钥,并且可以使用 github 和我的网络服务器进行身份验证。我还可以使用 PowerShell 中的 git 与我的存储库进行交互。
但是有一件事我不能做:我使用 git-plus 作为 Atom 编辑器。而且我无法将其推送到我的回购协议。我的问题是什么?
posh-git and git for windows 2.7 should include everything you need to setup an 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
然后您应该会看到 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
git-plus 原子包应该可以在您执行 运行 命令时使用。我能够使用 Ctrl+Shift+H 在 atom 中调出 git 菜单,select 推送,然后推送到远程仓库(不是它在失败时不显示错误,但是我推的新分支就在那里)。
需要在打开 atom 之前启动 ssh-agent,以便设置 SSH_AUTH_SOCK 环境变量。如果它仍然不起作用,您可能需要在 PowerShell 中测试 ssh 以验证它是否可以在没有密码的情况下连接:
Set-Alias ssh "$env:ProgramFiles\git\usr\bin\ssh.exe"
ssh hostname
问题是 git 无法找到提供凭据的 ssh_agent.exe 我遵循的步骤如下
- 搜索了 ssh_agent.exe 文件驱动器
- 在 profile.example.ps1 文件 中添加了作为环境路径的路径
$env:path += ";" + "C:\Program Files\Git\usr\bin"
您可以在 powershell 中使用 Git for Windows 附带的命令获取 ssh-agent 运行:
start-ssh-agent.cmd
这将启动 ssh-agent。
然后你可以用
添加你的密钥 ssh-add ~/.ssh/namneOfPrivateKey
几年后,ssh 部分已从 posh-git
中分离出来,现在可以通过 posh-sshell
.
要安装:
PowerShellGet\Install-Module posh-sshell -Scope CurrentUser
PowerShellGet\Install-Module posh-git -Scope CurrentUser
在您的 ps1 文件中:
Import-Module posh-git
Import-Module posh-sshell
Start-SshAgent
它应该会自动选取您 ~/.ssh
中的任何密钥文件。
如果您使用的是 Windows' native implementation of OpenSSH with the native ssh-agent Windows service,请确保 Windows 的 git 在安装时已配置为使用该 SSH 实现:
如果您使用捆绑的 OpenSSH 安装,git 将默认使用它,并且不会使用导入到 Windows 的本机 ssh-agent 服务中的任何密钥。当出现提示时,您需要 select“使用外部 OpenSSH”。
如果您在安装时没有创建此 selection,您应该可以通过再次 运行 安装程序来修复它。