SCP através do host intermediário

1

Eu tentei pesquisar minhas opções, mas nada funciona da maneira que eu preciso. A informação mais útil é encontrada aqui: arquivos scp via host intermediário

Eu tenho a seguinte configuração: Estou na Máquina A. Tenho chaves configuradas na Máquina B (com o agente ssh ativado) que me concede acesso à Máquina C. (Como um aparte, a razão para essa configuração é que o acesso à máquina B é altamente restrito, incluindo autenticação de dois fatores e todas as outras máquinas são configuradas para permitir apenas o acesso de raiz SSH proveniente desta máquina.)

O problema é que o código ssh-agent é executado apenas para shells de login, não quando os comandos são executados sobre o ssh, por isso não tenta usar a chave localizada na Máquina B para acessar a Máquina C. Essa é a código no meu .bashrc e .profile :

export SSH_AUTH_SOCK=~/.ssh/ssh-agent.$HOSTNAME.sock
ssh-add -l 2>/dev/null >/dev/null
if [ $? -ge 2 ]; then
  ssh-agent -a "$SSH_AUTH_SOCK" >/dev/null
fi

Idealmente, gostaria de poder aliasar algum comando para que eu possa executá-lo como scp (por exemplo, scpproxy localfile user@MachineC:/root/remotefile ). Minha solução atual é, da Máquina B, scp -3 user@MachineA:localfile user@MachineC:remotefile (onde o -3 faz com que scp use a máquina local como um host intermediário, em vez do padrão onde ele tenta copiar diretamente de A para C) que é menos que perfeito .

Qualquer ajuda é apreciada!

    
por Travis DePrato 13.12.2016 / 00:00

1 resposta

1

A configuração para scp e ssh através de hosts intermediários é (essencialmente) a mesma. Muitas outras respostas para scp , ssh ou mesmo rsync no mesmo contexto deve funcionar para você. Fundamentalmente, você deve usar a mesma chave para obter acesso da Máquina "A" à "B", conforme você usa para ir da Máquina "B" para a "C". No entanto, parece que você pode estar usando chaves senhas localizadas em "B" para obter acesso a "C". Deixando de lado as implicações (ruins) de segurança dessas senhas sem senha, eu sugiro que você coloque a mesma chave pública da sua chave privada (esperançosamente passphrase protected) localizada em "A" no arquivo ~/.ssh/authorized_keys em "C". Dessa forma, tudo que você precisa fazer é algo assim:

scp -o "ProxyCommand ssh -A B -W %h:%p" C:file .

Isso configurará o proxy / hop via host "B", buscando o nome do arquivo 'file' em seu diretório home em "C" e depsitando-o no diretório de trabalho atual em "A".

Além disso, você pode codificá-lo em seu arquivo ~/.ssh/config :

Host C
  ProxyCommand ssh -A B -W %h:%p

Então, você pode simplesmente:

scp C:file .

Além disso, nada disso requer um alias ou script para fazer isso por você. Você apenas usa scp diretamente.

    
por 14.12.2016 / 19:37

Tags