我有一个个人和专业的 Bitbucket 帐户。我可以通过 Git 命令行访问两者,但无法在 Visual Studio Code GUI 界面中使用专业帐户。
这两个账户的区别在于,我的专业账户在 SSH key 上有一个密码短语,并在我访问远程 repo 时提示我输入密码。我无法让 Visual Studio Code 提示我输入密码。
当我尝试使用 GUI 界面并推/pull 我的更改时:
我收到一条错误消息:“Git: git@bitbucket.org: Permission denied (publickey)”。
git 日志输出显示:
但是,如果我跳入集成终端并“git push”,它就会成功:
我已经阅读了很多不同的方法来解决这个问题,但似乎没有一个能解决这个问题。
我有 ssh-agent 正在运行。我已将 key 添加到代理中。 ssh-add -L
显示加载的 key 。
我已添加 "remote.SSH.showLoginTerminal": true,
和 "remote.SSH.useLocalServer": false
按照 https://code.visualstudio.com/docs/remote/troubleshooting 上提供的说明转到 VS Code settings.json这没有影响。
我添加了远程开发扩展包并按照 https://code.visualstudio.com/docs/remote/ssh 中的说明进行操作。但无法完成它们,因为 Bitbucket shell 访问被禁用
我试过添加 AddKeysToAgent yes
在另一篇文章中推荐的 .ssh/config 文件的顶部。这没有改变任何东西。
我试过 git config --global credential.helper cache
但它看起来只适用于 HTTPS,而不适用于 SSH。
尽管我已经尝试了所有,VS Code 仍然无法与上述错误连接。我可以从 key 中删除密码,它工作正常,但我想让它与密码一起工作。
我错过了什么?
最佳答案
这可能会有所帮助。来自 vs 代码文档“远程开发技巧和窍门”
https://code.visualstudio.com/docs/remote/troubleshooting
启用备用 SSH 身份验证方法
如果您连接到 SSH 远程主机并且是:
那么 VS Code 应该会自动提示你输入需要的信息。如果没有看到提示,请启用
remote.SSH.showLoginTerminal
setting在 VS 代码中。每当 VS Code 运行 SSH 命令时,此设置都会显示终端。然后,您可以在终端出现时输入您的身份验证代码、密码或密码。如果您仍然遇到问题,您可能需要在
settings.json
中设置以下属性并重试:"remote.SSH.showLoginTerminal": true,
"remote.SSH.useLocalServer": false
如果您使用的是 macOS 和 Linux 并希望减少输入密码或 token 的频率,您可以启用 ControlMaster
您的 上的功能本地机以便 OpenSSH 通过单个连接运行多个 SSH session 。启用
ControlMaster
:Host *
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 600
mkdir -p ~/.ssh/sockets
创建套接字文件夹。设置 SSH 代理
如果您使用带密码的 key 连接到 SSH 主机,则应确保 SSH Agent正在运行 本地 . VS Code 会自动将您的 key 添加到代理,因此您不必每次打开远程 VS Code 窗口时都输入密码。
要验证代理是否正在运行并且可以从 VS Code 的环境访问,请运行
ssh-add -l
在本地 VS Code 窗口的终端中。您应该会看到代理中的 key 列表(或没有 key 的消息)。如果代理未运行,请按照以下说明启动它。启动代理后,一定要重启VS Code。window :
要在 Windows 上自动启用 SSH 代理,请启动 本地管理员 PowerShell 并运行以下命令:
# Make sure you're running as an Administrator
Set-Service ssh-agent -StartupType Automatic
Start-Service ssh-agent
Get-Service ssh-agent
现在代理将在登录时自动启动。Linux:
要在后台启动 SSH 代理,请运行:
eval "$(ssh-agent -s)"
要在登录时自动启动 SSH 代理,请将这些行添加到您的 ~/.bash_profile
:if [ -z "$SSH_AUTH_SOCK" ]; then
# Check for a currently running instance of the agent
RUNNING_AGENT="`ps -ax | grep 'ssh-agent -s' | grep -v grep | wc -l | tr -d '[:space:]'`"
if [ "$RUNNING_AGENT" = "0" ]; then
# Launch a new instance of the agent
ssh-agent -s &> .ssh/ssh-agent
fi
eval `cat .ssh/ssh-agent`
fi
macOS:默认情况下,代理应在 macOS 上运行。
10/8/2020
关于git - 如何使用带密码的 SSH key 让 Visual Studio Code 访问 Bitbucket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61901874/