ssh root @ domain - Como especificar uma senha também?

3

Eu preciso escrever um script que faça backup de bancos de dados no meu servidor antigo e mova-os para o novo servidor. Eu tenho cerca de 150 para isso precisa ser automatizado. Eu encontrei isto:

$ mysqldump -u username -p'password' db-name | ssh [email protected] mysql -u username -p'password' db-name

O que me permitirá fazer isso, no entanto, requer que eu especifique uma senha toda vez que eu a executar. Como posso fazer o comando ssh usar um parâmetro de senha? Eu tentei ssh --help mas não consegui ver nada.

Se este comando não puder aceitar uma senha, posso fazer isso de outra maneira?

    
por webnoob 06.06.2011 / 22:01

2 respostas

11

Você deseja usar a autenticação baseada em chave para isso. Há dezenas de perguntas aqui sobre SF sobre o tópico, bem como inúmeros tutoriais na Web que podem orientá-lo sobre como configurar isso.

O uso da chave auth não só permitirá a automação de que você precisa, mas também é um meio de autenticação mais seguro (supondo que você desative a senha auth em algum momento).

Os passos básicos são:

  1. Execute ssh-keygen no servidor de backup, como o usuário que fará os backups. Isso gerará um par de chaves (partes públicas e privadas) e as armazenará em ~/.ssh/ .
  2. Copie a chave pública para o servidor que está sendo submetido a backup. Deve haver uma única linha de texto no arquivo de chave pública. Copie / cole essa chave pública em ~/.ssh/authorized_keys de qualquer usuário que você esteja usando nesse servidor para executar os backups.
  3. Depois de fazer isso, você poderá se conectar do servidor de backup ao antigo servidor de banco de dados sem usar uma senha.
por 06.06.2011 / 22:03
5

Você precisa configurar a autenticação baseada em chave. Usando um arquivo de chave privada no seu computador e o arquivo de chave pública correspondente listado sob agentes autorizados no lado do recebimento, você pode efetuar login com o ssh sem digitar uma senha.

    
por 06.06.2011 / 22:04