GNU/Linux >> Linux Esercitazione >  >> Linux

Rsync su SSH non riceve tty presente

Soluzione 1:

A volte pensi troppo alle cose.

Rsync non è stato installato sul sistema remoto.

/facepalm

Soluzione 2:

Metto questo qui così posso ricordare e condividere questo trucco:

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

Questo metodo sembra ignorare il requisito per un tty applicato al /etc/sudoers predefinito di alcuni sistemi file con Defaults requiretty . Queste informazioni sono state create dopo aver esaminato questa domanda e risposta SO.

In quella risposta, consigliano di rimuovere Defaults requiretty da /etc/sudoers . Questo è il metodo più semplice. Tuttavia, se non sei in grado di modificare l'host remoto /etc/sudoers per rimuovere questa opzione di configurazione, puoi provare a forzare il rsync locale per usare ssh -tt . Questa opzione per ssh è descritto nel ssh pagina di manuale del client come questa:

Forza l'allocazione pseudo-terminale. Questo può essere utilizzato per eseguire programmi basati su schermo arbitrari su una macchina remota, che può essere molto utile, ad es. quando si implementano i servizi di menu. Molteplici opzioni -t forzano l'allocazione tty, anche se ssh non ha tty locale.

Quindi forziamo ssh ad allocare una pseudo-tty per evitare l'errore:

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

Quindi, il --rsync-path è sovrascritto con un comando per fare quanto segue:

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

stty raw -echo consiste nell'impostare la disciplina di linea del terminale remoto come passante. Ciò fa sì che si comporti effettivamente come una pipe che verrebbe utilizzata al posto di uno pseudo-terminale senza -tt .

Quindi il comando rsync remoto sarà sudo /usr/bin/rsync , che ora ha uno pseudo-tty e passerà il requiretty controlla sudo .


Linux
  1. Ssh – Reindirizza Stdout su Ssh?

  2. Ssh, Sudo, quindi Scarica?

  3. Eseguire un file di script su Ssh tramite Sudo?

  4. Ssh:perché Firefox è così lento rispetto a Ssh?

  5. Ssh – Hai bisogno di un Tty per eseguire Sudo se posso Sudo senza password?

Come trasferire file con Rsync su SSH

Come trasferire file con Rsync su SSH

Riprendi i file parzialmente trasferiti su SSH utilizzando Rsync

Spingendo il mio prompt PS1 su ssh

Perché rsync su SSH mi offre un throughput 10 volte superiore a quello di SCP?

Limita rsync su ssh sola lettura/solo copia da host remoto