GNU/Linux >> Tutoriels Linux >  >> Linux

Rsync sur SSH n'obtient aucun tty présent

Solution 1 :

Parfois, vous pensez trop aux choses.

Rsync n'a pas été installé sur le système distant.

/paume faciale

Solution 2 :

Je mets ceci ici pour que je puisse me souvenir et partager cette astuce :

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

Cette méthode semble contourner l'exigence d'un tty telle qu'appliquée sur le /etc/sudoers par défaut de certains systèmes fichier avec Defaults requiretty . Ces informations ont été élaborées après avoir examiné cette question et ces réponses SO.

Dans cette réponse, ils recommandent de supprimer Defaults requiretty du /etc/sudoers . C'est la méthode la plus simple. Cependant, si vous ne parvenez pas à modifier l'hôte distant /etc/sudoers pour supprimer cette option de configuration, vous pouvez essayer de forcer le rsync local utiliser ssh -tt . Cette option pour ssh est décrit dans le ssh page de manuel du client comme celle-ci :

Forcer l'allocation de pseudo-terminal. Cela peut être utilisé pour exécuter des programmes arbitraires basés sur l'écran sur une machine distante, ce qui peut être très utile, par ex. lors de la mise en œuvre des services de menu. Plusieurs options -t forcent l'allocation tty, même si ssh n'a pas de tty local.

Ainsi, nous forçons ssh à allouer un pseudo-tty pour éviter l'erreur :

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

Ensuite, le --rsync-path est remplacé par une commande pour effectuer les opérations suivantes :

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

stty raw -echo est de définir la discipline de ligne du terminal distant comme pass through. Cela le fait effectivement se comporter comme un tube qui serait utilisé à la place d'un pseudo-terminal sans -tt .

Ensuite, la commande rsync distante sera sudo /usr/bin/rsync , qui a maintenant un pseudo-tty et passera le requiretty vérifier sudo .


Linux
  1. Ssh, Sudo, puis télécharger ?

  2. Exécuter un fichier de script sur Ssh via Sudo ?

  3. Ssh – Pourquoi Firefox est-il si lent sur Ssh ?

  4. Ssh - Besoin d'un Tty pour exécuter Sudo si je peux Sudo sans mot de passe?

  5. Oring avec True dans une commande sur Ssh ?

Comment transférer des fichiers avec Rsync sur SSH

Comment transférer des fichiers avec Rsync sur SSH

Reprendre les fichiers partiellement transférés via SSH à l'aide de Rsync

Pousser mon invite PS1 sur ssh

proxy http sur ssh, pas chaussettes

Pourquoi rsync sur SSH me donne-t-il 10 fois le débit de SCP ?