whe*_*rby 4 ssh public-key google-cloud-platform
当我使用 ssh 登录谷歌云实例时,我遇到了如下问题
$ ssh -i DD2 root@35.237.32.84
Permission denied (publickey).
Run Code Online (Sandbox Code Playgroud)
经过一番测试,我发现错误的原因是公钥签名与google cloud的账号不一致:
例如 :
scuio33@chef-server:~$
Run Code Online (Sandbox Code Playgroud)
在这里,您的帐户是 scuio33,那么您的 pub 文件将是:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBpNeFZyXXXehjPuGCkEjb/t
laNQt0fztORSCFFQIoKHkQzi7SNhp48kagyOHDNj6mY1LmVZB/sIj2oCa1AFupoFuBYc/XILP
rTX60fIlnBYkHl+6Kq/TX2hzKv scuio33
Run Code Online (Sandbox Code Playgroud)
scuio33 将与您的 google 帐户完全相同,否则会出现“权限被拒绝(公钥)”的问题。只有谷歌云有这个限制。
这不是一个“问题”。但是 ssh 到谷歌云失败的提示。
Pro*_*ton 12
我第一次尝试在 Google Cloud Platform 上设置 Kubernetes 时遇到了这个问题。
每次尝试从终端通过 SSH 连接到我的实例时,我都会遇到以下错误:
promisepreston@52.174.274.72: Permission denied (publickey)
Run Code Online (Sandbox Code Playgroud)
这是我解决它的方法:
在您的工作站上打开一个终端并使用该ssh-keygen命令生成一个新密钥。指定-C标志以使用您的用户名添加评论。
ssh-keygen -t rsa -f ~/.ssh/[KEY_FILENAME] -C [USERNAME]
Run Code Online (Sandbox Code Playgroud)
就我而言,它是:
ssh-keygen -t rsa -f ~/.ssh/kubernetes-trial -C promisepreston
Run Code Online (Sandbox Code Playgroud)
导航到.ssh目录:
cd ~/.ssh
Run Code Online (Sandbox Code Playgroud)
限制对您的私钥的访问,以便只有您可以读取它,而没有人可以写入它。
chmod 400 [KEY_FILENAME]
Run Code Online (Sandbox Code Playgroud)
就我而言,它是:
chmod 400 kubernetes-trial
Run Code Online (Sandbox Code Playgroud)
双击kubernetes-trial.pub打开它或使用以下cat命令在控制台上打印它:
sudo cat kubernetes-trial.pub
Run Code Online (Sandbox Code Playgroud)
公共 SHH 密钥应采用以下格式:
ssh-rsa [KEY_VALUE] [USERNAME]
Run Code Online (Sandbox Code Playgroud)
或者
ssh-rsa [KEY_VALUE] google-ssh {"userName":"[USERNAME]","expireOn":"[EXPIRE_TIME]"}
Run Code Online (Sandbox Code Playgroud)
就我而言,它是:
ssh-rsa AAAAB3MzaC1yc2EAAAADAQABAAABAQDdLjLb2b97m9NSK5Z8+j6U8awAwIx1Sbn9o4cEpYT2USYlFhJPRckgnmCQ+Eaim/sgL40V2v3Jwt6HVAY0L9bl84jmvox9QP4FOY7+LM02ZqfRB6LaEukM1tGdObVr+HBvhOwrxGCI06GFjnD3vVzW4jEsK75Y7MPzXd5YSpebGvU+7ZOuEcuSKp/R9dJcJn4kdXeaqor4gh8uTKQ43PGPTEvyoNlCWLkwSgy8khbo2BpoChLA7B53pVEhviMvVVIbmwpc6V2AIhRYY7ppR8oBzklLgh8CtTBPXtQRYiahLOIhds6ORf7wGNFI+A4sbBqwEL3J6av5fE1+zkUBhAHX promisepreston
Run Code Online (Sandbox Code Playgroud)
复制其内容并粘贴到您实例的 SSH 部分中的元数据部分下 添加或删除实例级公共 SSH 密钥
在本地终端中,导航到您拥有SSH 私有密钥文件的目录,使用该ssh命令以及您的私有 SSH 密钥文件、用户名和实例的外部 IP 地址进行连接。例如:
ssh -i private-key username@external-ip-of-the-virtual-instance
Run Code Online (Sandbox Code Playgroud)
就我而言,它是:
ssh -i kubernetes-trial promisepreston@52.174.274.72
Run Code Online (Sandbox Code Playgroud)
连接后,使用此终端在您的实例上运行命令。完成后,通过运行exit命令断开与实例的连接。
注意:
就这样。
我希望这有帮助
Ant*_*REL 11
您必须确保用于生成密钥的用户名与本地 cpu 中的用户名相匹配。
在本地 cpu 上:默认情况下,linux 上的 $USER 将为您提供您的用户名 ( echo $USER),因此您甚至不需要指定它。
ssh-keygen -t rsa -f ~/.ssh/my_google_cloud_key -C $USER
Run Code Online (Sandbox Code Playgroud)
cat /home/$USER/.ssh/my_google_cloud_key.pub
Run Code Online (Sandbox Code Playgroud)
在https://console.cloud.google.com/compute/metadata/sshKeys中选择并复制它(添加密钥,然后保存)
在https://console.cloud.google.com/compute/instances获取实例的外部 IP
EXTERNAL_IP={{input your external ip}}
ssh -i ~/.ssh/my_google_cloud_key $USER@$EXTERNAL_IP
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19204 次 |
| 最近记录: |