web-dev-qa-db-fra.com

Rsync sans mot de passe sur SSH sans authentification par clé [Unsafe]

Je souhaite configurer un travail RSync capable de se connecter via SSH.

J'ai mon ordinateur (backup @ myhost) et l'hôte distant (test @ remhost) et j'ai besoin de sauvegarder le dossier ~/quelque chose avec tout son contenu. Le test utilisateur ssh ne dispose que d’un accès READ à tous les fichiers et dossiers du dossier ~ /. Je souhaite utiliser rsync pour copier le dossier test @ remhost: ~/quelque chose dans le dossier backup @ myhost: ~/bak.

Pour cela, j'utilise la commande suivante via BASH sous Ubuntu 11.10 (Oneiric):

rsync -avz -e ssh test@remhost:~/something/ ~/bak/

Après avoir frappé entrer je reçois ceci:

test@remhost's password:

Je tape le mot de passe et le rsync fonctionne.

Je veux faire la commande ci-dessus pour entrer automatiquement le mot de passe et le transmettre en tant que paramètre ou pour le saisir automatiquement et démarrer le travail.

J'ai essayé d'exécuter rsync -avz -e ssh test:password@remhost:~/something/ ~/bak/ mais il demande quand même le mot de passe et c'est embêtant.

Je ne veux entendre parler d'aucun type de clé (RSA, DSA ou autre). Je veux juste une commande simple qui me connecterait et ferait le travail.

EDIT: Un scénario possible pourrait être, si l'authentification par clé publique est désactivée et que vous ne pouvez pas le changer. Par exemple. si vous utilisez OpenSSH, vous aurez besoin des privilèges root sur le serveur pour éditer le fichier sshd_config et pour ajouter PubkeyAuthentication yes.

EDIT: C'est ce qui a finalement fonctionné pour moi:

sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/

Veuillez noter que cette méthode n'est pas considérée comme sécurisée, car elle envoie le mot de passe en texte brut et est vulnérable aux attaques de type "man-in-the-middle". Il est conseillé d'utiliser la clé lors de l'authentification pour renforcer la sécurité.

11
Sorin-Mihai Oprea

peut-être essayer sshpass .

semble assez simple à utiliser ... il est également disponible via apt.

Je cherchais quelque chose comme cela avant de copier mes clés, mais comme j'ai toujours mes clés partout où j'en ai besoin de toute façon, je n'ai pas pris le temps de l'essayer.

Notez cependant la clause de non-responsabilité de ce tutoriel concernant la visibilité de votre mot de passe.


Pour tous ceux qui ont besoin de faire ceci:

sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/
27
Migs

Une variante de votre solution plus sécurisée contre les menaces de sécurité consiste à stocker votre mot de passe dans un fichier avec des autorisations strictes et à utiliser l'indicateur -f avec shpass:

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

La différence est que la liste des processus en cours n’affichera pas votre mot de passe dans la ligne de commande, mais seulement le chemin du fichier dans lequel se trouve votre mot de passe.

6
Andrew Allaire

J'ai trouvé que sshpass fonctionne, mais puisque le terminal dit "SSHPASS read: Enter passphrase for key '/home/ubuntu/.ssh/id_rsa':", vous devez l'exécuter comme suit:

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

-P spécifie l'invite à rechercher, j'ai découvert cela en exécutant sshpass -v et en recherchant sa recherche de la phrase password qui n'y figure pas.

1
GuySoft

Je ne peux imaginer de situation où l’authentification par clé publique sans phrase secrète ne serait pas la meilleure solution pour les connexions ssh/rsync automatisées.

Quoi qu'il en soit, expect devrait être un moyen de réaliser ce que vous voulez faire. Vous ne pouvez pas diriger le mot de passe vers ssh, mais c'est quelque chose de très similaire. Comment faire, répond-on ici à stackoverflow .

1
lumbric

la première chose est de faire ssh sans passowrd/bypass le mot de passe de connexion, comme vous pouvez le voir, nous pouvons utiliser ssh-copy-id -i ./ssh/id_rsa.pub pour cibler la machine.

Après ce test, la machine peut être utilisée à distance par ssh sans mot de passe, puis rsync en route, puis bien sûr, de la machine locale à la machine target/server

0
budi satriyo