我在使用ssh login google云实例时遇到了如下问题
$ ssh -i DD2 root@35.237.32.84
Permission denied (publickey).
经过测试,我发现错误的原因是公钥签名与google cloud的账号不一致:
例如:
scuio33@chef-server:~$
在这里您的帐户是scuio33,那么您的发布文件将是:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBpNeFZyXXXehjPuGCkEjb/t
laNQt0fztORSCFFQIoKHkQzi7SNhp48kagyOHDNj6mY1LmVZB/sIj2oCa1AFupoFuBYc/XILP
rTX60fIlnBYkHl+6Kq/TX2hzKv scuio33
公钥将与你的谷歌账号完全相同,否则会出现"Permission denied ( scuio33 )“的问题。只有谷歌云有这个限制。
这不是一个“问题”。但这对ssh到google云的失败是一个提示。
发布于 2020-09-02 06:21:50
我第一次尝试在Google Cloud平台上设置Kubernetes时遇到了这个问题。
每次我尝试从我的终端SSH到我的实例时,我都会遇到下面的错误:
promisepreston@52.174.274.72: Permission denied (publickey)
这里是我如何解决它的
在您的工作站上打开一个终端,并使用ssh-keygen
命令生成新密钥。指定-C
标志以使用您的用户名添加注释。
ssh-keygen -t rsa -f ~/.ssh/[KEY_FILENAME] -C [USERNAME]
在我的例子中是:
ssh-keygen -t rsa -f ~/.ssh/kubernetes-trial -C promisepreston
导航到.ssh
目录:
cd ~/.ssh
限制对您的私钥的访问,这样只有您可以读取它,而没有人可以写入它。
chmod 400 [KEY_FILENAME]
在我的例子中是:
chmod 400 kubernetes-trial
双击kubernetes-trial.pub
打开它,或者使用cat
命令在控制台上打印它:
sudo cat kubernetes-trial.pub
公共SHH密钥应采用以下格式:
ssh-rsa [KEY_VALUE] [USERNAME]
或
ssh-rsa [KEY_VALUE] google-ssh {"userName":"[USERNAME]","expireOn":"[EXPIRE_TIME]"}
在我的例子中是:
ssh-rsa AAAAB3MzaC1yc2EAAAADAQABAAABAQDdLjLb2b97m9NSK5Z8+j6U8awAwIx1Sbn9o4cEpYT2USYlFhJPRckgnmCQ+Eaim/sgL40V2v3Jwt6HVAY0L9bl84jmvox9QP4FOY7+LM02ZqfRB6LaEukM1tGdObVr+HBvhOwrxGCI06GFjnD3vVzW4jEsK75Y7MPzXd5YSpebGvU+7ZOuEcuSKp/R9dJcJn4kdXeaqor4gh8uTKQ43PGPTEvyoNlCWLkwSgy8khbo2BpoChLA7B53pVEhviMvVVIbmwpc6V2AIhRYY7ppR8oBzklLgh8CtTBPXtQRYiahLOIhds6ORf7wGNFI+A4sbBqwEL3J6av5fE1+zkUBhAHX promisepreston
复制其内容并将其粘贴到实例的元数据部分Adding or removing instance-level public SSH keys下的SSH部分中
在本地终端中,导航到私有SSH密钥文件所在的目录,使用ssh
命令以及私有SSH密钥文件、用户名和要连接的实例的外部IP地址。例如:
ssh -i private-key username@external-ip-of-the-virtual-instance
在我的例子中是:
ssh -i kubernetes-trial promisepreston@52.174.274.72
连接后,使用此终端在实例上运行命令。完成后,通过运行exit
命令断开与实例的连接。
便笺
Linux Linux确保您添加了实例级公共SSH密钥,以确保您没有阻止来自Linux实例的Adding or removing instance-level public SSH keys
就这样。
我希望这对有帮助
发布于 2018-08-10 19:07:55
使用SSH密钥连接到Google Cloud Compute Engine实例并不局限于该实例所属项目的用户。您可以生成SSH密钥,只要它被添加到实例中,并且用户存在于操作系统上,您就应该能够SSH。您可以使用其他用户名连接。确保:
配置您可以通过Google Cloud Console将公钥添加到实例[1]
发布于 2020-12-06 14:22:29
promise-preston的答案对我很有效。问题是该名称与google帐户名称不匹配。
考虑到,如果未指定,google ssh服务器识别的名称将根据您的电子邮件地址自动生成,但不一定相同。在我的例子中,我的电子邮件地址是wenzhan.main@gmail.com,而用户名实际上是wenzhan_main。仔细检查一下这个把戏。
我想补充的一件小事是,只有当你已经在.ssh/
目录中时,像ssh -i kubernetes-trial promisepreston@52.174.274.72
这样的东西才能工作。
https://stackoverflow.com/questions/51614552
复制相似问题