Servidor de retransmissão SSH com OpenSSH

10

É possível usar o OpenSSH para retransmitir para outros dispositivos habilitados para SSH, como switches de roteadores etc. Se isso é algo que pode ser feito sem a criação de um aplicativo sob medida no Linux para fazer isso?

obrigado

um caçador
fonte

Respostas:

9

Certo; basta usar o encaminhamento / tunelamento 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 à qual você tem acesso SSH
  • $REMOTEHOST: a máquina à qual $ PROXYHOST pode se conectar, mas você não pode. Use um nome de host ou IP que $PROXYHOSTpossa ser usado para se referir à máquina
  • $SSHPORT: a porta que o sshd está escutando no host remoto; provavelmente 22
  • $LOCALPORT: a porta de saída local SSH está abrindo em sua máquina local que encaminha para a porta 22 em $REMOTEHOST

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

Depois que o túnel for estabelecido, faça o seguinte:

ssh -p $LOCALPORT localhost

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

Brad Beyenhof
fonte
3

Se você estiver disposto a atualizar a configuração em seu cliente, poderá configurá-lo para usar sua caixa de gateway como proxy . Sua caixa de retransmissão precisará do netcat instalado e, para obter os melhores resultados, você precisará 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 exposto, você pode simplesmente executar o comando ssh internal-ssh-host-proxy a partir da sua máquina cliente.

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

Host internal-ssh-host-proxy
    ProxyCommand /usr/bin/ssh username@ssh-relay-host -W internal-ssh-host:22
Zoredache
fonte
Desculpe, mas este não está usando o OpenSSH. Você está usando o netcat para fazer a retransmissão entre o servidor cliente e o servidor?
AHunter 07/10/2009
Ele está usando o OpenSSH combinado com um utilitário muito comum que está disponível em quase todos os lugares. Não é puro ssh, mas eu não chamaria isso de sobrenome.
Zoredache
Não, eu concordo que não é personalizado, mas eu queria saber se é possível retransmitir usando o OpenSSH para que você use um cliente ssh padrão e ssh para uma caixa executando o OpenSSH que automaticamente fornece acesso ssh a outra máquina ou várias máquinas. Obrigado
aHunter
1
@aHunter, para o registro, agora existe um 'modo netcat' integrado ao openssh 5.4, que oferece uma conexão pura ao openssh - blog.rootshell.be/2010/03/08/openssh-new-feature-netcat-mode sem ferramentas externas são precisos.
Zoredache
3

Das respostas apresentadas, o Zordache's é a melhor solução geral. No entanto, para a posteridade, se você simplesmente deseja conectar-se ad-hoc sem editar sua configuração, use a -tflag para alocar um pseudo terminal junto com a execução do ssh diretamente no relé.

ssh -t relay.example.com ssh internal.example.com
bahamat
fonte
solução mais simples, sem editar arquivos
Kartoch
2

Você pode encaminhar conexões automaticamente usando o OpenSSH. No seu ~/.ssh/authorized_keysarquivo, você pode especificar um comando a ser executado, 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á são duas solicitações Password:: uma para o servidor de retransmissão e outra para o servidor de destino. Você sempre pode remover esse comportamento usando certificados.

sybreon
fonte
isso parece perfeito, como você configuraria o sshd no openssh?
aHunter 8/10/09
Consulte a seção sobre [Comandos forçados] [1] a [1] eng.cam.ac.uk/help/jpmg/ssh/authorized_keys_howto.html
sybreon
essa é uma ideia incrível. A última coisa que quero fazer é abrir 100 portas discretas no meu firewall com rotas. Em seguida, repita para redundância. Isso sugere que eu posso criar 100 chaves ssh e vincular cada uma ao seu próprio servidor. Isso também sugere que eu posso bloquear completamente o servidor de retransmissão. Alguns podem chamar isso de VPN, mas eu vejo isso de forma diferente.
Richard