Tri*_*ibo 14 git ssh visual-studio-2017
我正在尝试使用Visual Studio 2017中的SSH连接到Git存储库(在Bitbucket上)(据我所知,它支持用于Git的SSH).我已经设置了所有东西,将存储库克隆到我的计算机上,然后我可以提交,但是如果我尝试执行某些操作,则会使用以下消息(来自Visual Studio的"输出"窗口)失败:
Error encountered while fetching: Git failed with a fatal error.
fatal: Could not read from remote repository.
Run Code Online (Sandbox Code Playgroud)
从命令提示符尝试它,我得到这些稍微提供信息的消息:
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Run Code Online (Sandbox Code Playgroud)
从Git Bash我尝试打开SSH代理,添加我的私钥和获取,它似乎工作(或者至少我没有得到任何消息,不像代理未启动或未添加密钥):
eval `ssh-agent`
ssh-add ~/.ssh/xxxx
git fetch
Run Code Online (Sandbox Code Playgroud)
但是Visual Studio仍然无法连接.我也尝试从Windows命令提示符执行相同的操作:
ssh-agent
set SSH_AUTH_SOCK=/tmp/ssh-SIAryCa61iz9/agent.11128
set SSH_AGENT_PID=9804
ssh-add xxxx
git fetch
Run Code Online (Sandbox Code Playgroud)
但我仍然得到同样的错误.
我已经将公钥添加到Bitbucket,并ssh -T git@bitbucket.org
输出"以xxxx登录".此外,我可以使用SourceTree正确连接并将私钥添加到Pageant(我使用的密钥ssh-add
具有所需的OpenSSH格式,我是从.ppk格式创建的).
Tri*_*ibo 19
我终于设法让它工作,使用PuTTY的Pageant身份验证代理而不是ssh-agent
,并遵循这里提到的步骤(它适用于Visual Studio Code,但适用于Visual Studio 2017,我想它应该适用于使用"官方"的任何应用程序Git for Windows).
由于我已经安装了Pageant并且创建了一个.ppk私钥,我只需要让Git使用Pageant,通过创建GIT_SSH
Windows环境变量并将其设置为"plink.exe"文件的路径(在PuTTY安装中,例子C:\Program Files (x86)\PuTTY\plink.exe
).完成后,我只需要打开Pageant并添加私钥(并在使用存储库时保持打开状态),Visual Studio将能够正常连接和发出命令.
还有另一种方法对我有用。
似乎VS2017自行运行ssh连接,因此它会忽略ssh-add添加的密钥,而仅使用默认路径的密钥
这是一个解决方案,它允许通过 SSH 将 Visual Studio(和 Git)连接到多个存储库,必要时使用单独的私钥和 ssh 身份验证代理来处理密钥的密码。
这对企业用户很有好处,因为您不需要计算机的管理员权限来执行以下步骤。
它在 Bitbucket 的示例中进行了解释,但可以扩展到 Github 和其他任何东西。
在打开一个项目时,Visual Studio 会要求您下载并安装 Git 包。您可以使用 Visual Studio 通知中提供的链接或使用此链接来执行此操作。
仅为当前用户安装 Git。默认情况下使用安装选项。
打开命令提示符并进入您找到的文件夹:
cd "%LOCALAPPDATA%\Programs\Git\usr\bin\"
Run Code Online (Sandbox Code Playgroud)创建一个文件夹来存储您的密钥(如果它不存在)
mkdir "%HOME%\.ssh"
Run Code Online (Sandbox Code Playgroud)生成新的 ssh 密钥:
ssh-keygen -t rsa -b 4096 -C "<your email of id>" -f "%HOME%/.ssh/id_rsa_<file name>"
Run Code Online (Sandbox Code Playgroud)
例如:
ssh-keygen -t rsa -b 4096 -C "nsm" -f "%HOME%/.ssh/id_rsa_nsm"
Run Code Online (Sandbox Code Playgroud)
建议指定他们的密钥密码。记住密码,忘记了就找不回来了!
ssh-rsa AAAAB3Nza<skipped>BkPqxFQ== nsm
在“%HOME%/.ssh/”文件夹中创建配置文件,内容如下:
AddKeysToAgent yes
Host <Bitbucket FQDN or any label>
HostName <Bitbucket FQDN>
User git
IdentityFile ~/.ssh/id_rsa_<file name>
Run Code Online (Sandbox Code Playgroud)
例如:
AddKeysToAgent yes
Host <Bitbucket FQDN or any label>
HostName <Bitbucket FQDN>
User git
IdentityFile ~/.ssh/id_rsa_<file name>
Run Code Online (Sandbox Code Playgroud)
输出:
AddKeysToAgent yes
Host bitbucket.org
HostName bitbucket.org
User git
IdentityFile ~/.ssh/id_rsa_nsm
Run Code Online (Sandbox Code Playgroud)
AddKeysToAgent yes选项将根据需要将配置的私钥添加到 ssh 身份验证代理
每次使用私钥时都要输入密码是一种乏味的负担。为了避免这种情况,我们将使用 ssh 身份验证代理
在找到 ssh-keygen 实用程序的文件夹中(默认为: "%LOCALAPPDATA%\Programs\Git\usr\bin\"),创建包含以下内容的ssh.cmd文件:
cd %HOME%/.ssh/
type config
Run Code Online (Sandbox Code Playgroud)
该脚本将在执行 ssh.exe 之前加载 ssh 身份验证代理,并允许 ssh.exe 通过 SSH_AUTH_SOCK 环境变量中指定的套接字与其通信。
从命令提示符执行以下命令:
AddKeysToAgent yes
Host bitbucket.org
HostName bitbucket.org
User git
IdentityFile ~/.ssh/id_rsa_nsm
Run Code Online (Sandbox Code Playgroud)将链接中的 FQDN 替换为您在./ssh/config文件中提供的标签。这将允许您在连接到 Bitbucket 或 Github 存储库时使用具有多个键的配置部分
归档时间: |
|
查看次数: |
28496 次 |
最近记录: |