Я уже видел это нить, но он не ответил на мой вопрос, потому что его оставили умирать.
Как видно из названия, когда я вхожу в свой VPS с помощью putty, все работает нормально. Но при подключении к 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-запросы.
Кажется, я не могу найти ничего, что могло бы мне помочь. У вас есть предложения?
Спасибо, что уделили время, прочитав это.
После просмотра ваших iptables -L. Я думаю, у вас проблема с брандмауэром на стороне сервера. в
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ctstate 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, внезапно перестали работать, но не выдавали полезных сообщений об ошибках. 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 снова работал нормально
В ответ в аналогичном вопросе также упоминается об этом и о том, как вы можете проверить вывод своих сценариев запуска