Вход в SSH работает, а вход в SFTP - нет

Я уже видел эту ветку, но она не ответила на мой вопрос, потому что она была оставлена ​​для мертвых.

Как видно из названия, когда я захожу на свой VPS с замазкой, все работает нормально. Но при соединении с FileZilla через SFTP я всегда получаю сообщение об ошибке: Authentication failed, cannot establish connection to the server (грубо переведено).
Я использую правильные настройки в FileZilla, потому что я получил эту ошибку только 3 дня назад, и раньше она работала нормально: SFTP через порт 22.

Вот iptables -L:
(TL; DR: принимать все входящие и исходящие данные на портах 20, 21 и 22 и пассивные входящие соединения на портах 1024+)

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ftp ctstate ESTABLISHED /* Allow ftp connections on port 21 */
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ftp-data ctstate RELATED,ESTABLISHED /* Allow ftp connections on port 20 */
ACCEPT     tcp  --  anywhere             anywhere             tcp spts:1024:65535 dpts:1024:65535 ctstate ESTABLISHED /* Allow passive inbound connections */
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh ctstate ESTABLISHED /* Allow ftp connections on port 22 */

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ftp ctstate NEW,ESTABLISHED /* Allow ftp connections on port 21 */
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ftp-data ctstate ESTABLISHED /* Allow ftp connections on port 20 */
ACCEPT     tcp  --  anywhere             anywhere             tcp spts:1024:65535 dpts:1024:65535 ctstate RELATED,ESTABLISHED /* Allow passive inbound connections */
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh ctstate ESTABLISHED /* Allow ftp connections on port 22 */

Я установил это вручную на случай, если это было источником моих проблем, но ничего не изменилось.

Я тоже поставил PasswordAuthentication yes а также LogLevel DEBUG как и предыдущая ветка, но ничего не изменилось и после перезапуска sshd.
Вот что я получаю в /var/log/auth.log когда я пытаюсь соединиться с FileZilla: буквально ничего не связано с логином SFTP.
Он содержит только то, что я делаю sudos для доступа к файлу.

Я не знаю, исходит ли это от FileZilla, потому что auth.log не показывает ничего, связанного с соединением SFTP, или это происходит из конфигурации sshd, просто игнорируя запросы SFTP.
Кажется, я не могу найти ничего, чтобы помочь мне, у вас есть предложения?

Спасибо за ваше время, читая это.

2 ответа

Решение

После просмотра вашего iptables -L. Я думаю, что у вас есть проблема с брандмауэром на стороне сервера.

ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh ctstate ESTABLISHED

ESTABLISHED обычно означает для соединений, которые являются активными или уже установлены.

Добавьте эту строку в свои iptables

sudo iptables -A INPUT -p tcp --dport ssh -j ACCEPT

Для легкого руководства по iptables мне нравится это КАК и вот объяснение

или вы можете попробовать

sudo sh -c "iptables-save > /etc/iptables.rules"
sudo iptables -F

проверьте соединение, затем вы можете восстановить свои правила с помощью

iptables-restore < /etc/iptables.rules

Это может быть вызвано эхом или другими командами, которые пишут на консоль во время входа в систему. Например, я пытался установить переменные окружения для сложного процесса сборки и добавил эхо во все мои файлы.profile, в том числе в .bashrc Все клиенты sftp, которые я пробовал: filezilla, Beyond Compare внезапно перестали работать, но не дали полезных сообщений об ошибках. Вне сравнения сказал:

Connection failed: Failed to establish SFTP connection (error code is 103)
Failed to establish SFTP connection (error code is 103)

Наконец корпоративные ИТ-специалисты попросили меня попробовать WinSCP, который дал полезное сообщение об ошибке:

Received too large (1701737573 B) SFTP packet. Max supported packet size is 1024000 B. 
The error is typically caused by message printed from startup script (like .profile). 
The message may start with "ente". 
Cannot initialize SFTP protocol. 
Is the host running a SFTP server?

Это дало мне подсказку, в которой я нуждался, и после удаления строки

echo 'entering .bashrc'

от моего .bashrc sftp снова работал нормально

В ответе на аналогичный вопрос также упоминается об этом и о том, как вы можете проверить вывод из ваших сценариев запуска

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