我在 AWS 上有一个 CentOS 7 实例,并使用 .pem 文件进行连接。当我创建一个新用户并按照标准步骤操作时,(创建 .ssh 目录,chmod 700 它,创建authorized_keys 文件,复制公钥,chmod 600 它。此处的说明:https://aws.amazon.com/premiumsupport/knowledge-center/new-user-accounts-linux-instance/)效果很好。
但是,当我使用非标准主目录创建新用户时,我不断收到权限错误。我尝试在 / 目录中创建一个文件夹,然后当我注意到权限与那里的其余文件夹不匹配时,我使用 root 帐户在那里创建了一个新文件夹,然后在该文件夹下创建了一个新用户。 (所以基本上 /test/ 由 root 所有,/test/newuser/ 由新用户所有。)
我按照其余步骤进行操作,但仍然没有运气。
我检查了 /etc/ssh/sshd_config 文件并编辑为:
AuthorizedKeysFile .ssh/authorized_keys /test/newuser/.ssh/authorized_keys
那也没用。
我应该注意,此设置适用于 amazon linux 2 映像,但不适用于 CentOS 7。有什么建议吗?
答案1
创建用户时指定非标准主目录,useradd
命令:
创建基本主目录
sudo mkdir /test
如果 SELinux 已启用并在强制模式下运行,则必须使用正确的 SELinux 上下文重新标记文件:
sudo semanage fcontext -a -t user_home_dir_t "/test(/.*)?"
强制 SELinux 动态重新标记文件
sudo restorecon -Rv /test
然后添加具有自定义主目录的用户
sudo useradd -d /test/user1 user1
sudo useradd -d /test/user2 user2
这些用户将为其主目录设置正确的权限。有关 SELinux 上下文和重新标记的更多信息已找到这里
答案2
好的,我想确保您已完成上述操作,该解决方案在 Centos 7 上经过了良好的测试,但未在 AWS 实例上进行了测试。
On your local server :
#Get the pub key
cat ~/.ssh/id_rsa.pub
在远程服务器上:
mkdir -p /test/newuser/.ssh/
chmod 700 /test/newuser/.ssh/
touch /test/newuser/.ssh/authorized_keys
chmod 600 /test/newuser/.ssh/authorized_keys
echo << EOF > /test/newuser/.ssh/authorized_keys
# ADD here your ~/.ssh/id_rsa.pub already generated
EOF
usermod -d /test/newuser test
chown root:root /test
chown -R test:test /test/*
#Edit/etc/ssh/sshd_config to add the above :
Match User test
AuthorizedKeysFile /test/newuser/.ssh/authorized_keys
您还可以将 sshd_config 的内容复制到远程服务器上:
grep -v '^#' /etc/ssh/sshd_config | sed '/^$/d'