servidor de retransmissão SSH com OpenSSH

10

É possível usar o OpenSSH para retransmitir para outros dispositivos habilitados para SSH, como roteadores, switches, etc. Se isso é algo que pode ser feito sem criar um aplicativo sob medida no Linux para fazê-lo?

Obrigado

    
por aHunter 08.10.2009 / 01:01

4 respostas

9

Claro; basta usar o encaminhamento / encapsulamento de porta SSH. Inicie uma conexão ssh com a máquina "proxy" usando o seguinte comando:

ssh -L$LOCALPORT:$REMOTEHOST:$SSHPORT $PROXYHOST
  • $PROXYHOST : a máquina na qual você tem acesso SSH
  • $REMOTEHOST : a máquina com a qual o $ PROXYHOST pode se conectar, mas você não pode. Use um nome de host ou IP que $PROXYHOST possa usar para se referir à máquina
  • $SSHPORT : a porta que o sshd está escutando no remotehost; mais provavelmente 22
  • $LOCALPORT : a porta de saída local que o SSH está abrindo na sua máquina local é encaminhada para a porta 22 em $REMOTEHOST

Deixe essa conexão para manter o túnel funcionando. Você também pode querer adicionar -N ao comando para que esta conexão não abra um shell remoto e você não feche isso acidentalmente mais tarde.

Quando o túnel estiver estabelecido, faça o seguinte:

ssh -p $LOCALPORT localhost

Isso tenta uma conexão SSH com sua máquina local na porta que é encaminhada para a porta SSH do $REMOTEHOST .

    
por 08.10.2009 / 02:09
3

Se você estiver disposto a atualizar a configuração em seu cliente, você pode configurar seu cliente para usar sua caixa de gateway como um proxy . Sua caixa de retransmissão precisará do netcat instalado e, para obter os melhores resultados, você deverá ter uma configuração de autenticação baseada em chave.

Aqui está o que eu uso no meu .ssh / config para conectar através de outro host.

Host internal-ssh-host-proxy
    ProxyCommand /usr/bin/ssh username@ssh-relay-host "/bin/netcat -w 1 internal-ssh-host 22"

Com o acima, você pode simplesmente executar o comando ssh interno-ssh-host-proxy da sua máquina cliente.

Se o host SSH do proxy tiver o cliente OpenSSH 5.4 ou superior, você não precisará do netcat e, em vez disso, poderá usar o modo netcat incorporado.

Host internal-ssh-host-proxy
    ProxyCommand /usr/bin/ssh username@ssh-relay-host -W internal-ssh-host:22
    
por 08.10.2009 / 01:19
3

Das respostas apresentadas, o Zordache é a melhor solução global. No entanto, para a posteridade, se você simplesmente quiser se conectar ad-hoc sem editar sua configuração, use o sinalizador -t para alocar um pseudo-terminal e executar o ssh diretamente no relé.

ssh -t relay.example.com ssh internal.example.com
    
por 08.01.2014 / 07:20
1

Você pode encaminhar conexões automaticamente usando o OpenSSH. No seu arquivo ~/.ssh/authorized_keys , você pode especificar um comando para executar, que pode ser um SSH para uma segunda máquina.

[ssh client] ----> [ssh relay server] ----> [ssh target server]
    you          modified authorized_keys      target machine

O que você verá será dois prompts para Password: : um para o servidor de retransmissão e outro para o servidor de destino. Você sempre pode remover esse comportamento usando certificados.

    
por 08.10.2009 / 02:20

Tags