Quiero configurar un trabajo RSync que se conecte a través de SSH.
Tengo mi computadora (backup @ myhost) y el host remoto (test @ remhost) y necesito hacer una copia de seguridad de la carpeta ~ / algo con todo su contenido. La prueba de usuario ssh solo tiene acceso de LECTURA a todos los archivos y carpetas en la carpeta ~ /. Quiero usar rsync para copiar la carpeta test @ remhost: ~ / something en la carpeta backup @ myhost: ~ / bak.
Para este propósito, uso el siguiente comando a través de BASH en Ubuntu 11.10 (Oneiric):
rsync -avz -e ssh test@remhost:~/something/ ~/bak/
Después de presionar enter me sale esto:
test@remhost's password:
Escribo la contraseña y el rsync funciona.
Quiero hacer el comando anterior para ingresar automáticamente la contraseña y pasarla como parámetro o ingresarla automáticamente e iniciar el trabajo.
Intenté ejecutar rsync -avz -e ssh test:password@remhost:~/something/ ~/bak/
pero todavía me pide la contraseña y es molesto.
No quiero escuchar sobre ningún tipo de claves (RSA, DSA o cualquier otra). Solo quiero un comando simple que me conecte y haga el trabajo.
EDITAR: Un posible escenario podría ser, si la autenticación de clave pública está deshabilitada y no puede cambiar esto. Por ejemplo, si usa OpenSSH, necesitaría privilegios de root en el servidor para editar el archivo sshd_config
y agregarlo PubkeyAuthentication yes
.
EDITAR: Esto es lo que finalmente funcionó para mí:
sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/
Tenga en cuenta que este método no se considera seguro, ya que envía la contraseña en texto sin formato y es vulnerable a los ataques de hombre en el medio. Se recomienda utilizar la clave de autenticación para una mayor seguridad.
Respuestas:
tal vez intente sshpass .
parece bastante simple de usar ... también está disponible a través de apt.
Estaba buscando algo como esto antes de copiar mis llaves, pero dado que tengo mi llave en todas partes que ya necesito de todos modos, no me he tomado el tiempo para probar esto.
Sin embargo, tenga en cuenta el descargo de responsabilidad de ese tutorial sobre la visibilidad de su contraseña.
Para todos los que necesitan hacer esto:
fuente
Una variación en su solución que es más segura para las amenazas de seguridad es almacenar su contraseña en un archivo con permisos estrictos y usar el
-f
indicador conshpass
:La diferencia es que enumerar los procesos en ejecución no mostrará su contraseña en la línea de comando, ahora solo mostrará la ruta al archivo en el que se encuentra su contraseña.
fuente
No puedo imaginar ninguna situación en la que la autenticación de clave pública sin frase de contraseña no sea la mejor solución para los inicios de sesión ssh / rsync automatizados.
De todos modos,
expect
debería ser una forma de lograr lo que quieres hacer. No puede canalizar la contraseña a ssh, pero esto es algo muy similar. Cómo hacerlo, se responde aquí en stackoverflow .fuente
Descubrí que sshpass funciona, pero como el termanal dice
SSHPASS read: Enter passphrase for key '/home/ubuntu/.ssh/id_rsa':
que necesitas ejecutarlo de esta manera:Donde
-P
especifica qué aviso buscar, lo descubrí corriendosshpass -v
y descubriendo que está buscando la frasepassword
que no está allí.fuente
lo primero es hacer ssh sin
passowrd/bypass
la contraseña de inicio de sesión, como puede ver, podemos usarssh-copy-id -i ./ssh/id_rsa.pub
para apuntar a la máquina.Después de esa prueba, la máquina puede ser remotamente mediante ssh sin contraseña, luego rsync en el camino, por supuesto, de la máquina local a la
target/server
máquinafuente