Rsync sin contraseña a través de SSH sin autenticación de clave [no seguro]

12

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_configy 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.

Sorin-Mihai Oprea
fuente
3
No obtendrá ninguna respuesta si le dice a la gente que no le diga la respuesta.
Mike Scott el
77
Esto es inutil. ¿Cuál es el problema con la autenticación de clave? Si la autenticación basada en claves está configurada, desde ese punto solo tiene un comando simple que hace el trabajo, automáticamente, exactamente lo que desea. Así que no puedo ver cuál es el problema con esto. Almacenar la contraseña en algún lugar para especificarla "automáticamente" es uno de los mayores agujeros de seguridad que puedo imaginar, ¿cuál es el punto para hacer eso?
LGB
No necesito que nadie me dé conferencias sobre seguridad. Ya sé las implicaciones. Solo tengo que dejar todo en el servidor como está y no cambiar nada. Para su información, ya lo intenté con las claves y todavía me pide la contraseña, por lo tanto, su argumento no es válido.
Sorin-Mihai Oprea
1
No, por buenas razones no existe dicho parámetro por defecto. Mira la respuesta de Migs si quieres ese parámetro.
lumbric
2
@Sorin Mihai Oprea: Bueno, si no te funciona, ¿es malo? Interesante. Para su información: como ingeniero de sistemas de Internet que trabaja en un ISP, utilizamos autenticación basada en claves con ssh en más de 100 servidores. Funciona para nosotros, interesante. No llame a algo malo solo porque no comprende cómo funciona y cómo debe configurarse. Si tiene razón, no funcionaría para nadie, lo que llamaría la atención como un error importante de implementación del servidor ssh :) Por lo tanto, mi agrupación no es inválida, simplemente no puede configurarlo bien por alguna razón. No es lo mismo, lo siento.
LGB

Respuestas:

29

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:

sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/
Migs
fuente
De nada. Si bien estoy de acuerdo con el resto de la gente aquí en que la autenticación de clave pública es la mejor solución para este asunto, a veces se necesitan métodos alternativos, siempre y cuando seamos conscientes de las compensaciones cuando se usan alternativas.
Migs el
De hecho ... pero es por eso que se llama código abierto ¿verdad? Múltiples sabores ... mismo resultado!
Sorin-Mihai Oprea
1
GRACIAS por no solo decir que las contraseñas son malas, no las use, algunos de nosotros en equipos antiguos OLDDDD solo necesitamos que funcionen hasta que llegue el nuevo equipo :)
Theodore Howell
6

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 -findicador con shpass:

sshpass -f '/home/me/.password' rsync --progress -avz -e ssh
test@remhost:~/something/ ~/bak/

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.

Andrew Allaire
fuente
Esta respuesta mejor que la respuesta aceptada.
vietnguyen09
1

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, expectdeberí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 .

lumbric
fuente
Gracias por la sugerencia, ¡pero en realidad encontré que sshpass es mucho más simple!
Sorin-Mihai Oprea
1

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:

sshpass -P passphrase -p 'password' rsync /path/to hostname:/destination/path -av --progress -e ssh

Donde -Pespecifica qué aviso buscar, lo descubrí corriendo sshpass -vy descubriendo que está buscando la frase passwordque no está allí.

GuySoft
fuente
0

lo primero es hacer ssh sin passowrd/bypassla contraseña de inicio de sesión, como puede ver, podemos usar ssh-copy-id -i ./ssh/id_rsa.pubpara 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/servermáquina

budi satriyo
fuente