2014-12-17 2 views
0

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

Чтобы дать более подробную информацию о моем сценарии ...

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

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

ответ

3

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

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

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

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


Таким образом, единственным решением является различение экземпляров с использованием IP-адреса или номера порта. Или укажите имя хоста в имя пользователя (что-то вроде [email protected] или user_host).

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

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