Estoy escribiendo un programa C Shell que estará haciendo su
osudo
o ssh
. Todos quieren sus contraseñas en la entrada de la consola (el TTY) en lugar de stdin o la línea de comando.
¿Alguien sabe una solución?
Configuración sin contraseña sudo
no es una opción.
esperar podría ser una opción, pero no está presente en mi sistema simplificado.
Respuestas:
Para sudo hay una opción -S para aceptar la contraseña de la entrada estándar. Aquí está la entrada del hombre:
Esto le permitirá ejecutar un comando como:
En cuanto a ssh, he hecho muchos intentos de automatizar / script su uso sin éxito. No parece haber ninguna forma integrada de pasar la contraseña al comando sin preguntar. Como otros han mencionado, la utilidad " esperar " parece que está destinada a abordar este dilema, pero en última instancia, configurar la autorización de clave privada correcta es el camino correcto cuando se intenta automatizar esto.
fuente
nonroot:[email protected]
? Por supuesto, las cosas son mucho más fáciles si usa la autenticación de claves y el administrador de claves.'cat pw | sudo -S <command>
y luegorm pw
.nc -l 12345 | sudo -S <command>
. En el lado de envío;echo myPassord | nc <target> 12345
. Esto simplemente mueve el problema de manejo de contraseña, pero presumiblemente a una consola maestra donde tiene más opciones.Escribí un Applescript que solicita una contraseña a través de un cuadro de diálogo y luego crea un comando bash personalizado, como este:
No estoy seguro si esto ayuda.
Sería bueno si sudo aceptara una contraseña pre-encriptada, para poder encriptarla dentro de mi script y no preocuparme por hacer eco de contraseñas de texto claro. Sin embargo, esto funciona para mí y mi situación.
fuente
Para
ssh
puede utilizarsshpass
:sshpass -p yourpassphrase ssh user@host
.Solo necesita descargar sshpass primero :)
fuente
Tengo:
Funciona para mi.
fuente
Para sudo también puedes hacer esto:
fuente
La solución habitual a este problema es configurar una aplicación auxiliar que realiza la tarea que requiere acceso de superusuario: http://en.wikipedia.org/wiki/Setuid
Sudo no está destinado a ser utilizado sin conexión.
Edición posterior: SSH se puede usar con autenticación de clave pública-privada. Si la clave privada no tiene una frase de contraseña, ssh se puede usar sin solicitar una contraseña.
fuente
Esto se puede hacer configurando claves públicas / privadas en los hosts de destino a los que se conectará. El primer paso sería generar una clave ssh para el usuario que ejecuta el script en el host local, ejecutando:
Luego ingrese una contraseña en blanco. Después de eso, copie su clave ssh en el host de destino al que se conectará.
Después de registrar las claves ssh, podrá realizar un silencio
ssh remote_user@other_host
desde su host local.fuente
¿Quizás puedas usar un
expect
comando ?:Ese comando da la contraseña automáticamente.
fuente
Cuando no hay una mejor opción (como lo sugieren otros), entonces man socat puede ayudar:
Toda la complejidad pty, setsid, ctty es necesaria y, si bien es posible que no necesite dormir tanto, necesitará dormir. La opción echo = 0 también vale la pena, ya que pasa el comando remoto en la línea de comando de ssh.
fuente
su
, esto también funcionará.su
no tiene una opción -S (stdin).Echa un vistazo a la
expect
utilidad de Linux.Le permite enviar resultados a stdio en función de la coincidencia de patrones simple en stdin.
fuente
Configure SSH para la autenticación de clave pública, sin frase de contraseña en la clave. Un montón de guías en la red. No necesitará una contraseña para iniciar sesión entonces. Luego puede limitar las conexiones para una clave basada en el nombre de host del cliente. Proporciona seguridad razonable y es ideal para inicios de sesión automatizados.
fuente
fuente
Yo tuve el mismo problema. script de diálogo para crear un directorio en una PC remota. Diálogo con ssh es fácil. Yo uso sshpass (previamente instalado).
saludos desde Alemania
titus
fuente
Partiendo de la respuesta de @ Jahid, esto funcionó para mí en macOS 10.13:
fuente
Una mejor
sshpass
alternativa es:passh
https://github.com/clarkwang/passhInicie sesión en un servidor remoto
Ejecute un comando en el servidor remoto
otros métodos para pasar la contraseña
Aquí expliqué por qué es mejor que sshpass y otras soluciones.
fuente
Esto esta funcionando.
fuente
su
, que en su lugar lee la contraseña de stdio .Codificar una contraseña en un script de esperar es lo mismo que tener un sudo sin contraseña, en realidad peor, ya que sudo al menos registra sus comandos.
fuente
Una forma sería usar la opción read -s. De esta manera, los caracteres de la contraseña no se repiten en la pantalla. Escribí un pequeño script para algunos casos de uso y puedes verlo en mi blog: http://www.datauniv.com/blogs/2013/02/21/a-quick-little-expect-script/
fuente
UTILIZAR:
Ejemplo:
Espero eso ayude..
fuente
Puede proporcionar la contraseña como parámetro para esperar el script.
fuente
Espero que sea útil.
fuente