Я строю UVPS для себя, просто чтобы использовать его как простую площадку. Пользователь, которому мне нужен sftp-доступ, аутентифицируется, но загружается. Я считаю, что это из-за моей жесткости, но это может быть то, о чем я просто не замечаю или не знаю. Может ли кто-нибудь помочь, используя следующую информацию?
Я установил Ubuntu 10.04 и довольно хорошо укрепил его (для моей базы знаний, не связанной с системным администратором), но у меня возникают проблемы с подключением через SFTP через ограниченную настройку пользователя, чтобы быть единственным пользователем SFTP (также, вероятно, будет использоваться для rsync / git / hg доступ, но по одному за раз). Я хочу, чтобы этот пользователь был ограничен своим домом - поэтому я поместил это в файл sshd_config.
Конфигурация состоит исключительно из пользователя Sudo, которого мы назовем Sudouser и пользователя sftp мы назовем sftpuser.
Обфусцированный файл sshd_config:
Port 22
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
UsePrivilegeSeparation yes
KeyRegenerationInterval 3600
ServerKeyBits 768
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
PasswordAuthentication yes
X11Forwarding no
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM yes
UseDNS no
AllowUsers sudouser sftpuser
Match User sftpuser
ChrootDirectory %h
ForceCommand /usr/lib/openssh/sftp-server
AllowTcpForwarding no
Я создал пару ключей rsa для sftpuser и разместил ее публично в ~ sftpuser / .ssh / с sftpuser имея 700 в каталоге .ssh и 600 в открытом ключе.
При попытке подключиться через sftp в Netbeans я получаю следующее сообщение:
Host '123.45.678.910' is known and mathces the RSA host key
SSH_MSG_NEWKEYS sent
SSH_MSG_NEWKEYS received
SSH_MSG_SERVICE_REQUEST sent
SSH_MSG_SERVICE_ACCEPT received
Authentications that can continue: publickey,keyboard-interactive,password
Next authentication method: publickey
Authentication succeeded (publickey).
Caught an exception, leaving main loop due to Connection reset
Disconnecting from 123.45.678.910 port 22
QUIT
Goodbye
Он также подключается к cyberduck, но сразу отключается.
Некоторые другие подробности для всех, кто может быть заинтересован в помощи.
Правила iptable:
*filter
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -j ACCEPT
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
-A INPUT -j REJECT
-A FORWARD -j REJECT
COMMIT
Разное упрочнение
dpkg-statoverride --update --add root sudoers 4750 /bin/su
sudo sysctl -w net.ipv4.conf.all.accept_source_route=0
sudo sysctl -w net.ipv4.conf.default.accept_source_route=0
============================================================
EDIT01: ответ на отраву и Жиля (поскольку есть совпадение)
В журналах я вижу, что это проблема с правом собственности. Мое понимание (или отсутствие такового) состоит в том, что когда я являюсь пользователем как root, разрешения и файлы, созданные из / etc / skeleton, должны быть правильными… для этого - но теперь я запутался.
Все это было сделано с правами root.
/usr/sbin/groupadd sudoers
/usr/sbin/adduser sudouser
mkdir ~sudouser/.ssh
mv /tmp/uploadpackage/sudouser.pub ~sudouser/.ssh/authorized_keys
chown -R sudouser:sudouser ~sudouser/.ssh
chmod 700 ~sudouser/.ssh
chmod 600 ~sudouser/.ssh/authorized_keys
/usr/sbin/usermod -a -G sudoers sudouser
:modified visudo:
/usr/sbin/adduser sftpuser
mkdir ~sftpuser/.ssh
mv /tmp/uploadpackage/sftpuser.pub ~sftpuser/.ssh/authorized_keys
chown -R sftpuser:sftpuser ~sftpuser/.ssh
chmod 700 ~sftpuser/.ssh
chmod 600 ~sftpuser/.ssh/authorized_keys
Исследуя разрешения, я вижу следующее:
Sudouser @ uvps: ~ $ sudo ls -l /
<snip>
drwxr-xr-x 4 root root 4096 Apr 10 16:39 home
<snip>
Sudouser @ uvps: ~ $ ls -l / home
drwxr-xr-x 4 sftpuser sftpuser 4096 Apr 10 17:03 sftpuser
drwxr-xr-x 4 sudouser sudouser 4096 Apr 10 16:58 sudouser
Должны ли они принадлежать root?
Есть ли файлы / папки, которые не созданы Добавить пользователя что нужно сделать базовому пользователю?
Прошу прощения, я способен как базовый пользователь Linux ... но хотя большинство вещей логичны, как только вы "понимаете", мне кажется, что я всегда читаю объяснения мелочей / причуд на страницах руководства или в результатах Google, когда выполняю простые вещи.
============================================================
EDIT02: соответствующие записи /var/log/auth.log.
Apr 11 00:18:22 uvps sshd[8694]: Accepted publickey for sftpuser from 109.87.654.321 port 55555 ssh2
Apr 11 00:18:22 uvps sshd[8694]: pam_env(sshd:setcred): Unable to open env file: /etc/default/locale: No such file or directory
Apr 11 00:18:22 uvps sshd[8694]: pam_unix(sshd:session): session opened for user sftpuser by (uid=0)
Apr 11 00:18:22 uvps sshd[8706]: pam_env(sshd:setcred): Unable to open env file: /etc/default/locale: No such file or directory
Apr 11 00:18:22 uvps sshd[8706]: fatal: bad ownership or modes for chroot directory "/home/sftpuser"
Apr 11 00:18:22 uvps sshd[8694]: pam_unix(sshd:session): session closed for user sftpuser
Apr 11 00:18:22 uvps sshd[8694]: pam_env(sshd:setcred): Unable to open env file: /etc/default/locale: No such file or directory
Сообщения pam кажутся связанными с ошибкой Ubuntu Bug # 155794 и, вероятно, не вносят свой вклад - фатальный вход с другой стороны: p
============================================================
EDIT03: Обновление.
Изменение владельца ~ sftpuser рекурсивно приводило к сбою аутентификации. Вернув право собственности на ~ sftpuser / .ssh (-R) на sftpuser клиент sftp мог подключиться. Новые записи журнала были:
Apr 11 01:02:36 uvps sshd[8745]: Accepted publickey for sftpuser from 109.87.654.321 port 55555 ssh2
Apr 11 01:02:36 uvps sshd[8745]: pam_env(sshd:setcred): Unable to open env file: /etc/default/locale: No such file or directory
Apr 11 01:02:36 uvps sshd[8745]: pam_unix(sshd:session): session opened for user sftpuser by (uid=0)
Apr 11 01:02:36 uvps sshd[8756]: pam_env(sshd:setcred): Unable to open env file: /etc/default/locale: No such file or directory
Apr 11 01:02:36 uvps sshd[8756]: subsystem request for sftp
Apr 11 01:02:36 uvps sshd[8745]: pam_unix(sshd:session): session closed for user sftpuser
Apr 11 01:02:36 uvps sshd[8745]: pam_env(sshd:setcred): Unable to open env file: /etc/default/locale: No such file or directory
Так возможно ошибка PAM (или конфигурация по умолчанию, предоставляемая ubuntu) нуждается в некоторой любви. Я читаю о PAM, и это намного больше, чем я надеялся, просто чтобы получить простой изолированный оператор sftp на месте. Хммм.
============================================================
EDIT04: разумное подтверждение.
Отключение PAM в файле sshd_config заставило его работать. Так что на этом этапе любой, кто будет следовать этому как справочнику в будущем, сможет начать это без PAM. Что касается PAM, мне нужно оценить, почему он мне может / не нужен, и если / когда я обернусь вокруг него и определю, предлагает ли он какое-либо существенное преимущество для моего использования, я обновлю это.
Большое спасибо людям, которые внесли свой вклад ... вы привели меня к проблеме и ясно дали понять, что мне действительно нужно улучшить ведение журнала и анализ журналов. Откровенно говоря, использование ubuntudesktop / osx / windows никогда не заставляло меня тратить много времени на журналы. Однако настройка даже простого сервера ... Кому я могу доверять ответ? Все помогли.
============================================================
EDIT05: Причуда ?.
Повторно включил PAM для более глубокого ведения журнала, который был рекомендован, и перезагрузил SSH ... и все продолжало работать, как и с отключенным PAM. o.O
Аутентификация прошла успешно (открытый ключ). Так и должно быть что-то после этого ... давайте проверим:
ChrootDirectory
Specifies the pathname of a directory to chroot(2) to after
authentication. All components of the pathname must be root-
owned directories that are not writable by any other user or
group. After the chroot, sshd(8) changes the working directory
to the user's home directory.
...
Домой пользователя sftpuser (и родительские пути) владеют root и 700 (drwx ------)?
Если владельцы каталогов в порядке и тоже пишут perms, вы можете поискать дополнительную информацию в / var / log на ssh-сервере или попробовать sftp-клиент из командной строки, добавив -v вариант и отправьте нам результат.
Под Subsystem и ForceCommand изменить
Subsystem sftp /usr/lib/openssh/sftp-server
к
Subsystem sftp internal-sftp
и изменить
ForceCommand /usr/lib/openssh/sftp-server
к
ForceCommand internal-sftp