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

219
dwk

У меня есть ситуация, когда мне нужно настроить ssh-сервер, который будет доступен по нескольким различным именам публичного домена, но предоставит пользователю другой интерфейс TTY в зависимости от используемого им доменного имени.

Я хочу знать, если следующее требование возможно, прежде чем я пытаюсь реализовать его, и если да, то как:

У меня есть два доменных имени, которые предоставляют два разных типа сервиса BBS через ssh. На самом деле оба доменных имени маршрутизируют в один и тот же физический блок Linux, но блок Linux должен решить, какой домен использовался для доступа к нему, чтобы создать у пользователя иллюзию, что они являются двумя независимыми службами.

Пример:

Когда пользователь входит в систему через свое имя пользователя, я хочу настроить свой ssh-сервер, чтобы определить, подключен ли пользователь к example.com или example.org. Если они подключились к user@example.com, они получат оболочку bash, а если они подключились к примеру user @. org, вместо этого они должны получить MUD-игру на основе TTY.

Как я могу получить эту информацию от sshd? Sshd устанавливает переменную окружения? Или я не на том пути? Существует ли более простой подход для запуска нескольких служб ssh на одном сервере?

3
См. Также [Протоколы SSH или FTP сообщают серверу, к какому домену я пытаюсь подключиться?] (Https://serverfault.com/q/672270/168875#672403) Martin Prikryl 5 лет назад 1

1 ответ на вопрос

5
grawity

Нет. Протокол SSHv2 (в отличие, например, HTTP или TLS) не имеет стандартного способа для клиентов предоставлять эту информацию на сервер. Сервер может видеть только информацию о сокете TCP (которую OpenSSH предоставляет в $ SSH_CONNECTION).

Вы можете попытаться обсудить новое расширение протокола, например, в списке рассылки OpenSSH (логический способ реализовать его - использовать недавно добавленный механизм расширения обмена ключами), но даже если он будет написан и принят, это займет много времени, пока большинство клиентов поддерживают такие указания имени хоста.

На практике вам нужно будет получить второй IP-адрес для вашего домена MUD, или запустить игру на альтернативном порту TCP, или настроить специальное имя пользователя, которое указывает одной службе подключаться к другой.