首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Powershell中的SSH密钥推送到两个不同的GitHub帐户?

如何使用Powershell中的SSH密钥推送到两个不同的GitHub帐户?
EN

Stack Overflow用户
提问于 2020-03-15 19:08:23
回答 1查看 230关注 0票数 3

我在Windows 10上,安装了Git for Windows。我正在将代码推送到两个不同的GitHub帐户,并试图设置我的SSH代理来使用两个密钥(每个帐户一个)。

这是我的~\.ssh\config

代码语言:javascript
复制
Host github.com-userone
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa

Host github.com-usertwo
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_usertwo

如果我使用Git Bash推/拉,它会正确工作,但我也希望能够使用Powershell。当我尝试从Powershell进行推拉时,我会得到“请确保您有正确的访问权限”错误。如果我从Powershell运行start-ssh-agent.cmd,那么git push适用于该Powershell实例。

如果我将start-ssh-agent.cmd添加到我的profile.ps1配置文件中,那么SSH代理将启动,并且git push工作正常,但这似乎破坏了Powershell配置文件的其他方面(如下所示)。Import-ModuleSet-Theme不再工作了。我没有任何错误,我只是不再得到我的时髦或噢-我的吉特造型。

代码语言:javascript
复制
Import-Module oh-my-posh
Import-Module posh-git
Set-Theme Paradox
Set-Location "c:\users\brubin\documents\visual studio 2017\projects"
start-ssh-agent.cmd

我找到的大多数让它工作的指令都涉及运行eval $(ssh-agent -s),但是eval在Powershell中不起作用。

如何设置它,以便可以使用Powershell从两个不同的GitHub帐户推拉?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-15 23:03:48

首先,只有在创建私钥时使用密码保护这些私钥时,才需要ssh代理。

其次,确保使用正确的SSH URL表单,引用那些~/.ssh/config条目:

代码语言:javascript
复制
github.com-usertwo:<usertwo>/myRepo

正如dahlbyk/posh-git issue 640中提到的

与其使用

start-ssh-agent.cmd,不如使用Windows101803上内置的OpenSSH。

要使用此方法,请执行以下步骤:

从PowerShell窗口运行get-command ssh.exe。您应该看到ssh.exe位于C:\Windows\System\OpenSSH\ssh.exe

如果您没有得到任何结果,打开Windows 10设置应用程序的应用程序和功能部分,然后按下“管理可选功能”链接。一旦打开,选择OpenSSH客户端来添加该特性。完成后,再次打开PowerShell,并查看get-command ssh.exe是否返回C:\Windows\System\OpenSSH\ssh.exe

现在,让我们启动ssh代理服务,并将其配置为在重新启动时自动启动。

以管理员身份打开PowerShell并执行:

Get-Service agent\ Set-Service -StartupType -PassThru自动启动-服务

Cd到您的$home\.ssh dir并执行ssh-add .\<private-key-file>将您的私钥文件(和密码)添加到ssh代理。

最后一步是让Git使用Windows本机ssh.exe

要做到这一点,请执行:git config --global core.sshCommand C:/WINDOWS/System32/OpenSSH/ssh.exe

就这样!现在ssh-代理正在运行并为您的密码服务。在重新启动后,它将继续这样做(而不必重新输入密码)。

更好的是,ssh-agent将适用于从“开始”菜单(而不是PowerShell控制台)启动的应用程序(比如Visual )--您必须使用start-ssh-agent.cmd

注意:

Services中输入了"Services“,并得到了一个窗口,其中列出了当前安装在机器上的所有服务。

我注意到,"**OpenSSH Authentication Agent**",旁边写着"**Stopped**".

我运行了Get-Service ssh-agent | Set-Service -StartupType Manual -PassThru,然后运行了Start-Service ssh-agent,它成功了。

好像服务被禁用了什么的。我从来没有在Windows上碰过这些东西,在默认情况下,它可能是“停止”的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60696613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档