我们想使用从Mac终端在VM上生成的公共密钥连接到Google Cloud VM。但是我们看到以下错误
konathal:.ssh konathal$ ssh -i ~/.ssh/runnhostkey1.pub suren@1.2.3.4
Load key "/Users/konathal/.ssh/runnhostkey1.pub": invalid format
suren@1.2.3.4: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
我们做了什么?
按照https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys#createsshkeys上的文档
1。我们在Google Cloud VM上创建了一个新的公钥,
~/.ssh/runnhostkey1
~/.ssh/runnhostkey1.pub
2。将公钥runnhostkey1.pub
的内容添加到VM> Edit> SSH Keys
3。在本地mac中创建一个新文件并复制公钥的内容
$ vi ~/.ssh/runnhostkey1.pub
$ chmod 400 ~/.ssh/runnhostkey1.pub
我们无法使用$ ssh -i ~/.ssh/runnhostkey1.pub suren@1.2.3.4
我们缺少什么?
答案 0 :(得分:1)
我们找到了问题和解决方案:
1)密钥(公共和私有)文件的所有者和组应归于用于生成密钥的用户所有。在我们的情况下,我们以 root 身份登录,但是使用用户 suren 创建了密钥。
解决方案
ssh-keygen -t rsa -f ~/.ssh/runnkey -C suren
,但我们以root
的身份登录运行,因此文件的所有者为root
。快速解决方案是更改所有权
chown suren:suren ~/.ssh/runnkey
和chown suren:suren ~/.ssh/runnkey.pub
2)将公共密钥添加到 /。ssh / authorized_keys 。
示例cat ~/.ssh/runnkey.pub >> ~/.ssh/authorized_keys
3)更改文件权限
chmod 0700 /.ssh/authorised_keys
chmod 0600 /.ssh/runnkey
chmod 0600 /.ssh/runnkey
4)将密钥添加到VM实例。计算引擎>虚拟机实例> [您要访问的虚拟机]>编辑> SSH密钥。复制公共密钥的文本(vi ~/.ssh/runnkey.pub
副本)并在此处添加粘贴。保存。
5)在本地Mac的runnkey
文件夹下创建文件runnkey.pub
和/.ssh
,并从服务器上的相应文件中复制内容。
示例测试命令:
ssh -i ~/.ssh/runnkey.pub suren@1.2.3.4
scp -i ~/.ssh/runnkey.pub /Downloads/ship.png suren@1.2.3.4:/home/temp
document下的连接用户的$ HOME或$ HOME / .ssh目录上的权限是错误的。
答案 1 :(得分:0)
您不能使用公钥通过SSH连接。您必须使用私钥。
VM使用公钥来验证您的连接授权。
您的私钥很可能是:~/.ssh/runnhostkey1