我正在尝试在运行 Plesk Obsidian 的 Centos 7 服务器上使用公钥认证创建一个 chrooted SFTP 用户。
我已经完成所有设置,但是当我尝试通过 SFTP 连接时,出现“严重错误:网络错误:连接被拒绝”。
当我尝试使用调试端口连接时......
$ `which sshd` -p 123 -Dddd
...我收到以下错误:
debug1: temporarily_use_uid: 10026/1010 (e=0/0)
debug1: trying public key file /home/testuser/.ssh/authorized_keys
debug1: Could not open authorized keys '/home/testuser/.ssh/authorized_keys': Permission denied
我搜索了又搜索,查看了大量教程,但我只是不明白是什么阻止了访问authorized_keys
。
我的设置如下:
testuser
我向组添加了一个用户帐户sftponly
:
$ sudo cat /etc/passwd | grep testuser
testuser:x:10026:1010::/home/testuser/chroot/httpdocs:/bin/false
$ sudo cat /etc/group | grep sftponly
sftponly:x:1010:
我设置的文件夹结构如下:
$ ls /home -la | grep testuser
drwx------. 4 root root 4096 Feb 10 15:52 testuser
$ ls /home/testuser -la
drwx------. 4 root root 4096 Feb 10 15:52 .
drwxr-xr-x. 8 root root 4096 Feb 9 15:22 ..
drwxr-x--x. 3 root sftponly 4096 Feb 10 15:52 chroot
drwx------. 2 root sftponly 4096 Feb 9 15:24 .ssh
$ ls /home/testuser/chroot -la
drwxr-x--x. 3 root sftponly 4096 Feb 10 15:52 .
drwx------. 4 root root 4096 Feb 10 15:52 ..
drwxrwxr-x. 30 testuser psaserv 32768 Feb 9 14:13 httpdocs
$ ls /home/testuser/.ssh -la
drwx------. 2 root sftponly 4096 Feb 9 15:24 .
drwx------. 4 root root 4096 Feb 10 15:52 ..
-rwx------. 1 testuser sftponly 390 Feb 9 15:24 authorized_keys
我知道授权密钥是有效格式,因为我从 SSH 用户那里复制了它,因此我可以在测试时使用相同的密钥:
$ cat /home/testuser/.ssh/authorized_keys
ssh-rsa AAA...redacted my_comment
我的 sshd_config 包含 sftponly 组的这个块:
Match Group sftponly
ChrootDirectory /home/%u/chroot
AuthorizedKeysFile /home/%u/.ssh/authorized_keys
ForceCommand internal-sftp
AllowTcpForwarding no
PermitTunnel no
X11Forwarding no
AllowAgentForwarding no
sshd_config 还包括以下标志:
Subsystem sftp internal-sftp
PasswordAuthentication no
ChallengeResponseAuthentication no
PermitRootLogin yes
并且 SELinux 设置为宽容模式:
$ cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=permissive
# SELINUXTYPE= can take one of these two values:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted
另外,我已经尝试运行 restorecon,正如很多线程中所建议的那样,但无济于事:
$ restorecon -FRv /home/testuser/.ssh
如果有帮助的话,以下是我的系统信息转储:
$ cat /etc/*-release
CentOS Linux release 7.9.2009 (Core)
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
18.0.33.0
Plesk Obsidian 18.0
CentOS Linux release 7.9.2009 (Core)
CentOS Linux release 7.9.2009 (Core)
我真的被这个问题难住了!我已经用尽了所有能想到的方法!任何见解都欢迎,谢谢!
答案1
我修好了!显然我必须把一切都写在这里,这样我才能弄清楚