Я ищу способ перенаправить ssh-соединение с одного хоста на другой. Когда пользователь создает ssh-соединение с хостом foo, я хотел бы, чтобы сервер возвращал некоторый ответ, который заставляет ssh-клиент закрывать ssh-соединение с foo и вместо этого подключаться к панели хоста.
Важно отметить, что для приложения, которое я имею в виду, нельзя просто перенаправить ssh-соединение на bar через foo, поэтому о стандартной переадресации портов не может быть и речи. Как только происходит перенаправление, клиент должен отправлять TCP-пакеты непосредственно в bar, а не в foo (и не в bar через foo).
Итак, грубо говоря, я ищу SSH-аналог перенаправления HTTP (который заставляет клиента вешать исходное соединение и вместо этого подключаться к хосту, на который оно было перенаправлено).
Для приложения, которое я имею в виду, также важно, чтобы оно не требовало настройки на стороне клиента.
Так можно ли это сделать?
В протоколе SSH нет положений для перенаправления. Читать RFC 4251, RFC 4252, и RFC 4253 для получения подробной информации о согласовании подключения.
Вы можете настроить фу SSH-сервер для работы в качестве прокси для бар SSH-сервер.
Например, с OpenSSH вы должны иметь возможность использовать ForceCommand
в SSH в бар сервер:
ForceCommand ssh bar_host
Конечно, счет на фу хост должен быть настроен для обеспечения доступа без взаимодействия к бар, например имея незашифрованный закрытый ключ.
Это будет работать прозрачно для клиентского приложения.