Как разрешить SSH только с ключом RSA и SFTP с паролем и chroot?

На моем сервере Ubuntu 16.04 LTS я хотел бы сделать следующее:

Включить пользователя root без полномочий root с привилегиями sudo для SSH на сервере с использованием ключа RSA (без пароля) Разрешить выбранным пользователям, не являющимся администраторами, загружать файлы по SFTP в их собственный домашний каталог, используя пароль для входа в систему. Предотвратить доступ пользователей, не являющихся администраторами, к остальной файловой системе

Я работаю с недавно установленной версией Ubuntu 16.04.3 LTS, поэтому все в заводских условиях по умолчанию.

Я внимательно прочитал этот вопрос и ответы, но я не смог найти решение.

Я создал пользователя nonrootadmin с привилегиями sudo.

Я создал пользователя 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 из этих строк, но я обнаружил, что:

Включить пользователя root без полномочий root с привилегиями sudo для SSH на сервере с использованием ключа RSA (без пароля) ChrootDirectory %h не позволяет пользователю nonrootadmin подключиться вообще: $ ssh nonrootadmin@mydomain.com packet_write_wait: Connection to 12.34.56.78 port 22: Broken pipe` Включить выбранных пользователей, не являющихся администраторами, для загрузки файлов по SFTP в свой собственный домашний каталог, используя пароль для входа в систему

С этими строками прокомментировано:

ChrootDirectory %h предотвращает подключение пользователя nonrootadmin вообще : $ ssh nonrootadmin@mydomain.com packet_write_wait: Connection to 12.34.56.78 port 22: Broken pipe` nonadminsftp может подключаться с помощью FTP-клиента, такого как FileZilla

НО:

nonadminsftp может подключаться с помощью FTP-клиента, такого как FileZilla nonrootadmin может входить в систему с паролем

Что мне не хватает?

Спасибо в объявлении Вэнс

1
задан 25 October 2017 в 12:26

3 ответа

Благодаря @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.

2
ответ дан 22 May 2018 в 17:09

Благодаря @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.

2
ответ дан 18 July 2018 в 04:35

Спасибо @Муру, следующая конфигурация теперь работает:

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 и [F4] для группы. После того, как я удалил этого пользователя из группы...

$ sudo gpasswd -d nonrootadmin sftpaccess $ getent group ftpaccess ftpaccess:x:1002:nonadminsftp

... nonrootadmin теперь можете использовать SSH.

2
ответ дан 24 July 2018 в 18:07

Другие вопросы по тегам:

Похожие вопросы: