44 votos

Almacenar en caché la contraseña si llaves SSH están prohibidas

Tengo un servidor que tengo que acceder con frecuencia a través de ssh, porque puedo calcular en él. Ahora, la computación del centro prohíbe explícitamente las llaves SSH porque son "inseguros". Consideran que escribir mi contraseña en un teclado, cada vez, posible frente a otros seres humanos, es una manera mucho más segura de inicio de sesión.

Ahora; No puedo cambiar sus mentes (intenté).

¿Existe una manera de por lo menos temporalmente almacenar contraseñas SSH, la manera de GIT puede almacenar contraseñas en una caché para un tiempo definido?

61voto

Nick Dixon Puntos 154

La reutilización de conexiones

SSHv2 permite que la misma conexión autenticada de establecer múltiples canales – shell interactivo, comando de proceso por lotes, SFTP, junto con las secundarias tal como agente de reenvío o TCP-reenvío. Su servidor probablemente admite la conexión de multiplexación por defecto. (Si los administradores se quejan, no es el almacenamiento en la caché de contraseña en cualquier lugar – es la caché de toda la conexión.)

Con OpenSSH tiene ControlMaster y ControlPath opciones (-M y -S) para hacer uso de este:

  1. Iniciar un 'maestro' conexión SSH usando -M. (Dado que no tiene un ControlPath en su configuración, sin embargo, usted debe especificar en la línea de comandos usando -S. Que necesita para vivir mucho tiempo, así que añadir el -fN opciones para colocar de fondo; son técnicamente opcional de lo contrario.)

    $ ssh foo@bar.example.com -fNMS ~/.ssh/bar.socket
    foo@bar.example.com's password:
    

    Estás de vuelta a la shell local.

  2. Iniciar una nueva conexión a través de la maestra:

    $ ssh foo@bar.example.com -S ~/.ssh/bar.socket
    

    Usted está en.

  3. Para hacer esto es útil para Git/rsync/SFTP, necesita configurar ControlPath en su configuración, porque usted no será capaz de especificar -S todo el tiempo:

    Host *
        ControlPath ~/.ssh/S.%r@%h:%p
    

Puede automatizar este recientes versiones de OpenSSH también tienen ControlPersist que establece automáticamente una conexión maestra en el fondo si no hay uno todavía. Esto le permite omitir el paso 1 y sólo tienes que utilizar ssh como lo haría normalmente.

  1. Configuración en ~/.ssh/config:

    Host *
        ControlPath ~/.ssh/S.%r@%h:%p
        ControlMaster auto
        ControlPersist 15m
    
  2. Primera conexión pide contraseña:

    $ ssh foo@bar.example.com
    foo@bar.example.com's password:
    [foo@bar:~]$ exit
    
  3. El segundo no:

    $ ssh foo@bar.example.com
    [foo@bar:~]$ yay
    

Para el control de la operación en multiplex maestro (a parar o configurar TCP forwardings), el uso de la -O opción.

Un método similar es apoyado por los últimos Masilla versiones.

19voto

marcelm Puntos 321

Uso sshpass

sshpass (github, página man) es una herramienta que alimenta automáticamente la contraseña de ssh. La forma segura de usar es este:

% echo 'correct horse battery staple' > ~/.ssh/compute_password
% chmod go-rw ~/.ssh/compute_password

% sshpass -f ~/.ssh/compute_password ssh foo@host

Esto va a leer la contraseña de ~/.ssh/compute_password, muy similar a un archivo de clave privada, sin contraseña. Usted puede poner el sshpass comando en un pequeño shell script o un alias de shell para evitar tener que escribir ese comando completo. Lamentablemente, no he encontrado una manera de hacer esto de ~/.ssh/config.

(También es posible especificar la contraseña directamente en la línea de comandos para sshpass, pero esto debe evitarse, ya que las fugas de la contraseña a cualquier persona que puede hacer ps)

Comparación con otros métodos

Este enfoque es, por supuesto, menos segura que la de configurar correctamente la autenticación de clave pública, pero usted probablemente sabe que ya.

También es menos seguro que @grawity la respuesta acerca de la conexión de re-uso, pero tiene la ventaja de no tener que introducir la contraseña de forma interactiva.

Usted podría considerar la posibilidad de @grawity la respuesta de una alternativa a la clave pública auth con una frase de contraseña de clave privada y el almacenamiento en caché (es decir, ssh-agent). Entonces mi respuesta sería una alternativa para pubkey auth sin una frase de contraseña en el archivo de clave privada.

1voto

styrofoam fly Puntos 108

El uso de la contraseña de administrador.

Algunos administradores de contraseñas (ex. KeePassXC) tienen la función de "auto-tipo". Almacenar la contraseña en el administrador de contraseñas, desbloquear la base de datos al ejecutar el administrador y cada vez ssh le pide su contraseña, presione una combinación de teclas que hace que la contraseña de administrador escribe tu contraseña larga a la consola.

No hay necesidad de copiar, se acuerda de nada (excepto la contraseña para desbloquear la base de datos) y usted puede tener una contraseña fuerte, sin maceración de 30 caracteres cada vez que intente iniciar sesión.

Usted puede elegir su favorito de esta lista: https://en.wikipedia.org/wiki/List_of_password_managers

0voto

slebetman Puntos 210

Otra alternativa es el uso de una interfaz gráfica de usuario del cliente ssh. En Windows la opción obvia sería la Masilla. También hay una versión para Linux de Masilla, en particular, la mayoría de las distros basadas en Debian como Ubuntu, normalmente incluyen la Masilla en sus repos.

Otro muy buen cliente es Termius. Es compatible no sólo con Windows y Linux, pero también OSX, iOS y Android. A pesar de que fue diseñado principalmente para los teléfonos de la versión de escritorio es bastante bueno.

Si no me equivoco, el venerable Hyperterminal en Windows también tiene un cliente ssh, construido en el pero no he usado windows en un tiempo muy largo, así que no estoy del todo seguro.

Todos los clientes de GUI que incluyen la posibilidad de guardar los ajustes de conexión que incluye su nombre de usuario y contraseña.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: