GNU/Linux >> Znalost Linux >  >> Linux

Rsync přes SSH nedostává žádný tty

Řešení 1:

Někdy o věcech příliš přemýšlíte.

Rsync nebyl nainstalován na vzdáleném systému.

/facepalm

Řešení 2:

Dávám to sem, abych si zapamatoval a sdílel tento trik:

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

Zdá se, že tato metoda obchází požadavek na tty vynucený na výchozím nastavení některých systémů /etc/sudoers soubor s Defaults requiretty . Tyto informace byly vytvořeny po přečtení této otázky a odpovědí SO.

V této odpovědi doporučují odstranit Defaults requiretty od /etc/sudoers . Toto je ta jednodušší metoda. Pokud však nemůžete upravit vzdáleného hostitele /etc/sudoers Chcete-li tuto možnost konfigurace odstranit, můžete zkusit vynutit místní rsync použít ssh -tt . Tato možnost pro ssh je popsán v ssh manuálovou stránku klienta, jako je tato:

Vynutit přidělení pseudoterminálu. Toho lze použít ke spouštění libovolných obrazovkových programů na vzdáleném počítači, což může být velmi užitečné, např. při implementaci služeb nabídky. Více možností -t vynutí alokaci tty, i když ssh nemá žádné místní tty.

Vynutíme tedy ssh, aby přidělil pseudo-tty, abychom se vyhnuli chybě:

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

Poté --rsync-path je přepsán příkazem k provedení následujícího:

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

stty raw -echo je nastavit disciplínu linky vzdáleného terminálu jako průchozí. To efektivně způsobí, že se bude chovat jako roura, která by byla použita místo pseudoterminálu bez -tt .

Potom bude vzdálený příkaz rsync sudo /usr/bin/rsync , který má nyní pseudo-tty a předá requiretty zkontrolujte sudo .


Linux
  1. Ssh – přesměrovat Stdout přes Ssh?

  2. Začínáme s SSH v Linuxu

  3. http proxy přes ssh, ne ponožky

  1. Ssh, Sudo, pak stáhnout?

  2. Spuštění souboru skriptu přes Ssh přes Sudo?

  3. Omezit rsync přes ssh pouze pro čtení / pouze kopírování ze vzdáleného hostitele

  1. Ssh – Proč je Firefox tak pomalý oproti Ssh?

  2. Ssh – Potřebujete Tty ke spuštění sudo, pokud mohu sudo bez hesla?

  3. Oring s True In A Command Over Ssh?