Múltiplas sessões SSH em um único comando

3

Estou tentando copiar um banco de dados de um servidor para outro. Eu tentei usar o seguinte comando e está ficando preso ao digitar as senhas ssh. Se eu colocar a senha de um servidor, ele reclama do outro e vice-versa.

ssh root@server1 mysqldump --databases db | ssh root@server2 mysql

Eu consegui fazer a transferência mantendo os lixões temporariamente no meu computador, apenas me perguntando se há uma maneira de fazer isso funcionar.

    
por Drew 28.02.2012 / 21:20

3 respostas

5

Use o ssh-keygen, copie o arquivo .ssh / que é gerado para o outro servidor, acrescente o conteúdo ao arquivo ./.ssh/authorized_keys e, em seguida, você poderá ssh no outro servidor sem nenhuma senha.

    
por 28.02.2012 / 21:28
3

Usar autenticação de chave é definitivamente uma maneira válida de fazer isso e o que eu provavelmente faria. Se por algum motivo você não puder fazer isso, poderá colocar um pipe nomeado na máquina intermediária em vez de armazenar o arquivo lá.

mkfifo relaypipe
ssh root@server1 mysqldump --databases db > relaypipe #auth & send to background
ssh root@server2 mysql < relaypipe
    
por 28.02.2012 / 21:35
3

Se, por algum motivo, você não puder usar a autenticação de chave e precisar inserir duas senhas para concluir isso, poderá usar um FIFO:

mkfifo myfifo

# In terminal session one, or a screen window, etc.
ssh root@server2 mysql < myfifo

# In terminal session two:
ssh root@server1 mysqldump --databases db > myfifo
    
por 28.02.2012 / 21:36