Usando o SSH reverso para conectar dois clientes em um servidor

3

Estou tentando configurar vários PCs clientes que estão protegidos por um firewall com endereços IP dinâmicos para ter uma conexão SSH disponível para outro computador.

Minha teoria é configurar um servidor com um IP estático e publicamente acessível que funcionaria como o servidor SSH. Os clientes iniciam conexões SSH reversas. Quando é necessária uma conexão de outro cliente (conroller), o cliente se conecta a um servidor e o servidor corrige / encapsula essa conexão com o cliente remoto desejado.

Como isso é possível? Existe um termo para isso? Existe outra solução para este problema?

edit: diagrama adicionado

Espero que isso ajude. Eu também encontrei este artigo que discute isso um pouco mais, mas não com vários clientes. link

    
por Daniel 02.04.2015 / 00:19

1 resposta

2

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

    
por 09.04.2015 / 08:17