首先,我知道这种问题已经被问了很多次了,我在这里和在 SuperUser 上尝试了很多解决方案,但都没有起作用,而且我找不到原因。
我想将我的 ssh 配置为仅接受密钥登录,但只能使用 sftp 登录的一个用户除外(没有 ssh cli 访问,如果可能的话,我不确定)
这是我的配置
AllowUsers user1 user2
LoginGraceTime 0
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM yes
X11Forwarding yes
UsePrivilegeSeparation sandbox
ClientAliveInterval 120
Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory /home/%u
ForceCommand internal-sftp
Match user user2
PasswordAuthentication yes
ChrootDirectory /home/%u
当我尝试使用 SFTP 登录 FileZilla 时,我有此日志
Status: Connecting to *my_server_ip*:*my_ssh_port*...
Response: fzSftp started, protocol_version=11
Command: open "user2@*my_server_ip*" *my_ssh_port*
Status: Using username "user2".
Command: Pass: ************
Error: Could not connect to server
当我尝试使用 ssh 连接时
ssh user2@*my_server_ip* -p *my_ssh_port*
user2@*my_server_ip*'s password:
client_loop: send disconnect: Connection reset
我可以使用公钥很好地连接用户 1,但我无法让用户 2 使用密码登录
答案1
对于那些与我有同样问题的人,下面是我如何在他们的主目录中 chroot sftp 用户
这是我的 sshd_config
Subsystem sftp internal-sftp
Match Group sftpusers
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /home
ForceCommand internal-sftp -d /%u
Match user user2
PasswordAuthentication yes
您需要 chroor ,并为 您的目录可以具有正常权限/home
的连接设置足够的权限,以便能够创建/上传文件。chmod 711 /home
/home/user2
user2
使用此配置,用户将自动移动到他们的目录中,chroot 将在/home
目录中,但用户没有权限,..
并且他将被囚禁在他自己的主目录中。