Prompts de senha são incômodos. A maneira de tornar o ssh mais utilizável é usar chaves para autenticação e executar um agente de chave ( ssh-agent
) onde você pode registrar uma chave uma vez por sessão (com um tempo limite opcional). Então você pode executar diretamente
ssh root@server1 mysqldump --databases db | ssh root@server2 mysql
Se você puder efetuar login do server1 para o server2, deverá transferir os dados diretamente entre os dois servidores.
ssh root@server1 'mysqldump --databases db | ssh root@server2 mysql'
(ou o contrário, se você puder efetuar login do server2 para o server1). Novamente, tenha uma chave SSH para autenticação. Em sua máquina local, registre uma chave privada SSH que forneça acesso ao servidor1 e outra que lhe dê acesso ao servidor2; Certifique-se de que o encaminhamento de agentes esteja ativado ( AgentForwarding yes
in ~/.ssh/config
).
Se você realmente não pode evitar digitar uma senha, seu melhor recurso é primeiro estabelecer a conexão, depois ir e transferir os dados. Com versões recentes suficientes do OpenSSH, você pode abrir uma conexão principal e, em seguida, rotear conexões escravas através dela. As conexões escravas não requerem autenticação extra. No seu ~/.ssh/config
:
ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r
Iniciar uma conexão mestre para os dois servidores:
ssh -N -M root@server1 &
ssh -N -M root@server2 &
Depois faça a cópia:
ssh root@server1 mysqldump --databases db | ssh root@server2 mysql
Depois disso, você pode matar as conexões principais se não precisar mais delas.
ssh -O exit root@server1
ssh -O exit root@server2