Назад | Перейти на главную страницу

Может подключаться к sftp серверу через loopback, но не извне

Я установил SFTP-сервер, и, похоже, я могу подключиться к нему только с локального компьютера через loopback, что довольно сбивает с толку.

Сервер SFTP не является стандартным сервером Linux sftp. Это сервер apache sftp, работающий внутри приложения с весенней загрузкой, которое также имеет общие конечные точки FTP и https. SSH Ubuntu дополнительно работает в системе на порту 22. Конечная точка SFTP приложения в настоящее время сопоставлена ​​с портом 2222, хотя это легко изменить.

Машина, на которой запущено приложение, является экземпляром AWS EC2, хотя, узнав о проблеме, я понял, что могу воспроизвести ее на своей машине разработки. Входящий трафик на порт 2222 разрешен для всех IP-адресов. У сервера есть пара ключей, но только для установления своей личности для клиентов. Клиенты проходят аутентификацию по паролю.

Если я подключаюсь к конечной точке SFTP с машины, на которой работает сервер, через loopback, все работает нормально:

sftp -oPort=22222 -vvv user@domainname.net
OpenSSH_7.2p2 Ubuntu-4ubuntu2.8, OpenSSL 1.0.2g  1 Mar 2016
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: resolving "domainname.net" port 22222
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to domainname.net [127.0.0.1] port 22222.
debug1: Connection established.

Затем следует еще немного регистрации, затем запрос пароля, все очень нормально. Однако если я попытаюсь подключиться с другого компьютера или с того же компьютера, но с использованием общедоступного IP-адреса вместо имени домена, чтобы он не был разрешен как 127.0.0.1, все, что я получил, это:

sftp -oPort=12 -vvv user@<pu.bl.ic.ip>
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: resolving "domainname.net" port 2222
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to domainname.net [<pu.bl.ic.ip>] port 12.
debug1: connect to address <pu.bl.ic.ip> port 2222: Connection refused
ssh: connect to host domainname.net port 2222: Connection refused

Как упоминалось ранее, брандмауэр для порта открыт. Поведение, когда он закрыт и порт вообще недоступен, отличается, поэтому я почти уверен, что проблема не в этом.

Сервер apache sshd ничего не регистрирует о взаимодействии, даже в TRACE, что заставляет меня подозревать, что он на самом деле никогда не получает запрос и заранее сбит чем-то другим. Я попытался выполнить переадресацию портов, так что я подключаюсь к порту 12 извне, а затем он перенаправляется на 2222, как мы обрабатываем обычные FTP-соединения, но это ведет себя точно так же.

Есть ли у кого-нибудь идеи, что может сбивать это соединение, или идеи, как я могу диагностировать проблему дальше?

Итак, загадка разгадана. Это было связано с конфигурацией apache sshd, которую я случайно скопировал из примера. Короче говоря, свойство SshServer.host ничего не настраивает о хосте сервер, скорее он настраивает другой хост как действующий клиент, поэтому только этот хост может подключиться. Как только я удалил эту конфигурацию, соединение из любого места работало нормально.