Como copiar um arquivo de uma sessão ssh aninhada dentro de outra sessão ssh para o host local?

2

Eu quero copiar um arquivo de uma sessão ssh para meu host local. O problema é que a sessão ssh não é acessível a partir do meu host local, preciso primeiro conectar-me a uma sessão ssh ( ssh1 ) e acessar a sessão ssh em questão ( ssh2 ).

Até agora, tentei usar scp desta maneira:

scp username@ssh1:username@ssh2:file .

Isso se conecta ao ssh1, mas ao invés de se conectar ao ssh2 em seguida, ele procura pelo arquivo username @ ssh2: file . Claro, isso funciona:

1. ssh username@ssh1
2. scp username@ssh2:file .
3. exit 
4. scp username@ssh1:file .

mas isso é demorado, especialmente com a inserção de senhas. Existe um método melhor?

    
por J. Schoeters 03.11.2017 / 09:25

1 resposta

0

Sim, existe um método melhor. Use o recurso de sessão principal do SSH (versões mais recentes). Cria uma sessão de controle, para que você não precise autenticar por algum período de tempo.

Está descrito aqui:

link

Provavelmente tudo que você precisa é editar / criar seu arquivo .ssh / config. Adicione definições que controlam as sessões principais:

ControlMaster auto
ControlPath ~/.ssh/cm_socket/%r@%h:%p
ControlPersist 4h
ServerAliveInterval 30

Em seguida, você pode especificar sua definição de servidor do primeiro salto, como:

Host first_hop
Hostname <your first host FQDN or IP>
User <your user>

E o segundo salto usará seu primeiro servidor como proxy:

Host second_hop
Hostname <your second host FQDN or IP>
User <your user>
ProxyCommand ssh -W %h:%p first_hop

Não se esqueça de criar o diretório ~ / .ssh / cm_socket e as permissões de configuração devem ser 644.

Em seguida, você deve poder enviar SSH ou SCP diretamente para / de seu segundo servidor. Pode haver mais servidores encadeados assim.

    
por 03.11.2017 / 10:18

Tags