Подсистеме SFTP необходимо прочитать имя хоста сервера

Я пишу новую подсистему SFTP, которая вместо чтения файлов из локальной файловой системы читает из интерфейса API. Здесь мне удалось реализовать подсистему SFTP. Но я хотел бы получить полное доменное имя, которое пользователь SFTP использует для подключения к моему серверу SFTP.

Чтобы подробнее рассказать о моем сценарии ...

На моем сервере SFTP будет две или более записей CNAME (псевдонимов). Например, если имя сервера sftp-testdomain.com, то будут доступны sample1.sftp-testdomain.com, sample2.sftp-testdomain.com CNAME. Я хотел бы получить полное доменное имя в подсистеме SFTP, чтобы выполнить некоторую проверку перед запуском сервера SFTP.

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


person Shan    schedule 17.12.2014    source источник


Ответы (1)


Сервер SSH (пусть только подсистема SFTP) никогда не узнает имя хоста, которое клиент использовал для поиска IP-адреса сервера.

Все коммуникации происходят только с использованием IP-адреса.

В SSH / SFTP отсутствует механизм предоставления серверу имени хоста для поддержки виртуальных серверов, который есть в протоколах HTTP или FTP (_ 1_ заголовок или команда HOST соответственно).

Даже если бы такой механизм существовал, вы не смогли бы использовать имя хоста, предоставленное для проверок безопасности. Это полностью зависит от клиента, какой из псевдонимов сервера он выбирает для предоставления серверу.


Поэтому единственное решение - различать экземпляры по IP-адресу или номеру порта. Или включите имя хоста в имя пользователя (например, user@host или user_host).

Если вы пишете подсистему для SSH-сервера OpenSSH, вы можете найти IP-адрес и порт, используемые для подключения к SSH-серверу, из переменной среды SSH_CONNECTION.

Имя пользователя находится в переменных USER и LOGNAME.

person Martin Prikryl    schedule 17.12.2014