我正在尝试通过 ssh 与 chroot 监狱中的用户设置 SOCKS 代理。创建隧道后,连接尝试会导致:
channel 2: open failed: administratively prohibited: open failed
客户端通过以下方式设置隧道:
ssh -i id_rsa [email protected] -D 1080 -N
服务器的 sshd_config 文件:
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
SyslogFacility AUTHPRIV
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication yes
GSSAPICleanupCredentials no
UsePAM yes
X11Forwarding yes
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
Subsystem sftp /usr/libexec/openssh/sftp-server
Match User user123
ChrootDirectory /opt/download
#X11Forwarding no
AllowTcpForwarding yes
PermitOpen any
ForceCommand internal-sftp
如果我注释掉ChrootDirectory
用户的配置,隧道就可以工作。如果我-L
在客户端上使用ChrootDirectory
活动的端口转发,它也可以工作。
我假设这与 SOCKS 代理所需的实用程序有关,这些实用程序在 chroot 环境中不可见,但我无法找到与此相关的文档。用户的 chroot 目录当前仅包含要通过 sftp pull 检索的文件。
为了使这项工作有效,需要改变什么?
服务器操作系统是 CentOS 7.8 和 OpenSSH 7.4
这个问题不适用,因为它与 -L 选项相关,并且我已经在 sshd_config 中提供了推荐的设置。