Comment utiliser le paramètre `~ / .ssh / config` pour chaque serveur par` rsync`


14

J'utilise maintenant rsync avec -e 'ssh -p 10022' option pour spécifier le port.

J'ai déjà installé ssh ~/.ssh/config.

Host myvps
  HostName example.com
  User ironsand
  Port 10022

Puis-je utiliser cette configuration de rsync facilement? Ou puis-je créer ~/.rsyncet définir un port par défaut pour spécifier le serveur?

Réponses:


22

Spécifiez "myvps"comme nom d'hôte.

rsync /var/bar myvps:/home/foo ...

faire rsync à partir du répertoire d'accueil de l'utilisateur où la configuration ssh est conservée, a fonctionné pour moi, même il prend en charge l'espoir de nœud.
Staline Gino

8

Cela n'a pas fonctionné pour moi. J'ai un hébergement de saut dans mon ~ / .ssh / config

Host 10.x.y.z
    User cloud-user
    HostName vm-pivot
    IdentityFile /path_to_vm_key

Host 21ct-dev1-*
    User cloud-user
    HostName %h.example.com
    ProxyCommand ssh 10.x.y.z -W %h:%p
    IdentityFile /path_to_vm_key


rsync -e "ssh" local_path vm-app01:/remote_path

ssh: impossible de résoudre le nom d'hôte vm-app01 : nom de noeud ni nom de serveur fourni, ou inconnu rsync: connexion inopinément fermée (0 octet reçu jusqu'à présent) [expéditeur] erreur rsync: erreur inexpliquée (code 255) dans / SourceCache / rsync / rsync- 42 / rsync / io.c (452) [expéditeur = 2.6.9]

Cependant, cela fonctionne très bien

[kbroughton@kbroughton:project + (develop)] ssh vm-app01
Last login: Thu Apr 17 12:10:37 2014 from 10.a.b.c

Modifier, j'ai pu dépasser la résolution de nom en forçant rsync ssh à charger un fichier de configuration avec -F sudo rsync -az -e "ssh -F /Users/kbroughton/.ssh/config"

Cela passe une erreur mais une autre. Autorisation refusée (publickey, gssapi-keyex, gssapi-with-mic). ssh_exchange_identification: Connexion fermée par l'hôte distant

A également essayé de définir explicitement -i et user @ dans la connexion, mais la même erreur se produit.

ÉDITER

Un autre point de données. Si j'utilise l'ip flottante du pivot vm (hôte de saut) au lieu de son nom, vm-pivot rsync fonctionne. Mais vider explicitement tous mes ssh / config dans le -e "ssh" ne fonctionne pas. Détails: mac local, mis à niveau vers rsync 3.1.0, centos distant rsync 3.0.9.

[kbroughton@kbroughton:project + (develop)] sudo /usr/local/bin/rsync -az -e "ssh -F /Users/kbroughton/.ssh/config -i /Users/kbroughton/.ssh/identities/vm_key -W 10.x.y.z:22"  /var/data/sources/data.tar.gz user@vm-pivot:/home/user

Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
ssh_exchange_identification: Connection closed by remote host
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.0]

[kbroughton@kbroughton:project + (develop)] sudo /usr/local/bin/rsync -az -e "ssh -F /Users/kbroughton/.ssh/config -i /Users/kbroughton/.ssh/identities/vm_key -W 10.x.y.z:22"  /var/data/sources/data.tar.gz user@10.x.y.z:/home/user
protocol version mismatch -- is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at compat.c(181) [sender=3.1.0]

Cela marche

[kbroughton@kbroughton:project + (develop)] sudo /usr/local/bin/rsync -az -e "ssh -F /Users/kbroughton/.ssh/config -i /Users/kbroughton/.ssh/identities/vm_key"  /var/data/sources/data.tar.gz user@10.x.y.z:/home/user

J'ai réalisé que dans mon cas, je ne pouvais pas utiliser le raccourci, mais le véritable nom d'hôte complet pouvait être utilisé
dashesy

1

@darKoram. Pour les cas où vous appelez ssh avec un chemin non standard et essayez d'utiliser ssh dans ProxyCommand, ce problème est dû à l'absence d'héritage. Vous avez deux options: fournir directement le même fichier dans la commande interne ou le pirater dynamiquement. Vous pouvez consulter une description détaillée dans mon article de blog à ce sujet: http://hubbitus.info/wiki/Blog:Ssh_forwarding_with_same_config_file_hack

Peu de temps dans votre situation devrait aider à la configuration comme:

Host 21ct-dev1-*
  User cloud-user
  HostName %h.example.com
  ProxyCommand ssh $( egrep -z -A1 '^-F$' /proc/$PPID/cmdline ) 10.x.y.z -W %h:%p
  IdentityFile /path_to_vm_key

0

@darKoram. Exécutez le processus SSH avec sudo:

sudo / usr / local / bin / rsync -az -e "sudo -u user ssh" /var/data/sources/data.tar.gz vm-app01: / home / user


-1

@darKoram

Quel est le nom DNS complet de "vm-app01"? Il doit être public, car vous prétendez pouvoir y accéder dans ssh sans rsync. Mais, vous vous attendez à ce que ssh intercepte votre hôte via le modèle "21ct-dev1- *". Je ne peux vraiment pas voir comment cela pourrait fonctionner de quelque façon que ce soit. Si vous essayez de modéliser les noms d'hôtes, cela devrait ressembler à ceci:

Host *.21ct-dev1-domain.tld

Ensuite, l'appel de rsync devrait ressembler à ceci:

rsync -e "ssh" /local/path/ vm-app01.21ct-dev1-domain.tld:/remote/path/

Comment "vm-app01" est-il résolu? Hosts file, wins, nis, nss? Avez-vous un alias? Êtes-vous dans un domaine? Cela ressemble certainement à un problème DNS "simple".

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.