desarrollo-web-br-bd.com

¿Inicio de sesión SSH con contraseña de texto claro como parámetro?

Necesito iniciar sesión en un usuario que he creado en un host remoto que ejecuta Ubuntu. No puedo usar una tecla ssh porque el inicio de sesión ssh se realizará desde un script bash ejecutado dentro de un servidor al que no tendré acceso (piense en un servidor de integración continua como Bamboo).

Entiendo que esta no es una práctica ideal, pero quiero configurar el Host remoto para que no solicite la contraseña o pueda iniciar sesión con algo como ssh --passsword foobar [email protected], algo así como MySQL te permite hacer inicios de sesión.

No encuentro esto en man ssh y estoy abierto a cualquier alternativa para solucionar este problema.

93
mmla

En Ubuntu, instale el paquete sshpass, luego úselo así:

sshpass -p 'YourPassword' ssh [email protected]

sshpass también admite pasar la contraseña interactiva del teclado desde un archivo o una variable de entorno, lo que podría ser una opción más adecuada en cualquier situación en la que la seguridad sea relevante. Ver man sshpass para los detalles.

160
likeitlikeit

Si su alternativa es poner una contraseña en un script o en la línea de comando ssh o en un archivo de texto sin formato, entonces usted es [~ # ~] mucho [~ # ~] mejor usando una tecla ssh en su lugar. De cualquier manera, cualquiera que tenga acceso a la cuenta donde está almacenado el script del cliente ssh podría usarlo 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 ssh, se revoca más fácilmente 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) para que el cliente solo tenga acceso para ejecutar el comando que necesita en el servidor en lugar de un Shell completo.

16
Celada

En primer lugar, como los otros encuestados, recomiendo simplemente usar las teclas ssh. Pero supondré 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 deja que B sea una computadora que controlas. Si no puede proporcionar una computadora B adecuada, esta respuesta no funcionará.

  1. Cree un par de claves y agregue la parte pública al archivo autorizado de claves de B. Dale a A la clave privada. Ahora puede iniciar sesión en B desde A sin una contraseña.
  2. En B manualmente ssh -M -S /tmp/controlpath C e ingrese su contraseña en el Indicador. 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 puedes escribir ssh B ssh C dostuff.

Cada vez que reinicie B, tendrá que restablecer la conexión ssh -M -S /tmp/controlpath C.

10
emory