Eu não acho que haja uma maneira fácil de fazer isso em grande escala. E você realmente não menciona o escopo dessas conexões ssh. Apenas terminal? Pode tornar as coisas um pouco mais fáceis.
Execute ssh -NR 2210:localhost:22 [email protected]
as someuser
na máquina atrás do firewall. Estou assumindo 2210 está disponível na máquina intermediária; se não for, escolha outra porta. Cada máquina que você deseja acessar por trás do firewall precisará de sua própria porta.
Seu usuário da Internet se conectando ao intermediário precisa do acesso ssh no intermediário. Para ficar atrás do firewall, basta fazer ssh -t [email protected] "ssh someuser@localhost -p 2210"
para obter acesso ao terminal. Você precisará fazer o mesmo em uma porta diferente para cada servidor.
Você pode daemonizar a primeira parte para que ela aconteça na inicialização. Eu não sei a melhor maneira de, digamos, tornar mais fácil gerenciar dois conjuntos de logins, senhas, etc. Você pode criar logins sem senha com base em chaves ssh, mas isso levará tempo para ser configurado e precisará ser feito para cada usuário.
Se o terminal só funciona para você ...
Eu criei um pequeno script perl para atuar como um wrapper de shell de login para um usuário chamado sshcatcher. Eu salvei para /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");
Com algo parecido, talvez você possa permitir a chance de uma conta com uma senha vazia no intermediário para automatizar um pouco o processo.
A entrada vipw se parece com:
sshcatcher:x:2000:2000::/home/sshcatcher:/usr/local/remote.pl