SCP através da conexão do gateway SSH

8

Meu layout de rede é algo assim:

Agora,AlicetemacessoaogatewaySSH(apenasogatewayapartirdeagora)com:

[email protected]

eoarquivodechavesautorizadonogatewayseparececomisso

#/home/Alice/.ssh/authorized_keyscommand="ssh -t alice@web" ssh-rsa ABCD...E== alice@somehost

assim, quando Alice tenta se conectar ao Gateway com sua chave privada, ela fica conectada ao servidor da Web (o PC do gateway pode estabelecer uma conexão com o servidor da Web com uma chave privada sem senha, para que permaneça transparente).

A questão

  1. Como posso configurá-lo para que o Alice também possa acessar o servidor da web?

  2. Eu sei que isso faz uma conexão separada, mas existe alguma maneira de isso funcionar como um ssh normal, para que até mesmo algo como -R12345:localhost:22 funcione?

por zidarsk8 14.10.2012 / 17:27

3 respostas

10

Se você quiser acessar um servidor ssh atrás de outro servidor ssh, simplesmente use "ProxyCommand". Exemplo: adicione a .ssh / config

Host Alice  
   User myLoginAtAlice # optional 
   ProxyCommand ssh -o Compression=no gateway netcat -w 90 %h %p
   ServerAliveInterval 30
   Compression yes

Host gateway
   HostName gateway.public.ip
   User myLoginAtTheGateway # optional 
   Compression yes

Então, você pode simplesmente "ssh Alice" ou "rsync" ou "scp" diretamente usando "Alice" como nome do host. A magia está escondida para o cliente.

Isso permite que você reconfigure rapidamente o seu ssh caso a topologia / configuração da sua rede mude, e apenas mude o .ssh / config, ao invés de mudar todos os scripts.

Explicação: O ssh usa o comando dado como "comando do proxy" como transporte em vez de uma conexão TCP direta. O Netcat é uma ferramenta de rede que (entre milhões de outros recursos) simplesmente redireciona seu stdin / stdout para o host remoto especificado. Então, "ssh gateway nc sshserver 22" conecta você ao servidor ssh da máquina. % h é o nome do host e% p é a porta. Essa configuração permite que você especifique "Porta N" para alterar a porta sem alterar a linha ProxyCommand.

Eu ativo a compactação no computador final e desabilito a compactação externa, pois a compactação de dados criptografados ou compactados não reduz mais o volume de dados. Qualquer mexer com as configurações de compressão também é claro opcional.

    
por 15.10.2012 / 11:39
3

Eu tive exatamente o mesmo problema, mas consegui que funcionasse sem alterar radicalmente tudo.

Tudo o que fiz foi adicionar $ SSH_ORIGINAL_COMMAND ao gateway authorized_keys para passar qualquer coisa na cadeia até o servidor final.

Então isso:

#/home/Alice/.ssh/authorized_keys
command="ssh -t alice@web" ssh-rsa ABCD...E== alice@somehost

Torna-se:

#/home/Alice/.ssh/authorized_keys
command="ssh -q -t alice@web $SSH_ORIGINAL_COMMAND" ssh-rsa ABCD...E== alice@somehost

O -q é usado para suprimir a mensagem de conexão fechada da máquina de ponto final, de modo que não acabe na saída local se estiver usando o redirecionamento localmente.

Você pode usar o scp assim:

scp localFileName [email protected]:/path/on/end/point/remoteFileName

Isso tem a vantagem adicional de permitir que os usuários passem o comando através de comandos para o servidor de ponto final e obtenham o resultado de volta em sua sessão local para que possam redirecioná-los para um arquivo ou enviá-los para um programa diferente.

Por exemplo:

ssh -t [email protected] "ls -l" > tmp

Isso funciona porque parece que o sshd preenche a variável de ambiente $ SSH_ORIGINAL_COMMAND com o comando especificado pelo cliente ssh, mas não sei por que isso milagrosamente permite que o scp passe para a máquina do terminal, assim como comandos.

    
por 29.08.2013 / 17:39
0

Infelizmente, o encaminhamento de porta não ajudaria a copiar arquivos diretamente da estação de trabalho de Alice para o servidor da web usando scp . Em este post de SO Expliquei por que o ssh (e o scp, uma vez que utiliza os mesmos mecanismos de autenticação), não funcionará para conexões encaminhadas pela porta usando o ssh.

A opção seria configurar um servidor VPN na máquina agindo agora como gateway SSH, conectar-se a ele e, em seguida, ter acesso direto a qualquer máquina por trás do firewall.

    
por 15.10.2012 / 05:29