使用Vim创build“authorized_keys”文件时,SSH访问被拒绝

我用Ubuntu 16.04 AMI创build了一个ec2实例。 我为这个AMI创build了一个sudo用户:

sudo adduser myuser sudo usermod -aG sudo myuser 

然后我试图用我已经有的rsa密钥对给用户ssh访问权限。 我为新用户创build了一个.ssh目录:

 mkdir ~/.ssh chmod 700 ~/.ssh vim ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys 

我将公钥复制并粘贴到“authorized_keys”中。 然后我退出了ec2并testing了我的连接:

 cd ~/.ssh ssh -i "mypem.pem" [email protected] 

我得到一个错误,读取“访问被拒绝(公钥)”

所以我放弃了用户并创build了另一个用户。 这次用nano创build了“authorized_keys”文件,而不是Vim,它工作。

任何人都可以体验

可能你把它弄错了。

  • 它是以ssh-rsa还是以ssh-ed25519
  • 它之前是否有空间(它不应该)
  • 大小写是否保留?
  • 在行末有没有评论?

在vim中粘贴任何东西之前,应该使用:set paste ,因为它会closures任何可能的活动autocompletion / autoindent / …macros。

另一件事是,你写了mykey.pem ,这是openssl文件通常的扩展名,而不是ssh-keys。 你确定,你用id_rsa.pub / id_ed25519.pub作为ssh-pubkey吗?

如果发生这种情况,我会build议在ViM中检查fileencryptionfileformatbomb 。 比较两个文件,一个用nano编辑的文件和一个用vim编辑的文件。 用vim打开它们并检查:

:set bomb? 这是字节顺序标记。 通常在Windows上使用notepad.exe编辑UTF-8文件时设置。 我经常遇到问题。

:set ff? Fileformat dosunix 。 dos有比unix不同的行结尾。

:set fenc? fileencoding:也许一个编辑器改为latin1而不是UTF-8。

myuser必须能够访问.ssh和keyfile。 检查谁拥有他们。