Esta pregunta ya tiene respuestas aquí :
Comentarios
Respuesta
En Ubuntu, instale el sshpass
paquete, luego utilícelo así:
sshpass -p "YourPassword" ssh user@host
sshpass
también admite pasar la contraseña interactiva del teclado desde un archivo o una variable de entorno, que podría ser una opción más apropiada en cualquier situación donde la seguridad sea relevante. Consulte man sshpass
para obtener más detalles.
Comentarios
- Aunque no se recomienda y no es una buena práctica, esta es exactamente la respuesta a la pregunta. Considere el uso de claves como se indicó anteriormente. Pero si hay ' s un problema tecnológico importante, esta es la solución que se me pide
- Yo solo voto a favor de la respuesta. No " racional por qué no ' t lo haces de esta manera en lugar de " respuestas. Solo la respuesta. por lo tanto, te voté 🙂
- No ' t odio completamente sshpass, de hecho, ' estoy usando de forma temporal. Sin embargo, el uso de ' -p ' es innecesario e indeseable. Primero configure la variable SSHPASS y luego ejecute sshpass -e ssh < ssh-args >.
- @Brad If tiene root en la caja, puede instalar
sshpass
usando yum --enablerepo=epel install sshpass
.
- Esta respuesta también funciona en Manjaro ( Arch).
Responder
Si su alternativa es poner una contraseña en un script o ssh
línea de comandos o archivo de texto sin formato, entonces «re MUCHO es mejor usar una clave ssh
en su lugar. De cualquier manera, cualquier persona que tenga acceso a la cuenta donde se almacena el script de cliente ssh
podría usar eso para ingresar al servidor, pero al menos en el caso de una clave ssh
, OpenSSH lo admite correctamente, no otorga acceso por otros medios que no sean ssh
, es más fácil revocarlo si es necesario, etc …
Tendrá que explicar por qué tiene el requisito de no usar una clave ssh.
Considere también usar un comando forzado (command="..."
en el .ssh/authorized_keys
archivo) para que el cliente solo tenga acceso para ejecutar el comando que necesita en el servidor en lugar de un shell completo.
Comentarios
Respuesta
En primer lugar, al igual que los otros encuestados, recomiendo usar las claves ssh. Pero asumiré que la persona que controla el servidor simplemente no le permitirá usar la autenticación de clave ssh y debe usar la autenticación de contraseña.
Puede usar ControlMaster y ControlPath.
Deje que A sea el servidor al que no tendrá acceso (piense en un servidor de integración continua como Bamboo) y C sea el host remoto que ejecuta Ubuntu.
Ahora deje que B sea una computadora que usted controla. Si puede no proporcione una computadora B adecuada, esta respuesta no funcionará.
- Cree un par de claves y agregue la parte pública al archivo de claves_autorizadas de B. Dale a A la clave privada. Ahora puede iniciar sesión en B desde A sin una contraseña.
- En B manualmente
ssh -M -S /tmp/controlpath C
e ingrese su contraseña cuando se le solicite. Después de eso, debería poder iniciar sesión en C desde A sin una contraseña ssh -S /tmp/controlpath C
.
En el script en A puede escribir ssh B ssh C dostuff
.
Cada vez que reinicie B, tendrá que restablecer la conexión ssh -M -S /tmp/controlpath C
.