Вход в консоль SSH работает, а SFTP - нет, почему?

17

Я пытаюсь использовать SFTP с Filezilla, но он не может подключиться к серверу, и я думаю, что это связано с правилами брандмауэра?

Я могу SSH абсолютно нормально. Порт для SSH - 6128. Может кто-нибудь сказать мне, какие изменения я должен сделать, чтобы разрешить FTP-соединение через SSH, учитывая, что SSH уже работает?

(Вот мои правила IPtables)

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
fail2ban-ssh  tcp  --  anywhere             anywhere             multiport dports ssh
ACCEPT     all  --  anywhere             anywhere
REJECT     all  --  anywhere             loopback/8           reject-with icmp-port-unreachable
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     udp  --  anywhere             anywhere             udp dpt:9987
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:10011
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:30033
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:6128
ACCEPT     icmp --  anywhere             anywhere             icmp echo-request
LOG        all  --  anywhere             anywhere             limit: avg 5/min burst 5 LOG level debug prefix "iptables denied: "
DROP       all  --  anywhere             anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere

Chain fail2ban-ssh (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere
десять раз
источник
Ответ от Filezilla: «Отключено: нет поддерживаемых методов аутентификации (сервер отправлен: publickey)» Но я использую тот же ключ, который работает для входа в консоль SSH (PuTTy на windows btw)
десять раз
2
SFTP НЕ является FTP через SSH. Вам не нужно никуда разрешать FTP. Тот факт, что Filezilla сообщает «Нет доступных поддерживаемых методов аутентификации», указывает на то, что он нормально подключен к серверу, и проблема не связана с вашим брандмауэром. Как вы настроили Filezilla для использования вашего открытого ключа?
Цирковой кот
Привет и добро пожаловать в Unix и Linux. Это сбивает с толку b / c SFTP разделяет компонент своего имени с протоколом FTP, но помимо этого они не имеют ничего общего друг с другом. SSH - это одиночный протокол, который работает на порте 22 и обеспечивает возможность безопасного соединения в форме интерактивной оболочки или передачи файлов по одному и тому же соединению. Сервер SSH на удаленной стороне должен разрешать SFTP-соединения, поэтому я бы посмотрел в журналах сервера SSH, чтобы понять причину его сбоя, а также убедился, что Filezilla имеет соответствующий ключ для безопасного подключения к серверу.
SLM
Я бы также посмотрел и проверил, правильно ли настроен SFTP на самом сервере, да, вы можете использовать sftpдля подключения инструмент командной строки на сервере, который полезен для проверки перед тем, как включить Filezilla в соединение. digitalocean.com/community/tutorials/… .
SLM

Ответы:

10

Чтобы получить доступ к вашему sftp с других хостов, пожалуйста, убедитесь, что следующее установлено и настроено правильно.

  • Установленные серверы OpenSSH
  • Настроил sshd_config
    • PubkeyAuthentication да
    • Подсистема sftp internal-sftp
  • Добавил ваш открытый ключ в ~ / .ssh / authorized_keys

  • Запустите сервер ssh с открытым портом 22 / TCP # /etc/init.d/sshd start

  • # iptables -I INPUT -j ACCEPT -p tcp --dport 22

Наконец, тест $ sftp <login>@<hostname>

OMG-1
источник
Еще одна хорошая идея - проверить интерактивный сеанс, используя [[$ -! = I ]] && return.
OMG-1
1
Subsystem sftp internal-sftpсделал это для меня. Он был установлен /usr/libexec/openssh/sftp-serverпо умолчанию, которого даже не существовало
quietContest
Добавление Subsystem sftp internal-sftpв sshd_config также работало для меня без каких-либо других изменений в Centos.
Corgalore
2

В моем случае пользователь имел zshверхнюю часть своего файла .bashrc, чтобы он мог перейти в оболочку zsh вместо bash.

Баш был его оболочкой по умолчанию. Удаление этого решило проблему. Затем я chsh user -s /bin/zshсохраню zsh в качестве оболочки по умолчанию.

Шубхам Чаудхари
источник
Та же проблема с другими оболочками (такими как fish).
Пол
1

У вас есть какой-нибудь текст, идущий на консоль (например, операторы echo) в любом из ваших файлов .profile, например .bashrc? Это может испортить связь с sftp. Смотрите мой ответ на аналогичный вопрос на serverfault

Паулюс
источник
Будьте осторожны с этим действительно. Если вы автоматически запустите другую консоль, например, fishэто приведет к аналогичным проблемам.
Пол
1

Ваше антивирусное программное обеспечение также может вызвать это. Мы столкнулись с этим недавно. sshчерез PuTTY работал нормально, но WinSCP не смог подключиться. Начал работать после настройки исключения в Антивирусе.

Сибил
источник
0

Если вы используете filezilla, мне помог следующий ответ:

https://www.digitalocean.com/community/questions/able-to-access-via-ssh-but-not-filezilla

В Filezilla выберите в меню «Правка» -> «Настройки», на левой панели - «Соединение» -> «SFTP». На правой стороне убедитесь, что у вас есть правильный файл закрытого ключа, или добавьте, если отсутствует правильная запись.

Используя веб-консоль DO, войдите в систему как root и выполните tail -f /var/log/auth.log. Затем попробуйте войти в систему с помощью Filezilla и записать все сообщения.

Улад Касач
источник
0

Мой ответ на аналогичный вопрос по serverfault :

Я просто столкнулся с этой проблемой (специально для sftp, но не для ssh, где я мог подключиться без проблем), и ни одно из решений здесь не помогло мне. В моем случае это было связано с слишком большим количеством ключей ssh ​​(IdentityFile) ~/.ssh/. Кажется, что, когда у вас нет записи хоста ~/.ssh/configдля хоста, к которому вы пытаетесь подключиться с помощью правильного ключа, он просто отправляет все ваши ключи один за другим. У меня было более 6 ключей, и, конечно же, по умолчанию MaxAuthTriesустановлено 6 (по крайней мере, в Ubuntu).

Решением было отредактировать сервер /etc/ssh/sshd_configи увеличить его MaxAuthTries. Я установил мой на 10.

#MaxAuthTries 6
MaxAuthTries 10

(Или, конечно, просто добавьте запись узла с правильным ключом - в данном конкретном случае я пытаюсь войти без использования ключа).

insaner
источник