Я пытаюсь установить chrooted ssh и sftp сервер под сервером Ubuntu 16.04.3 LTS. Я следовал этому учебному руководству: https://rp29blog.wordpress.com/2016/06/26/setting-up-chroot-sftp-and-ssh
Я получил его работа. Я могу сделать ssh и sftp к chrooted среде, но я не могу изменить пароль chrooted пользователя. Я попробовал это: $-bash-4.3 passwd
но я добрался:пароль: не может определить Ваше имя пользователя.
Между прочим, я также включал команду "/usr/bin/passwd" в chrooted среду и скопировал файлы: группа, группа - gshadow, gshadow-, passwd, и passwd-к chrooted среде.
Я также понял, что, если я делаю "ls-l" в chrooted среде, названия группы не будут отображены. Я буду видеть вещи как: drwxr-xr-x 3 0 33 4096 15 февраля 12:26 домой
Но в реальной среде эта запись похожа: корневые www-данные drwxr-xr-x 3 4096 15 февраля 13:26 домой
Если я сделаю sftp, то я буду видеть пользователя и названия группы вместо их идентификаторов.
Какова могла быть проблема? Мне действительно нужно это, пользователь, по крайней мере, может изменить его собственный пароль.
Наилучшие пожелания Josef
Здесь мой/etc/ssh/sshd_config:
Port 22
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
UsePrivilegeSeparation yes
KeyRegenerationInterval 3600
ServerKeyBits 1024
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 120
PermitRootLogin prohibit-password
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
PasswordAuthentication yes
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
AcceptEnv LANG LC_*
Subsystem sftp internal-sftp
UsePAM yes
Match group chrooted
ChrootDirectory /home/ssh_chroot
X11Forwarding no
AllowTcpForwarding no
#Uncomment to allow only sftp to the chrooted jail, ssh access will be denied
#ForceCommand internal-sftp
Здесь моя структура папок:
/home/ssh_chroot
├── bin
│ ├── bash
│ ├── cat
│ ├── chown
│ ├── cp
│ ├── date
│ ├── ls
│ ├── mkdir
│ ├── mv
│ ├── rm
│ ├── rmdir
│ ├── sh
│ └── touch
├── dev
│ ├── null
│ ├── random
│ ├── tty
│ └── zero
├── etc
│ ├── group
│ ├── group-
│ ├── gshadow
│ ├── gshadow-
│ ├── hosts
│ ├── ld.so.cache
│ ├── ld.so.conf
│ ├── nsswitch.conf
│ ├── passwd
│ └── passwd-
├── home
│ └── chusr
├── lib
│ ├── libc.so.6
│ ├── libdl.so.2
│ ├── libncurses.so.5
│ ├── libtinfo.so.5
│ └── x86_64-linux-gnu
│ ├── libacl.so.1
│ ├── libattr.so.1
│ ├── libaudit.so.1
│ ├── libcrypt.so.1
│ ├── libc.so.6
│ ├── libdl.so.2
│ ├── libexpat.so.1
│ ├── libm.so.6
│ ├── libpam_misc.so.0
│ ├── libpam.so.0
│ ├── libpcre.so.3
│ ├── libpthread.so.0
│ ├── libselinux.so.1
│ ├── libtinfo.so.5
│ ├── libutil.so.1
│ └── libz.so.1
├── lib64
│ └── ld-linux-x86-64.so.2
├── sbin
│ └── unix_chkpwd
├── usr
│ ├── bin
│ │ ├── clear
│ │ ├── dircolors
│ │ ├── groups
│ │ ├── id
│ │ ├── passwd
│ │ ├── tree
│ │ └── vi
│ └── lib
│ └── x86_64-linux-gnu
│ ├── libgpm.so.2
│ └── libpython3.5m.so.1.0
└── var
└── www
Мой вопрос на самом деле еще не решен, но я думаю, что воздержусь от него. Я просто учил, что это - плохая идея скопировать файлы: группа, группа - gshadow, gshadow-, passwd, и passwd-и тень к новой среде.
Вместо того, чтобы работать с паролями, я предполагаю, что попытаюсь решить это с аутентификационными ключами. Так, чтобы пользователь мог генерировать его собственные ключи с некоторым паролем, затем я загружу их в сервер.
Этот подход все еще не безопасен, так как пользователь будет работать возрасты с ключом, но я предполагаю, что могу время от времени делать недействительным их, т.е.: каждые 6 месяцев.
Для заинтересованного: Я не сделал получил ошибку: "Не может определить Ваше имя пользователя". больше. Вместо него я добрался:
passwd: Authentication token manipulation error
passwd: password unchanged
введя пароль текущего пользователя. Я выяснил, что некоторые файлы не были найдены на chroot среде путем выполнения этого:
strace passwd
особенно я наблюдал пути на каждой статистике (), читайте (), открытый (), подключение (), доступ (), statfs (), и readlink () вызов. Так, я скопировал некоторые файлы или ввел папки и linked/binded некоторые устройства. Но я не сделал получил его работа.
Так или иначе я воздержался выполнения этого по двум причинам:
Одна из моих целей состоит в том, чтобы скрыть некоторые части системы в chroot. Howerver, если я должен был скопировать много файлов от моей основной системы, затем какой смысл того, чтобы делать это?
Я также думаю, что, копируя основной файл паролей мои имеют некоторые проблемы: у Вас будет он на двух различных местах: в Вашей основной системе и в chroot. Так, если я заставляю "passwd" работать, были, будет сохраненный новый пароль? Я предполагаю в копии chroot, таким образом, в следующий раз пользовательские логины, его пароль будет все еще старым, сохраненным на основном passwd файле, не так ли?
Я просто задаюсь вопросом, как хостинговые компании решают это со своим "общим хостингом" программы. Я был покупателем нескольких из них, и я вижу, что, когда я использую ssh доступ, они предлагают, я только вижу ограниченную систему; даже файл паролей не там. Я думаю, что только видел свою домашнюю папку и некоторые файлы журнала с моих веб-сайтов.
Хорошо, я решил проблему пароля с общественностью и закрытым ключом. Прием здесь должен вставить открытый ключ:/home/your_user/.ssh/authorized_keys
Это должно быть в реальном корне не дома расположено в chroot; иначе ключевая аутентификация не будет работать.
Только одна проблема остается здесь и - что Вы не можете вызвать сложные пароли. Если пользователь хочет, он может поместить или пустую фразу или что-то как: "1234".
Мне действительно жаль, что я не мог работать с аутентификацией по паролю. Можно, по крайней мере, вызвать некоторую сложность пароля с pam.