GNU/Linux >> Tutoriales Linux >  >> Linux

Rsync sobre SSH no recibe tty presente

Solución 1:

A veces piensas demasiado en las cosas.

Rsync no estaba instalado en el sistema remoto.

/facepalm

Solución 2:

Pongo esto aquí para que pueda recordar y compartir este truco:

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

Este método parece eludir el requisito de un tty tal como se aplica en el /etc/sudoers predeterminado de algunos sistemas. archivo con Defaults requiretty . Esta información se elaboró ​​después de revisar esta pregunta y respuestas de SO.

En esa respuesta, recomiendan eliminar Defaults requiretty de /etc/sudoers . Este es el método más fácil. Sin embargo, si no puede modificar el host remoto /etc/sudoers para eliminar esta opción de configuración, puede intentar forzar el rsync local usar ssh -tt . Esta opción para ssh se describe en el ssh página del manual del cliente como esta:

Forzar asignación de pseudo-terminal. Esto se puede usar para ejecutar programas arbitrarios basados ​​en pantalla en una máquina remota, lo que puede ser muy útil, p. al implementar servicios de menú. Múltiples opciones -t fuerzan la asignación de tty, incluso si ssh no tiene tty local.

Por lo tanto, obligamos a ssh a asignar un pseudo-tty para evitar el error:

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

Luego, el --rsync-path se anula con un comando para hacer lo siguiente:

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

stty raw -echo es establecer la disciplina de línea del terminal remoto como paso a través. Esto efectivamente hace que se comporte como una tubería que se usaría en lugar de una pseudo-terminal sin -tt .

Entonces el comando rsync remoto será sudo /usr/bin/rsync , que ahora tiene un pseudo-tty y pasará el requiretty buscar sudo .


Linux
  1. Ssh:¿necesito un Tty para ejecutar Sudo si puedo Sudo sin contraseña?

  2. Cómo:Introducción a Ansible

  3. ¿Cómo pasar la contraseña a su/sudo/ssh sin anular el TTY?

  4. Empujando mi mensaje de PS1 sobre ssh

  5. Restrinja rsync sobre ssh solo lectura/solo copia desde host remoto

Cómo transferir archivos con Rsync a través de SSH

Cómo transferir archivos con Rsync a través de SSH

Reanudar archivos parcialmente transferidos a través de SSH usando Rsync

¿Usar un dispositivo a través de SSH?

proxy http sobre ssh, no calcetines

¿Por qué rsync sobre SSH me da 10 veces el rendimiento de SCP?