Вход в 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.
Он содержит только то, что я делаю sudo
s для доступа к файлу.
Я не знаю, исходит ли это от 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 снова работал нормально
В ответе на аналогичный вопрос также упоминается об этом и о том, как вы можете проверить вывод из ваших сценариев запуска