权限被拒绝(公钥,密码)



我使用VS Code作为我的编辑器,并使用BlueHost来托管一系列域和网站。我已经将git安装到BlueHost上并在那里创建了一个存储库。我已经在本地克隆了该存储库。

在命令行上使用git push origin master推送提交时,系统会提示我输入我的 BlueHost 帐户的密码,并且一切都按预期运行。但是,当使用VS Code上"源代码管理"选项卡中的"推送"菜单选项时,根本没有提示我并收到错误消息:

Permission denied (publickey,password).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.

我阅读了大量类似提出的问题,并尝试了许多潜在的解决方案,包括在BlueHost上生成SSH密钥并将该密钥放在我的.ssh文件夹中(使用公钥和私钥尝试(,以及使用ssh-keygen生成密钥并将公钥导入BlueHost,但没有任何进展。我开始认为这个问题可能是我正在使用的特定服务组合的一个极端情况。

有什么想法吗?

您的问题似乎是您已正确生成SSH密钥,但尚未告诉计算机使用它。要验证这一点,请尝试使用ssh -v user@hostname(详细模式(,这将向您显示计算机尝试向远程主机提供的密钥。

如果这确实是问题所在,则很容易解决。您需要将 SSH 密钥添加到 SSH 代理,以便您的计算机知道尝试使用它。 我不知道你用的是什么操作系统,但例如,在Mac OS上,你会做ssh-add path/to/key-file。GitHub 在 https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/有一套很好的说明,你应该遵循这些指令(这些说明应该适用于任何 Git 远程,而不仅仅是 GitHub(。VS Code 的 Git 模块中可能有某种密钥管理 UI;我从来没有用过它,所以我不知道。

确保你的 SSH 配置没问题(在/etc/ssh/sshd_config 中用于 debian/ubuntu(:

  • 仅激活一个身份验证方法,其他方法声明(未注释(并设置为"no":PubkeyAuthentication,RSA(如果存在(和PasswordAuthentication。
    • 最终检查是否需要 PermitRootLogin 或 UseLogin
    • 如果需要,请检查带有authorized_keys的行是否未注释

然后用旧的/etc/init.d/ssh 重启重新启动 SSHD(是的,是的,有更好的方法,但这仍然有效并做正确的事情:-((

相关内容

最新更新