Я не думаю, что есть простой способ сделать это в массовом масштабе. И вы на самом деле не упоминаете объем этих соединений SSH. Терминал только? Может сделать все немного проще.
Запустите ssh -NR 2210:localhost:22 intermediaryuser@intermediary.remote.machine.tld
someuser
качестве пользователя на компьютере за брандмауэром. Я предполагаю, что 2210 доступен на промежуточной машине; если это не так, выберите другой порт. Каждой машине, к которой вы хотите получить доступ за брандмауэром, потребуется собственный порт.
Вашему интернет-пользователю, подключающемуся к посреднику, нужен ssh-доступ на посреднике. Чтобы получить доступ к брандмауэру, просто выполните ssh -t intermediaryuser@intermediary.remote.machine.tld "ssh someuser@localhost -p 2210"
чтобы получить доступ к терминалу. Вам нужно будет сделать то же самое на разных портах для каждого сервера.
Вы можете демонизировать эту первую часть, чтобы она происходила при загрузке. Я не знаю лучшего способа, скажем, облегчить управление двумя наборами логинов, паролей и т.д. Вы можете создавать логины без пароля на основе ключей ssh, но это займет время для настройки и должно быть сделано для каждого пользователя.
Если терминал работает только для вас ...
Я создал небольшой скрипт на Perl, который будет действовать как оболочка для входа в систему для пользователя с именем sshcatcher. Я сохранил его в /usr/local/remote.pl:
#!/bin/perl
print "Please enter your username to access the firewalled server: ";
$user = <>;
chomp($user);
system("ssh", "$user\@localhost -p 2210");
С чем-то подобным, возможно, вы можете позволить учетной записи с пустым паролем посреднику немного автоматизировать процесс.
Запись vipw выглядит так: sshcatcher:x:2000:2000::/home/sshcatcher:/usr/local/remote.pl