На моем сервере 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 может входить в систему с паролемЧто мне не хватает?
Спасибо в объявлении Вэнс
Благодаря @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.
Благодаря @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.
Спасибо @Муру, следующая конфигурация теперь работает:
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.