尝试通过 SFTP 连接时,无法打开授权密钥权限被拒绝

尝试通过 SFTP 连接时,无法打开授权密钥权限被拒绝

我正在尝试在运行 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

我修好了!显然我必须把一切都写在这里,这样我才能弄清楚

相关内容