vscode 中的 ssh 错误:权限被拒绝(公钥、密码)

问题描述 投票:0回答:11

所以我使用 VSCode 中的“远程 - SSH”插件来连接到我的 VPS 并编辑我的代码。我失去了连接,然后不得不在 30 多分钟后硬重置它。现在我无法再使用 VSCode 访问它 [putty 有效],并且在 ssh 中启动 VSCode 或重新加载连接时得到

Could not establish connection to "[vps-ip]". Permission denied (publickey,password).

我每次也收到这个日志。

我需要做什么才能让它再次正常工作?

这是我用 [...] 替换了一些内容的日志

[18:42:52.792] Log Level: 2
[18:42:52.795] [email protected]
[18:42:52.795] win32 x64
[18:42:52.797] SSH Resolver called for "ssh-remote+[vps-ip]", attempt 1
[18:42:52.797] SSH Resolver called for host: [vps-ip]
[18:42:52.798] Setting up SSH remote "[vpsip]"
[18:42:52.801] Acquiring local install lock: C:\Users\[myname]\AppData\Local\Temp\vscode-remote-ssh-[vps-ip]-install.lock
[18:42:52.816] Looking for existing server data file at c:\Users\[myname]\AppData\Roaming\Code\User\globalStorage\ms-vscode-remote.remote-ssh\vscode-ssh-host-[vps-ip]-[id]\data.json
[18:42:52.817] Using commit id "[id]" and quality "stable" for server
[18:42:52.817] Install and start server if needed
[18:42:52.820] Checking ssh with "ssh -V"
[18:42:52.875] > OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5
[18:42:52.876] Checking ssh with "C:\WINDOWS\System32\OpenSSH\ssh.exe -V"
[18:42:52.917] > OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5
[18:42:52.917] Checking ssh with "C:\Program Files\Git\usr\bin\ssh.exe -V"
[18:42:52.993] > OpenSSH_8.1p1, OpenSSL 1.1.1d  10 Sep 2019
[18:42:52.994] askpass server listening on \\.\pipe\vscode-ssh-askpass-[askpass]-sock
[18:42:52.995] Spawning local server with {"ipcHandlePath":"\\\\.\\pipe\\vscode-ssh-askpass-[askpass]-sock","sshCommand":"C:\\Program Files\\Git\\usr\\bin\\ssh.exe","sshArgs":["-v","-T","-D","55323","[vps-ip]"],"dataFilePath":"c:\\Users\\[myname]\\AppData\\Roaming\\Code\\User\\globalStorage\\ms-vscode-remote.remote-ssh\\vscode-ssh-host-[vps-ip]-[id]\\data.json"}
[18:42:52.995] Local server env: {"DISPLAY":"1","ELECTRON_RUN_AS_NODE":"1","SSH_ASKPASS":"c:\\Users\\[myname]\\.vscode\\extensions\\ms-vscode-remote.remote-ssh-0.50.0\\out\\local-server\\askpass.bat","VSCODE_SSH_ASKPASS_NODE":"C:\\Users\\[myname]\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe","VSCODE_SSH_ASKPASS_MAIN":"c:\\Users\\[myname]\\.vscode\\extensions\\ms-vscode-remote.remote-ssh-0.50.0\\out\\askpass-main.js","VSCODE_SSH_ASKPASS_HANDLE":"\\\\.\\pipe\\vscode-ssh-askpass-[askpass]-sock"}
[18:42:53.021] Spawned 30572
[18:42:53.125] > local-server> Spawned ssh: 12024
[18:42:53.165] stderr> OpenSSH_8.1p1, OpenSSL 1.1.1d  10 Sep 2019
[18:42:53.359] stderr> debug1: Server host key: [the key]
[18:42:53.558] stderr> 'C:\Users\[only my sirname]' is not recognized as an internal or external command,
[18:42:53.558] stderr> operable program or batch file.
[18:42:53.607] stderr> Permission denied, please try again.
[18:42:53.638] stderr> 'C:\Users\[only my sirname]' is not recognized as an internal or external command,
[18:42:53.638] stderr> operable program or batch file.
[18:42:53.686] stderr> Permission denied, please try again.
[18:42:53.716] stderr> 'C:\Users\[only my sirname]' is not recognized as an internal or external command,
[18:42:53.716] stderr> operable program or batch file.
[18:42:53.767] stderr> root@[vps-ip]: Permission denied (publickey,password).
[18:42:53.771] > local-server> ssh child died, shutting down
[18:42:53.779] Local server exit: 0
[18:42:53.780] Received install output: OpenSSH_8.1p1, OpenSSL 1.1.1d  10 Sep 2019
debug1: Server host key: [key]
'C:\Users\[only my sirname]' is not recognized as an internal or external command,
operable program or batch file.
Permission denied, please try again.
'C:\Users\[only my sirname]' is not recognized as an internal or external command,
operable program or batch file.
Permission denied, please try again.
'C:\Users\[only my sirname]' is not recognized as an internal or external command,
operable program or batch file.
root@[vps-ip]: Permission denied (publickey,password).

[18:42:53.781] Resolver error: Permission denied (publickey,password).
[18:42:53.783] ------

EDIT2:所以显然这只是我的一台电脑上出现的问题,重新安装没有帮助

ssh visual-studio-code vps vscode-remote
11个回答
12
投票

解决了!对于大多数人来说,问题在于您没有使 .pem 文件可执行。对于 mac,您需要

chmod 400 yourkey.pem
,我认为对于 linux 需要 755,不确定 Windows,然后将密钥移至您的 ssh 文件夹中
mv yourkey.pem ~/.ssh

然后配置你的 vscode ssh 配置文件。

Host YourHost
   HostName ec32-364-207-287-109.compute-1.amazonaws.com
   User ubuntu
   IdentityFile ~/.ssh/yourkey.pem

6
投票

远程 ssh 扩展版本 0.50.0 似乎破坏了与此相关的内容。请参阅我在 Github 上打开的问题: https://github.com/microsoft/vscode-remote-release/issues/2581

作为一种解决方法,使用 0.49.0 版本对我来说很有效。为此,右键单击扩展名并单击“安装另一个版本...”,然后在对话框中选择 0.49.0。希望这个问题可以在次要版本更新中得到解决。


4
投票

我在 vscode 上使用 0.49+ 版本的远程 SSH 时也遇到了同样的问题。我所做的是

cmd-p
> 连接到 SSH 主机 > 配置 SSH 主机,在我的配置文件中,我注意到有两个条目:

Host <ip>
HostName <name>
User <gungoonsoundcloudwhatsup>
IdentityFile ~/.ssh/file.pub

Host <ip>
HostName <name>
User <gungoonsoundcloudwhatsup>
IdentityFile ~/.ssh/file.pub

所以我删除了一个并将

IdentityFile
.pub
文件更改为适当的
rsa

这对我有用。


2
投票

最近遇到此问题的任何人可能都会对此感兴趣。我当时运行的是最新的 VS Code(版本 1.74.3,来自 2023 年 1 月 9 日更新)。

我做了什么:

  1. 打开命令面板
  2. 选定的远程 SSH:连接到主机...
  3. 输入:
    ssh user@host
    ,其他尝试时:
    ssh host

在多次尝试登录失败但仍然收到发布的错误后,我注意到命令面板提示的灰色指令提到了

"... or enter user@host"
。考虑到该指令可能已从以前版本的 VS Code 中更改,我相应地更改了我的命令。我删除了命令的“ssh”部分,这有效:
user@host


1
投票

下面是我使用的适合我的配置。

Host vs-ssh.visualstudio.com
HostName vs-ssh.visualstudio.com
User git
IdentityFile file_path
IdentitiesOnly yes

1
投票

就我而言,我必须将 User 属性添加到 ssh 配置中,因为它使用我当前设备的帐户名称 (

nemothecollector
),而
root
是正确的帐户名称。

Host digital-ocean-vps-as-root
+   User root
    HostName 157.245.150.193
    IdentityFile ~/.ssh/digital_ocean_vps
    IdentitiesOnly yes
    Port 22

1
投票

对我来说,问题是 IdentityFile 路径。在命令行上,我只是给出了

.pem
文件的名称。 VS Code 需要
~/.ssh/config
文件来提供绝对路径。此外,我的钥匙里有空格。所以我必须将 absolute 路径用 quotes 括起来,如下所示:
"~/.ssh/key with spaces"
。使用
$HOME
变量对我来说不起作用。希望这对某人有帮助。


0
投票

可能是VSCODE扩展设置中的time_out太低导致的。您可以增加该值并重试:

ctrl + ,
,然后在
REMOTE SSH
部分下找到
extension
,然后将
Connect Timeout
增加到
60


0
投票

这个问题花了一个小时。

我只有一个建议。

仔细检查您的用户名和/或 IP 地址。


0
投票

花了3个多小时我找到了解决方案。 对于那些使用 DigitalOcean Droplet 的用户,您需要手动更改 Droplet 上的“authorized_keys”,即使您将 ssh 公钥添加到设置中,它也不会添加到您的 Droplet 中。

这是您需要做的:

1 - 如果您已经从另一台计算机访问 Droplet,请使用它,否则您可以从仪表板使用浏览器控制台。

2 - 您需要在此文件上添加 ssh 密钥:

~/.ssh/authorized_keys
只需执行
sudo nano ~/.ssh/authorized_keys
并添加您的 ssh 密钥即可。

3 - 使用

sudo systemctl reload ssh

重新启动 ssh 服务

就是这样!我希望我解决了某人的问题。

来源:https://serverfault.com/questions/938870/permission-denied-publickey-mac

祝你有美好的一天。


0
投票

适用于 Mac m2 pro 和 AWS Linux 2

  • chmod 700 key.pem
  • mv yourkey.pem ~/.ssh
  • 配置文件

托管任意名称
主机名 1.1.1.1
用户$主机名
身份文件~/.ssh/key.pem

© www.soinside.com 2019 - 2024. All rights reserved.