GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Rsync über SSH erhält kein tty vorhanden

Lösung 1:

Manchmal denkt man zu viel über Dinge nach.

Rsync wurde nicht auf dem Remote-System installiert.

/facepalm

Lösung 2:

Ich füge das hier ein, damit ich mich an diesen Trick erinnern und ihn teilen kann:

rsync -av -e "ssh -tt" --rsync-path="stty raw -echo; sudo /usr/bin/rsync"   [email protected]${HOSTNAME}:/ ${DEST_DIR}

Diese Methode scheint die Anforderung für ein tty zu umgehen, wie es auf dem Standard /etc/sudoers einiger Systeme erzwungen wird Datei mit Defaults requiretty . Diese Informationen wurden nach Überprüfung dieser SO-Frage und -Antworten erstellt.

In dieser Antwort empfehlen sie, Defaults requiretty zu entfernen ab /etc/sudoers . Dies ist die einfachere Methode. Wenn Sie jedoch den Remote-Host /etc/sudoers nicht ändern können Um diese Konfigurationsoption zu entfernen, können Sie versuchen, den lokalen rsync zu erzwingen um ssh -tt zu verwenden . Diese Option für ssh ist in ssh beschrieben Client-Handbuchseite wie folgt:

Pseudo-Terminal-Zuordnung erzwingen. Dies kann verwendet werden, um beliebige bildschirmbasierte Programme auf einem entfernten Computer auszuführen, was sehr nützlich sein kann, z. beim Implementieren von Menüdiensten. Mehrere -t-Optionen erzwingen eine tty-Zuordnung, selbst wenn ssh kein lokales tty hat.

Daher zwingen wir ssh, ein Pseudo-TTY zuzuweisen, um den Fehler zu vermeiden:

Pseudo-terminal will not be allocated because stdin is not a terminal.
stty: standard input: Inappropriate ioctl for device
sudo: sorry, you must have a tty to run sudo

Dann die --rsync-path wird mit einem Befehl überschrieben, der Folgendes ausführt:

stty raw -echo; sudo /usr/bin/rsync

stty raw -echo ist, die Leitungsdisziplin der Gegenstelle auf Pass Through einzustellen. Dies bewirkt effektiv, dass es sich wie eine Pipe verhält, die anstelle eines Pseudo-Terminals ohne -tt verwendet würde .

Dann lautet der Remote-rsync-Befehl sudo /usr/bin/rsync , das jetzt ein Pseudo-tty hat und den requiretty weitergibt Suchen Sie nach sudo .


Linux
  1. Ssh – Stdout über Ssh umleiten?

  2. Ssh, Sudo, dann herunterladen?

  3. Ausführen einer Skriptdatei über SSH durch Sudo?

  4. Ssh – Benötigen Sie ein Tty, um Sudo auszuführen, wenn ich Sudo ohne Passwort ausführen kann?

  5. Erste Schritte mit SSH unter Linux

So übertragen Sie Dateien mit Rsync über SSH

So übertragen Sie Dateien mit Rsync über SSH

Setzen Sie teilweise übertragene Dateien über SSH mit Rsync fort

HTTP-Proxy über ssh, nicht Socken

Warum gibt mir rsync über SSH den 10-fachen Durchsatz von SCP?

Beschränken Sie rsync über ssh read only / nur kopieren vom entfernten Host