我用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中检查fileencryption , fileformat和bomb 。 比较两个文件,一个用nano编辑的文件和一个用vim编辑的文件。 用vim打开它们并检查:
:set bomb? 这是字节顺序标记。 通常在Windows上使用notepad.exe编辑UTF-8文件时设置。 我经常遇到问题。
:set ff? Fileformat dos或unix 。 dos有比unix不同的行结尾。
:set fenc? fileencoding:也许一个编辑器改为latin1而不是UTF-8。
myuser必须能够访问.ssh和keyfile。 检查谁拥有他们。