我一直在使用VSCode的远程ssh访问运行在谷歌云上的虚拟机。直到我对最近的实例做了一个快照,并在更大的VM上用它创建了一个新实例之前,它一直运行得很好。现在,当我尝试连接(通过任何方法)时,我会得到:“许可被拒绝(公开密钥)”。我花了无数个小时删除和重新添加,并重新创建我的ssh密钥,但没有任何效果。在我简单地运行"gcloud计算config-ssh“并创建一个工作配置文件之前,现在这是可行的。请帮帮忙,我什么都试过了,根本没有办法。在网站上,我可以点击ssh按钮打开他们的外壳,但不能从我的终端中打开。
发布于 2020-10-11 23:15:28
该问题可能与在VSCode连接期间缺乏对SSH私钥的标识有关。您可以指示您的私钥添加指向SSH私钥的IdentityFile选项,这在SSH配置文件中的SSH连接主机条目中:
Host vm_name
HostName external_ip
IdentityFile /path/to/ssh_private_key
Port port_number如果你或某人需要更多的信息,那就给你长话短说吧。
您可以从一开始就确保您没有损害您的SSH密钥,这是问题的根源。
创建SSH密钥
首先,创建新的ssh keys.In --用于访问远程主机的计算机,即Google实例,打开终端或cmd,然后转到ssh文件夹生成密钥。
我的ssh配置和键位于我的用户目录下,即Linux或C:\Users\my_user\.ssh on Windows上的C:\Users\my_user\.ssh on Windows。
I将cd到这些路径中的一条,取决于我目前使用的是哪条路径。
Linux:
cd /home/my_user/.sshWindows:
cd C:\Users\my_user\.ssh命令生成SSH密钥
ssh-keygen -t rsa -f my_ssh_key -C usermy_ssh_key:您的密钥名,您可以将您想要的东西更好地识别
用户:必须是您希望在Google实例上连接的用户。
这将生成名为my_ssh_key的私钥和名为my_ssh_key.pub的公钥。
或者,待在操作系统的任何位置并通过生成键的绝对路径:
Linux:
ssh-keygen -t rsa -f /home/my_user/.ssh/my_ssh_key -C userWindows:
ssh-keygen -t rsa -f C:\Users\my_user\.ssh\my_ssh_key -C user在Google authorized_keys文件中复制公钥
/home/my_user/.ssh/authorized_keys**不要重写添加在authorized_keys文件中的任何已存在的公钥。
为远程连接添加新的ssh主机条目
单击VS代码右下角的图标Remote SSH manager,单击Remote SSH: Open Configuration File选项并选择ssh配置文件以添加另一个用于远程连接的SSH条目。
配置文件必须位于SSH目录下,在生成SSH键的步骤中使用相同的路径。
Linux:
/home/my_user/.ssh/configWindows:
C:\Users\my_user\.ssh\config若要添加另一个主机,请编写以下适当更改:
Host vm_name
HostName external_ip
IdentityFile /path/to/ssh_private_key
Port port_numbervm_name:是以实际方式连接ssh命令的别名,可能是您想要的。
external_ip:-- Google实例的外部,您可以在https://console.cloud.google.com/上获得VM实例面板
IdentityFile:用于yout私有SSH键的路径,您生成的文件具有.pub扩展名。Linux:
/home/my_user/.ssh/my_ssh_keyWindows:
C:\Users\my_user\.ssh\my_ssh_key端口:Google实例的SSH的por号,22是默认端口。
现在只需选择这个主机来连接到Google实例。
有关Google平台上SSH设置的详细信息:https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys#linux-and-macos_1
https://stackoverflow.com/questions/61609035
复制相似问题