So verwenden Sie die Einstellung "~ / .ssh / config" für jeden Server mit "rsync"


14

Ich benutze jetzt Rsync mit -e 'ssh -p 10022'Option, um den Port anzugeben.

Ich habe bereits SSH eingestellt ~/.ssh/config.

Host myvps
  HostName example.com
  User ironsand
  Port 10022

Kann ich diese Konfiguration einfach mit rsync verwenden? Oder Kann ich ~/.rsynceinen Standardport für den angegebenen Server erstellen und festlegen?

Antworten:


22

Geben Sie "myvps"als Hostnamen an.

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

Das Ausführen von rsync aus dem Benutzerverzeichnis, in dem die ssh-Konfiguration gespeichert ist, hat bei mir funktioniert, auch wenn es das Knotenspringen unterstützt.
Stalin Gino

8

Das hat bei mir nicht geklappt. Ich habe Jump Hosting in meiner ~ / .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: Hostname vm-app01 konnte nicht aufgelöst werden : Knotenname oder Servername angegeben oder nicht bekannt. 42 / rsync / io.c (452) [Absender = 2.6.9]

Dies funktioniert jedoch einwandfrei

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

Bearbeiten, ich konnte die Namensauflösung überwinden, indem ich rsync ssh zwang, eine Konfigurationsdatei mit -F sudo rsync -az -e "ssh -F /Users/kbroughton/.ssh/config" zu laden

Dies geht über einen Fehler hinaus, aber auf einen anderen. Erlaubnis verweigert (publickey, gssapi-keyex, gssapi-with-mic). ssh_exchange_identification: Die Verbindung wurde vom Remote-Host geschlossen

Es wurde auch versucht, -i und user @ explizit in der Verbindung festzulegen, aber derselbe Fehler tritt auf.

BEARBEITEN

Ein weiterer Datenpunkt. Wenn ich die Floating-IP des Pivots vm (Jump Host) anstelle seines Namens verwende, funktioniert vm-pivot rsync. Aber explizit alle meine ssh / config in die -e "ssh" zu entleeren, funktioniert nicht. Details: lokaler Mac, aktualisiert auf rsync 3.1.0, remote centos 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]

Das funktioniert

[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

Ich erkannte, dass ich in meinem Fall die Verknüpfung nicht verwenden konnte, aber der tatsächliche vollständige Hostname verwendet werden konnte
dies war am

1

@darKoram. In Fällen, in denen Sie ssh mit einem nicht standardmäßigen Pfad aufrufen und versuchen, ssh in ProxyCommand zu verwenden, ist dies ein Problem, da es keine Vererbung gibt. Sie haben dort zwei Möglichkeiten: direkt dieselbe Datei im inneren Befehl bereitstellen oder dynamisch hacken. Sie können eine detaillierte Beschreibung in meinem Blog-Post darüber suchen: http://hubbitus.info/wiki/Blog:Ssh_forwarding_with_same_config_file_hack

Kurz in Ihrer Situation sollte die Konfiguration helfen wie:

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. Führen Sie den SSH-Prozess mit sudo aus:

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


-1

@darKoram

Wie lautet der vollständige DNS-Name von "vm-app01"? Es muss öffentlich sein, da Sie behaupten, Sie könnten es innerhalb von ssh ohne rsync erreichen. Sie erwarten jedoch, dass ssh Ihren Host über das Muster "21ct-dev1- *" abfängt. Ich kann wirklich nicht sehen, wie das auf irgendeine Weise funktionieren könnte. Wenn Sie versuchen, Hostnamen zu strukturieren, sollte dies ungefähr so ​​aussehen:

Host *.21ct-dev1-domain.tld

Dann sollte der Aufruf von rsync ungefähr so ​​aussehen:

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

Wie wird "vm-app01" aufgelöst? Hosts-Datei, gewinnt, nis, nss? Hast du einen Alias? Gehören Sie zu einer Domain? Es sieht auf jeden Fall nach einem "einfachen" DNS-Problem aus.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.