Вот отрывок следов отладки Filezilla:
Offered public key from "(...)"
Offer of public key accepted, trying to authenticate using it.
Access granted
Server unexpectedly closed network connection
Я замечаю такое же поведение замазки в режиме отладки, доступ предоставляется, а затем «Сервер неожиданно закрыл сетевое соединение».
При удалении следующих строк из / etc / ssh / sshd_config:
Match User user1
ChrootDirectory /home/user1
AllowTCPForwarding no
X11Forwarding no
ForceCommand /usr/lib/openssh/sftp-server
Тогда Filezilla сможет подключиться, но не PuTTY. Это нормально, поскольку я нацелен только на FTP, но тогда пользователь user1 может получить доступ к гораздо большему, чем требуемый домашний каталог, что не очень хорошо.
Есть идеи, как решить эту проблему? Есть ли какой-нибудь журнал на стороне сервера?
PS: Я не думаю, что это имеет какое-либо отношение к проблеме, но аутентификация основана на ключах (как видно из трассировок).
Обновление: благодаря хорошему совету Фреда Клаузена, я изучил / var / log / secure и исправил «фатальную: неправильное владение или режимы для компонента каталога chroot». Но все равно не работает. Вот что сейчас находится в / var / log / secure
Accepted publickey for user1 from ***.***.***.*** port 56432 ssh2
pam_unix(sshd:session): session opened for user user1 by (uid=0)
subsystem request for sftp by user user1
pam_unix(sshd:session): session closed for user user1
Во время отладки Filzilla я обнаружил интересную ошибку:
Event Log: Started a shell/command
Incoming packet #0xc, type 94 / 0x5e (SSH2_MSG_CHANNEL_DATA)
00000000 00 00 01 00 00 00 00 26 2f 62 69 6e 2f 62 61 73 .......&/bin/bas
00000010 68 3a 20 4e 6f 20 73 75 63 68 20 66 69 6c 65 20 h: No such file
00000020 6f 72 20 64 69 72 65 63 74 6f 72 79 0d 0a or directory..
Заглядывая в это ...
Это нормально, поскольку я нацелен только на FTP, но тогда пользователь user1 может получить доступ к гораздо большему, чем требуемый домашний каталог, что не очень хорошо.
FTP и SFTP никоим образом не связаны друг с другом, за исключением того, что они оба могут использоваться для передачи файлов.
В любом случае для входа в систему SFTP я использую это в sshd_config
:
Subsystem sftp internal-sftp -f AUTH -l INFO
Match Group sftp
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
AuthorizedKeysFile %h/authorized_keys
Match
Пользователи, которые могут использовать sftp, находятся в группе sftp. Убедитесь, что вы дали им /sbin/nologin
оболочка. Они получат то, что им нужно, от OpenSSH.
Наконец, если домашний каталог не существует, я думаю, вы также будете отключены. А также, если у пользователя нет доступа к домашнему каталогу. Права на домашний каталог должны быть 700
а пользователь и группа также должны быть именем пользователя и именем группы. В вашем примере:
1049327 drwx------. 2 user1 user1 4,0K oct 8 2013 user1
Это все относится к CentOS, я не знаю, работает ли это на другом смокинге.
Вы путаете chroot с тем, что делают putty и filezilla разными. putty хочет удаленную оболочку или "фальшивую" оболочку, какую-то команду. filezilla хочет sftp.
Так что решать тебе. Если вам нужен только sftp, вы не можете использовать шпатлевку. Если вы хотите использовать sftp, прочтите man sshd, вы, вероятно, захотите поместить туда internal-sftp, так как он не требует полной настройки chroot. Если вы укажете полный путь к sftp-серверу, вы должны поместить в chroot все библиотеки и другие обязательные файлы.
Вывод Filezilla ясно показывает, что chroot настроен неправильно.