我已经创建了一个 EC2 实例。它具有互联网连接,我可以使用“test_kp.pem”通过 ssh 进入 ubuntu@ip。
我已经创建了一个新用户...useradd test-user
并test-user-kp
在 AWS EC2 控制台中创建了一个新的密钥对。
我创建了目录 home/test-user/.ssh 和文件 .ssh/authorized_keys
我已运行该命令ssh-keygen -f test-user-kp.pem -y
并将内容复制到authorized_keys中。我还修复了.ssh和文件authorized_keys的权限。
现在我尝试执行ssh -i test-user-kp.pem test-user@ip
该命令,但失败并显示以下消息:
test-user@ip:权限被拒绝(公钥)。
答案1
出现这种情况有几种可能性。
阅读您的帖子,我想知道您是否将 test-user-pk.pem 的内容复制到了 ~ssh/authorized_keys。如果您这样做了,那么问题就来了。该文件是私钥 - 公钥可以在 test-user-pk.pem.pub 中找到。这很容易验证,因为私钥的格式与公钥完全不同,并且以 -----BEGIN OPENSSH PRIVATE KEY------ 开头,跨越多行 - 而不是一行长行,包含 3 个字段,可能以“ssh-rsa”开头,以 username@hostname 结尾 - 公钥在中间。
否则 -
一般来说,尝试以用户身份通过 SSH 登录,并将“-v”标志传递给 SSH,以记录客户端看到的内容,并在执行此操作时查看服务器日志文件。
您可以更进一步,在服务器上的另一个端口上启动 sshd 的第二个实例而不是分离它,然后查看尝试连接时会发生什么。
一些具体的可能性值得关注——
SeLinux 是否破坏了实例(即文件权限或类似情况)。我以前见过这种情况,这很麻烦。audit.log 文件会指示是否是这种情况,如果似乎是这种情况,暂时禁用 selinux 可能有助于排除此问题。(我以前见过这种情况,但不是在 Ubuntu 机器上)
/etc/ssh/sshd_conf 中有一些东西阻止了协商 - 例如 AllowUsers 列表。
这可能是用户主目录的权限问题吗?
这可能是一些愚蠢的事情,就像你最终添加了密钥一样。
答案2
我以 root 身份创建了“authorized_keys”。为了解决这个问题,我运行了
sudo chown 测试用户 authorized_keys