GNU/Linux >> Tutoriales Linux >  >> Linux

SSH hace que todas las contraseñas escritas sean visibles cuando se proporciona el comando como argumento para el comando SSH

Si proporciona un comando remoto para ejecutar, SSH no asigna un tty, por lo que el comando remoto no puede deshabilitar el eco. Puede obligar a SSH a proporcionar un tty usando el -t opción:

ssh -t [email protected] 'mysql -u user -p'

La opción equivalente (para -o o para el archivo de configuración) es RequestTTY . Le advierto que no lo use en la configuración porque puede tener efectos no deseados para los comandos no interactivos.


Almacenamiento de la contraseña en un archivo de opciones protegido

Si puede confiar en la seguridad de la computadora remota, puede almacenar la contraseña en un archivo de opciones debidamente protegido, como se sugiere en las Pautas para usuarios finales para la seguridad de contraseñas. capítulo del manual, sin necesidad de comunicarse a través de ssh o para escribir cada vez.

Específicamente, puede agregar una línea en la sección [cliente] del archivo .my.cnf en su directorio de inicio:

[client]
password=your_pass

Por supuesto, debe evitar que ese archivo sea accesible para cualquiera que no sea usted mismo, configurando el modo de acceso al archivo en 400 o 600 con, por ejemplo,

chmod 600 ~/.my.cnf

Entonces puedes usar algo como

ssh [email protected] 'mysql -u user110971 --defaults-file=/home/user110971/mysql-opts'

donde user110971 es el nombre de usuario de su cuenta.

Obligar al ssh a asignar un pseudo tty (ssh -t )

Este problema ocurre cada vez que envía un comando a través de ssh y necesita insertar la entrada porque, de forma predeterminada, ssh no asignará un pseudo-tty.

Puede forzar la asignación de tty con la opción -t , (incluso más de uno si es necesario):

-t

Forzar asignación de pseudo-tty. 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 -t las opciones fuerzan la asignación de tty, incluso si ssh no tiene tty local.

Como puede leer en esta publicación de Debian (11 de julio de 2008) sobre sudo , es un tema viejo que le encanta repetir:

ssh [email protected] "sudo ls"  
password: password  

Y se te muestra la contraseña

La solución es obligar a ssh a asignar un pseudo-tty, con el indicador -t:

ssh -t [email protected] sudo ls

Nota:

Si puede confiar en dejar la contraseña en un archivo accesible solo para usted y rootear en el trabajo cliente.
Si es posible reiniciar la computadora remota cambiando el sistema operativo o quitar el disco duro, la computadora no puede considerarse completamente segura... pero en ese caso la base de datos en sí no será segura.


La opción de montaje "hidepid" para proc fs también es valiosa. Hace que sus líneas de comando sean invisibles en la lista de procesos para otros usuarios. Ejemplo de fstab:

proc /proc proc hidepid=1 0 0

Linux
  1. Un poco de magia de copia de archivos SSH en la línea de comando

  2. ¿Pasar la salida del comando anterior al siguiente como argumento?

  3. ¿Qué define el tamaño máximo para un solo argumento de comando?

  4. ¿A dónde van los archivos cuando se emite el comando Rm?

  5. ¿Cómo acceder al último argumento de un comando comentado?

¿Primeros caracteres del comando repetidos en la pantalla al completar?

Todas las formas de verificar si un puerto está abierto en Linux

Cómo usar el comando ssh-keygen para configurar ssh sin contraseña

En Linux, ¿qué significan todos los valores en el comando superior?

¿Cómo puedo recordar el argumento del comando bash anterior?

Eliminación de todas las particiones desde la línea de comandos