Tengo un servidor al que tengo que acceder con frecuencia a través de ssh, porque lo calculo. Ahora, el centro de cómputo prohíbe explícitamente las claves SSH porque son "inseguras". Sienten que escribir mi contraseña, en un teclado, cada vez que sea posible frente a otros humanos, es una forma mucho más segura de iniciar sesión.
Ahora; No puedo cambiar de opinión (lo intenté).
¿Hay alguna manera de almacenar al menos temporalmente las contraseñas SSH, la forma en que GIT puede almacenar contraseñas en un caché durante un tiempo definido?
the computing center explicitly forbids SSH-keys because they are "insecure"
- mi opinión al respecto? Encuentre un nuevo servidor host, porque el suyo es obviamente inepto.publickey
autenticación. Si deshabilita lapassword
autenticación en el servidor, evita que todos los atacantes intenten adivinar las contraseñas. Y si un atacante intenta un ataque mitm contra un cliente que no ha almacenado previamente la clave pública del servidor, está mucho mejor protegidopublickey
que si estuviera utilizando lapassword
autenticación.Respuestas:
Reutilización de conexión
SSHv2 permite que la misma conexión autenticada establezca múltiples 'canales': shell interactivo, comando por lotes, SFTP, junto con los secundarios, como el reenvío de agente o el reenvío TCP. Su servidor probablemente sea compatible con la multiplexación de conexiones de forma predeterminada. (Si sus administradores se quejan, no está almacenando en caché su contraseña en ninguna parte, está almacenando en caché toda la conexión).
Con OpenSSH tienes
ControlMaster
yControlPath
opciones (-M y -S) para hacer uso de esto:Inicie una conexión SSH 'maestra' usando
-M
. (Dado que aún no tiene un ControlPath en su configuración, debe especificarlo en la línea de comandos usando-S
. Tiene que vivir mucho tiempo, por lo que agrego las-fN
opciones para dejar en segundo plano; de lo contrario, son técnicamente opcionales).Has vuelto a la cáscara local.
Inicie una nueva conexión a través del maestro:
Estas en.
Para que esto sea útil para Git / rsync / SFTP, debe configurarlo
ControlPath
en su configuración, ya que no podrá especificar-S
todo el tiempo:Puede automatizar esto: también tienen versiones recientes de OpenSSH
ControlPersist
que establecen automáticamente una conexión maestra en segundo plano si aún no hay una. Esto le permite omitir el paso 1 y simplemente usar ssh como lo haría normalmente.Configuración en
~/.ssh/config
:La primera conexión solicita contraseña:
El segundo no:
Para controlar el maestro multiplex (detenerlo o configurar reenvíos TCP), use la
-O
opciónUn método similar es compatible con las versiones recientes de PuTTY .
fuente
Utilizar
sshpass
sshpass ( github , man page ) es una herramienta que alimenta automáticamente la contraseña a ssh. La forma segura de usarlo es esta:
Esto leerá la contraseña
~/.ssh/compute_password
, al igual que un archivo de clave privada sin frase de contraseña. Puede poner elsshpass
comando en un pequeño script de shell o un alias de shell para evitar escribir ese comando completo. Lamentablemente, no he encontrado una manera de hacerlo~/.ssh/config
.(También es posible especificar la contraseña directamente en la línea de comando para
sshpass
, pero esto debe evitarse, ya que filtra la contraseña a cualquiera que pueda hacerlops
)Comparación con otros métodos.
Por supuesto, este enfoque es menos seguro que la autenticación de clave pública configurada correctamente, pero probablemente ya lo sepa.
También es menos seguro que la respuesta de @grawity sobre la reutilización de la conexión, pero tiene la ventaja de no tener que ingresar la contraseña de manera interactiva.
Podría considerar la respuesta de @grawity como una alternativa a la autenticación de clave pública con una frase de contraseña y almacenamiento en caché de clave privada (es decir
ssh-agent
). Entonces mi respuesta sería una alternativa a la autenticación de clave pública sin una frase de contraseña en el archivo de clave privada.fuente
head -c 16 /dev/urandom | base64
para 128 bits) y no la usa en otros sistemas, es sabiamente similar a una clave. Tan difícil de fuerza bruta, y tan simple de usar desde el archivo si no está cifrado. Esto también va para el malo, si obtienen el archivo. La única diferencia es que la contraseña se envía al servidor tal cual, mientras que las claves tienen mejores matemáticas para demostrar que posee la clave privada correcta sin revelarla, y en cuanto a usabilidad, es más difícil cifrar el archivo que contiene la contraseña (no herramientas estándar).Utiliza el administrador de contraseñas.
Algunos administradores de contraseñas (por ejemplo, KeePassXC) tienen la función 'auto-type'. Usted almacena la contraseña en el administrador de contraseñas, desbloquea la base de datos cuando ejecuta el administrador y cada vez que le
ssh
solicita su contraseña, presiona una combinación de teclas que hace que el administrador de contraseñas escriba su contraseña larga en la consola.No es necesario copiar, recuerde nada (excepto la contraseña para desbloquear la base de datos) y puede tener una contraseña segura sin mezclar esos 30 caracteres cada vez que intente iniciar sesión.
Puede elegir su favorito de esta lista: https://en.wikipedia.org/wiki/List_of_password_managers
fuente
gnome-terminal
cambia su título assh somehost
cuando ssh me pide una contraseña para que pueda comparar la ventana de título con esto sin problemas. No sé nada acerca de las características 'anti-keylogging': estoy usando KeePassXC en la terminal a diario y lo peor que tuve que enfrentar es elegir la cuenta adecuada de la lista.Otra alternativa es usar un cliente ssh GUI. En Windows, la elección obvia sería PuTTY . También hay una versión Linux de PuTTY, en particular la mayoría de las distribuciones basadas en Debian como Ubuntu normalmente incluyen PuTTY en su repositorio.
Otro cliente realmente bueno es Termius . No solo es compatible con Windows y Linux, sino también con OSX, iOS y Android. Aunque fue diseñado principalmente para teléfonos, la versión de escritorio es bastante buena.
Si no me equivoco, el venerable Hyperterminal en Windows también tiene / tenía un cliente ssh incorporado, pero no he usado Windows en mucho tiempo, así que no estoy completamente seguro.
Todos los clientes GUI incluyen la capacidad de guardar la configuración de conexión que incluye su nombre de usuario y contraseña.
fuente