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

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

我使用 Ubuntu 16.04 AMI 创建了一个 ec2 实例。我使用以下命令为该 AMI 创建了一个 sudo 用户:

sudo adduser myuser
sudo usermod -aG sudo myuser

然后我尝试使用我已经拥有的 rsa 密钥对授予用户 ssh 访问权限。我为新用户创建了一个 .ssh 目录:

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

我将我的公钥复制并粘贴到“authorized_keys”中。然后我退出 ec2 并使用以下命令测试我的连接:

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

我收到一条错误消息,显示“拒绝访问(公钥)”

所以我放弃了该用户并创建了另一个用户。这次我使用 nano 而不是 Vim 创建了“authorized_keys”文件,并且成功了。

有人经历过这种情况吗?

答案1

可能是你粘贴错了。

  • 它是以ssh-rsa还是以 开头ssh-ed25519
  • 前面是否有空格(不应该)
  • 大小写是否保留?
  • 行末的任何注释前是否有空格?

在 vim 中粘贴任何内容之前,您应该使用:set paste,因为它会关闭任何可能的活动自动完成/自动缩进/...宏。

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

答案2

如果发生这种情况,我建议检查ViM 中的 和fileencryption。比较两个文件,一个是用 nano 编辑的,另一个是用 vim 编辑的。用 vim 打开它们并检查以下内容:fileformatbomb

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

:set ff? 文件格式dosunix.dos 的行尾与 unix 不同。

:set fenc? 文件编码:也许一个编辑器将其更改为 latin1 而不是 UTF-8。

答案3

myuser 必须有权访问 .ssh 和 keyfile。检查谁拥有它们。

相关内容