Jer*_*amy 5 git bitbucket visual-studio-code vscode-settings
我有一个个人和专业的 Bitbucket 帐户。我可以通过 Git 命令行访问两者,但无法在 Visual Studio Code GUI 界面中使用专业帐户。
这两个账户的区别在于,我的专业账户在 SSH 密钥上有一个密码短语,并在我访问远程 repo 时提示我输入密码。我无法让 Visual Studio Code 提示我输入密码。
我收到一条错误消息“Git: git@bitbucket.org: Permission denied (publickey)”。
git 日志输出显示:
但是,如果我跳入集成终端并 'git push' 它是成功的:
我已经阅读了很多不同的方法来解决这个问题,但似乎没有一个能解决这个问题。
我有 ssh-agent 正在运行。我已将密钥添加到代理中。ssh-add -L
显示加载的密钥。
我已按照https://code.visualstudio.com/docs/remote/troubleshooting 上提供的说明将"remote.SSH.showLoginTerminal": true,
和添加"remote.SSH.useLocalServer": false
到 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 仍然无法与上述错误连接。我可以从密钥中删除密码,它工作正常,但我想让它与密码一起工作。
我错过了什么?
小智 2
这可能会有所帮助。来自 vs code 文档“远程开发提示和技巧” https://code.visualstudio.com/docs/remote/troubleshooting
如果您要连接到 SSH 远程主机并且是:
那么 VS Code 应该会自动提示您输入所需的信息。如果没有看到提示,请在 VS Code 中启用该remote.SSH.showLoginTerminal
设置。每当 VS Code 运行 SSH 命令时,此设置都会显示终端。然后,当终端出现时,您可以输入您的身份验证码、密码或密码。
如果仍然遇到问题,您可能需要输入以下属性settings.json
并重试:
"remote.SSH.showLoginTerminal": true,
"remote.SSH.useLocalServer": false
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 macOS 和 Linux,并且想要减少输入密码或令牌的频率,您可以ControlMaster
在本地计算机上启用该功能,以便 OpenSSH 通过单个连接运行多个 SSH 会话。
启用ControlMaster
:
将如下条目添加到您的 SSH 配置文件中:
Host *
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 600
Run Code Online (Sandbox Code Playgroud)
然后运行mkdir -p ~/.ssh/sockets
创建sockets文件夹。
如果您使用带有密码的密钥连接到 SSH 主机,则应确保SSH 代理在本地运行。VS Code 会自动将您的密钥添加到代理,因此您不必每次打开远程 VS Code 窗口时都输入密码。
要验证代理是否正在运行并且可以从 VS Code 环境访问,请ssh-add -l
在本地 VS Code 窗口的终端中运行。您应该会看到代理中的密钥列表(或没有密钥的消息)。如果代理未运行,请按照以下说明启动它。启动代理后,请务必重新启动 VS Code。
视窗:
要在 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
Run Code Online (Sandbox Code Playgroud)
现在代理将在登录时自动启动。
Linux:
要在后台启动 SSH 代理,请运行:
eval "$(ssh-agent -s)"
Run Code Online (Sandbox Code Playgroud)
要在登录时自动启动 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
Run Code Online (Sandbox Code Playgroud)
苹果系统:
默认情况下,代理应在 macOS 上运行。
2020年10月8日
归档时间: |
|
查看次数: |
4904 次 |
最近记录: |