我正在关注SFTP chroot在 ArchWiki 上查看 wiki 并发现一个巨大的障碍:我无法让我的sftponly
用户获得授权。
(我的 2 个用户)的输出tail -2 /etc/passwd
:
chris:x:1001:1002::/home/jail:/usr/bin/nologin
rick:x:1002:1002::/home/jail:/usr/bin/nologin
groups chris
和的输出groups rick
:
sftponly
目录:
$ ls -l /home
total 24
drwxr-xr-x 3 root root 4096 Jan 9 16:12 jail/
$ ls -l /home/jail
total 4
drwxrwxr-x 3 rick sftponly 4096 Jan 9 16:12 dropbox/
笔记dropbox/
:该目录拥有的唯一原因rick
是因为我正在尝试更改 chroot 监狱目录中文件的所有权,因为这是我在广泛的谷歌搜索中读到的内容。我希望两者chris
都rick
能够编辑相同的文件。当我什至可以登录时,我将调查 facl 权限。
中的相关部分/etc/ssh/sshd_config
Subsystem sftp /usr/lib/ssh/sftp-server
Match Group sftponly
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
PasswordAuthentication yes
当我尝试登录sftp rick@localhost
并输入密码时,从日志中:
Jan 09 16:44:17 dell-dropbox sshd[688]: Failed password for rick from ::1 port 57410 ssh2
Jan 09 16:44:23 dell-dropbox sshd[688]: Failed password for rick from ::1 port 57410 ssh2
Jan 09 16:44:28 dell-dropbox sshd[688]: Failed password for rick from ::1 port 57410 ssh2
Jan 09 16:44:29 dell-dropbox sshd[688]: Connection closed by authenticating user rick ::1 port 57410 [preauth]
笔记: 他们都设置了密码。我输入的密码正确。我可以以我自己的身份通过 sftp 登录,没有任何问题。
我到底错过了什么?
答案1
警告:我不是安全专家。我无法确保使用此方法无法通过 ssh 登录,但从我的测试来看似乎不能。
关键问题似乎是/bin/nologin
,但事实证明这从一开始就是不必要的。
当使用上述设置配置 sshd 时,并且您的用户将其主目录设置为监狱,那么他们无论如何都无法进行 ssh。我找到的关于chroot
监狱的每个教程ssh
,而不是关于chroot
监狱和的教程sftp
,都讨论了设置系统文件夹的必要性,本质上是创建一个系统中的系统。没有它们似乎无法通过 ssh 登录但不是通过 sftp。
因此,请按照我上面的指示进行操作,但不要将用户的 shell 设置为/bin/nologin
.据我所知,这是针对守护进程用户的。
此外,使用 ssh-keys 配置所有这些都非常容易。只需.ssh/authorized_keys
在共享主目录中拥有一个 root 拥有的文件就可以了。
ssh-keys 的结果:
~ » ssh chriss@localhost
Enter passphrase for key '/home/malan/.ssh/id_rsa':
This service allows sftp connections only.
Connection to localhost closed.