На моем сервере LTS Ubuntu 16.04 я хотел бы сделать следующие вещи:
Я работаю с недавно-установленной-версией Ubuntu 16.04.3 LTS, таким образом, все находится в его условии фабрики по умолчанию.
Я считал этот вопрос и ответы тщательно, но я не смог найти решение.
Я создал a nonrootadmin
пользователь с sudo полномочиями.
Я создал a nonadminsftp
пользователь, который является членом sftpaccess
группа. /home/nonadminsftp/
каталог похож на это:
$ ls -al ~nonadminsftp
total 24
drwxr-xr-x 3 root root 4096 Oct 25 00:52 .
drwxr-xr-x 5 root root 4096 Oct 24 22:29 ..
-rw-r--r-- 1 nonadminsftp sftpaccess 220 Sep 1 2015 .bash_logout
-rw-r--r-- 1 nonadminsftp sftpaccess 3771 Sep 1 2015 .bashrc
drwxr-xr-x 3 nonadminsftp sftpaccess 4096 Oct 25 00:50 ftp
-rw-r--r-- 1 nonadminsftp sftpaccess 655 May 16 13:49 .profile
Их соответствующие записи в /etc/passwd
следующие:
nonrootadmin:x:1000:1000::/home/nonrootadmin:/bin/bash
nonadminsftp:x:1002:1002::/home/nonadminsftp:/usr/sbin/nologin
Изменения я сделал к /etc/sshd/sshd_config
файл следующие:
PermitRootLogin no
#PasswordAuthentication no
AllowUsers nonrootadmin nonadminsftp
Subsystem sftp internal-sftp
Match group sftpaccess
#ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
#ForceCommand internal-sftp
Решение, которое я видел, предлагает не комментировать 3 из этих строк, но я обнаруживаю что:
PasswordAuthentication no
препятствует тому, чтобы nonadminsftp пользователь соединился с паролем:
$ sftp nonadminsftp@mydomain.com
Permission denied (publickey).
Couldn't read packet: Connection reset by peer
ChrootDirectory %h
препятствует тому, чтобы nonrootadmin пользователь соединился вообще:
$ ssh nonrootadmin@mydomain.com
packet_write_wait: Connection to 12.34.56.78 port 22: Broken pipe`
ForceCommand internal-sftp
препятствует тому, чтобы nonrootadmin получил доступ SSH:
$ ssh nonrootadmin@mydomain.com
This service allows sftp connections only.
Connection to mydomain.com closed.`
С этими прокомментированными строками:
НО:
chroot
редактор к /home/nonadminsftp
каталогЧто я пропускаю?
Заранее спасибо
Благодаря @muru теперь работает следующая конфигурация:
PermitRootLogin no
PasswordAuthentication no
AllowUsers nonrootadmin nonadminsftp
Subsystem sftp internal-sftp
Match group sftpaccess
# The following directives only apply to users in sftpaccess
PasswordAuthentication yes
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Я ранее добавил nonrootadmin
к sftpaccess
группа. После того, как я удалил этого пользователя из группы...
$ sudo gpasswd -d nonrootadmin sftpaccess
$ getent group ftpaccess
ftpaccess:x:1002:nonadminsftp
... nonrootadmin
может теперь использовать SSH.