Rsync sans mot de passe sur SSH sans authentification de clé [non sécurisé]

12

Je veux configurer un travail RSync qui se connecterait 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 n'a qu'un accès en lecture à tous les fichiers et dossiers du dossier ~ /. Je souhaite utiliser rsync pour copier le dossier test @ remhost: ~ / something dans le dossier backup @ myhost: ~ / bak.

À cet effet, j'utilise la commande suivante via BASH sur Ubuntu 11.10 (Oneiric):

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

Après avoir frappé entrer, j'obtiens ceci:

test@remhost's password:

Je tape le mot de passe et le rsync fonctionne.

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

J'ai essayé de l'exécuter rsync -avz -e ssh test:password@remhost:~/something/ ~/bak/mais il demande toujours le mot de passe et c'est ennuyeux.

Je ne veux pas entendre parler de clés (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 changer cela. Par exemple, si vous utilisez OpenSSH, vous aurez besoin des privilèges root sur le serveur pour éditer le fichier sshd_configet l'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 elle est vulnérable aux attaques de l'homme du milieu. Il est conseillé d'utiliser la clé d'authentification pour une sécurité renforcée.

Sorin-Mihai Oprea
la source
3
Vous n'obtiendrez aucune réponse si vous dites aux gens de ne pas vous donner la réponse.
Mike Scott
7
C'est inutile. Quel est le problème avec l'authentification par clé? Si l'authentification par clé est configurée, à partir de là, vous n'avez qu'une commande simple qui fait le travail, automatiquement, exactement ce que vous voulez. Je ne vois donc pas quel est le problème avec ça. Stocker le mot de passe quelque part pour le spécifier "automatiquement" est l'un des plus gros trous de sécurité que j'imagine, quel est l'intérêt de le faire?
LGB
Je n'ai besoin de personne pour me donner des conférences sur la sécurité. J'en connais déjà les implications. Je dois juste laisser tout sur le serveur tel quel et ne rien changer. Pour votre information j'ai déjà essayé ça avec des clés et il me demande toujours le mot de passe donc votre argument n'est pas valide!
Sorin-Mihai Oprea
1
Non, pour de bonnes raisons, il n'y a pas un tel paramètre par défaut. Regardez la réponse de Migs si vous voulez un tel paramètre.
lumbric
2
@ Sorin Mihai Oprea: Eh bien, si cela ne fonctionne pas pour vous, c'est mauvais? Intéressant. Pour votre information: en tant qu'ingénieur système Internet travaillant chez un FAI, nous utilisons l'authentification par clé avec ssh sur plus de 100 serveurs. Cela fonctionne pour nous, intéressant. N'appelez pas quelque chose de mauvais simplement parce que vous ne comprenez pas comment cela fonctionne et comment il doit être configuré. Si vous avez raison, cela ne fonctionnerait pas pour quiconque attirerait l'attention en tant que bogue majeur d'implémentation du serveur ssh :) Donc mon agrument n'est pas invalide, vous ne pouvez pas le configurer correctement pour une raison quelconque. Ce n'est pas pareil, désolé.
LGB

Réponses:

30

essayez peut-être sshpass .

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

Je cherchais quelque chose comme ça avant de copier mes clés, mais comme j'ai déjà ma clé partout où j'ai besoin, je n'ai pas pris le temps d'essayer.

Notez cependant l'avertissement sur ce tutoriel concernant la visibilité de votre mot de passe.


Pour tous ceux qui doivent le faire:

sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/
Migs
la source
De rien. Bien que je convienne avec le reste des gens ici que l'authentification par clé publique est la meilleure solution dans ce domaine, parfois des méthodes alternatives sont nécessaires, tant que nous sommes conscients des compromis lors de l'utilisation des alternatives.
Migs
En effet ... mais c'est pourquoi cela s'appelle open source non? Plusieurs saveurs ... même résultat!
Sorin-Mihai Oprea
1
MERCI de ne pas seulement dire que les mots de passe sont mauvais, ne les utilisez pas, certains d'entre nous sur les anciens équipements OLDDDD ont juste besoin de ceux-ci pour s'en sortir jusqu'à l'arrivée du nouvel équipement :)
Theodore Howell
6

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' -findicateur 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, il affichera désormais uniquement le chemin d'accès au fichier dans lequel se trouve votre mot de passe.

Andrew Allaire
la source
Cette réponse est meilleure que la réponse acceptée.
vietnguyen09
1

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

Quoi expectqu'il en soit, cela 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, est répondu ici à stackoverflow .

lumbric
la source
Merci pour la suggestion, mais j'ai trouvé sshpass beaucoup plus simple!
Sorin-Mihai Oprea
1

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

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

-Pspécifie quelle invite rechercher, j'ai trouvé cela en exécutant sshpass -vet en découvrant sa recherche de la phrase passwordqui n'est pas là.

GuySoft
la source
0

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

Après ce test, la machine peut être distante par ssh sans mot de passe, puis rsync sur le chemin suivant de la machine locale à la target/servermachine

budi satriyo
la source