¿Cómo configuro SSH para no tener que escribir mi contraseña cuando me conecto a un host?
Si usa GNOME, la aplicación seahorse ("Contraseñas y claves de cifrado") puede hacerlo por usted: Archivo -> Nuevo -> Clave de shell seguro .
Si prefiere el terminal, ejecute ssh-keygen -t <type>
para generar un par de llaves. Los tipos de par de llaves válidos son:
El programa le pedirá una frase de contraseña y una ubicación donde guardar la nueva clave. Se recomienda usar la ruta predeterminada sugerida porque todas las demás herramientas la buscarán allí.
Una vez más, seahorse a menudo puede hacerlo por usted: en Mis claves personales , haga clic con el botón derecho en su clave SSH y elija Configurar clave para shell seguro .
O, ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
en la terminal.
O, completamente manualmente paso a paso:
.ssh
en el directorio de inicio del usuario remoto en el host remoto.authorized_keys
(si aún no existe).umask
remoto sea más liberal de lo normal, haga que el archivo no se pueda escribir en grupo: chmod go-w ~/.ssh ~/.ssh/authorized_keys
.~/.ssh/id_rsa.pub
) en el archivo ~/.ssh/authorized_keys
remoto.Si carga su clave privada en un agente ssh , mantendrá la clave desencriptada en la memoria. Queremos que esto evite volver a ingresar la contraseña cada vez que Shell en un servidor.
Primero, el agente debe iniciarse o la ruta de un socket de comunicación iniciado debe cargarse en una variable. Ejecutar ssh-agent en un terminal generará comandos para asignar y configurar las variables del agente. Estos comandos se pueden guardar en un archivo para su uso en un terminal diferente. Alternativamente, uno podría ejecutar estos comandos y olvidarse de reutilizar el mismo agente en otro terminal. por ejemplo: eval $(ssh-agent)
.
Cargar la clave es una simple cuestión de ejecutar ssh-add
y darle la frase de contraseña.
Si está utilizando GNOME, gnome-keyring-daemon generalmente proporciona la misma funcionalidad de agente SSH que ssh-agent, por lo que no debería necesitar iniciar nada. GNOME también cargará y desbloqueará automáticamente la clave al iniciar sesión.
Si todo se hizo correctamente, usar ssh [email protected]
no le pedirá una contraseña. Si algo está mal con el agente y no con la clave, se le pedirá que escriba la contraseña para la clave y no la contraseña para la cuenta del usuario.
Cualquier cosa que use ssh para la comunicación funcionará sin ingresar la contraseña de la cuenta de usuario cuando se cargue la clave correcta en el agente. Programas como scp , sftp y rsync hacen uso de esto.
id_dsa
en lugar de id_rsa
, y ECDSA tendrá id_ecdsa
.authorized_keys2
, pero es muy poco probable que encuentre algo anterior a la versión 5.0 en uso.lsh
, ssh.com
, y otros servidores SSH (Unix y no) no están incluidos en este tutorial.Copiando la clave pública a un host remoto:
ssh-copy-id -i ~/.ssh/id_rsa.pub myaccount @ remotehost # this cat ~/.ssh/id_rsa.pub | ssh myaccount @ remotehost\ 'mkdir -p ~/.ssh; cat >> ~/.ssh/authorized_keys '# o este
ssh-agent> ~/.ssh/cross-terminal-agent . ~/.ssh/cross-terminal-agent
No especificaste en qué Unix estás, a qué Unix te estás conectando, qué Shell estás usando, qué variante de SSH estás usando, etc. Por lo tanto, es posible que algo de esto deba ajustarse ligeramente; esto se basa en versiones razonablemente recientes de OpenSSH, que se utiliza en muchas variantes de Unix.
Esto es todo desde su sistema de escritorio local.
ssh-keygen
Asegúrese de usar el valor predeterminado para el nombre de clave. Le sugiero que haga establezca una frase de contraseña en esa clave, de lo contrario es un problema de seguridad. "-t rsa" no sería una mala idea, pero probablemente no sea necesario.
ssh-copy-id [email protected]
Eso le pedirá la contraseña que usaría para iniciar sesión y configurará las cosas authorized_keys para usted. (no hay necesidad de hacerlo a mano)
Luego esto:
`ssh-agent`
o tal vez esto:
exec ssh-agent sh
o:
exec ssh-agent bash
Se iniciará un agente SSH que puede mantener su clave. En muchas variantes modernas de Unix, si está conectado gráficamente, esto ya habrá ocurrido. La primera variante (con las comillas invertidas) pone un agente ssh en segundo plano y configura las variables de entorno para hablar con él. Los dos segundos hacen que el agente ejecute un Shell por usted, de modo que cuando salga del Shell, el agente salga.
Muchas variantes modernas de Unix ya tendrán un agente ejecutándose para usted, especialmente si inició sesión gráficamente. Puede probar "ps aux | grep ssh-agent
" o "ps -ef | grep ssh-agent
"; Si algo ya se está ejecutando, use eso.
Entonces finalmente:
ssh-add
Se le pedirá una frase de contraseña; Dale el que le diste a ssh-keygen. También hay formas de hacerlo preguntar gráficamente. Y puede poner las cosas ssh-agent y ssh-add en sus scripts de inicio de sesión (la configuración es diferente según el Shell que use) para automatizar esto, pero algunas variantes de Unix (Ubuntu Linux actual, por ejemplo) hacen la mayor parte de eso automáticamente, así que todo lo que necesita hacer es crear una clave y usar ssh-copy-id para configurarlo en el host remoto.
Ahora, "ssh [email protected]
" debería funcionar sin pedir ninguna autenticación. Detrás de escena, está usando una tecla que el agente ssh está sosteniendo, y le pide al agente que haga los trucos de firma mágicos para ello.
Es posible hacer esto en PuTTY también en Windows.
Una vez que haya configurado todo el par de claves pública/privada (como muestran otras respuestas aquí) ejecute PuttyGen. Allí, cargue la clave privada existente que ya ha configurado y luego guárdela como clave privada PuTTY (ppk).
Luego, en PuTTY, simplemente haga clic en la sesión guardada en la que desea iniciar sesión automáticamente y haga clic en Cargar. Desde aquí, vaya a Conexión -> Datos en el panel izquierdo, y en "Nombre de usuario de inicio de sesión automático" escriba el nombre de usuario para ese servidor remoto:
Después de eso, ingrese a Conexión -> SSH -> Aut. Y busque el ppk que hizo en PuttyGen:
Luego regrese a la página de sesión y guarde la sesión que cargó anteriormente.
De una pregunta muy similar en ServerFault , recomiendo usar ssh-copy-id , que realiza todos los pasos relacionados con la configuración de las claves de autenticación para usted:
ssh-copy-id es una secuencia de comandos que usa ssh para iniciar sesión en una máquina remota (probablemente usando una contraseña de inicio de sesión, por lo que la autenticación de contraseña debería estar habilitada, a menos que haya hecho un uso inteligente de varias identidades)
También cambia los permisos de inicio del usuario remoto, ~/.ssh, y ~/.ssh/authorized_keys para eliminar la capacidad de escritura del grupo (lo que de otro modo impediría que inicies sesión, si el sshd remoto tiene StrictModes establecido en su configuración).
Si se proporciona la opción -i, se usa el archivo de identidad (predeterminado en ~/.ssh/identity.pub), independientemente de si hay alguna clave en su agente ssh.
Todo lo que necesitas hacer es simplemente esto:
ssh-copy-id [email protected]
Escribe tu contraseña una vez, ¡y listo!
Aparte de todo lo que ya se ha dicho sobre cómo configurar las teclas ssh, recomiendo Llavero como un ssh-agent la interfaz de la consola, que le permite manejar uno solo por proceso del sistema en lugar de por inicio de sesión.
Sé que ya existen herramientas de GNOME y KDE que hacen lo mismo, pero si usted es del tipo de adicto a la consola , este es excelente (y puede usarse en la mayoría de los sistemas Unix).
Para usarlo, simplemente agregue lo siguiente a su ~/.bashrc
(similar para otros shells):
if type keychain >/dev/null 2>/dev/null; then
keychain --nogui -q <all your SSH/PGP keys>
[ -f ~/.keychain/${HOSTNAME}-sh ] && . ~/.keychain/${HOSTNAME}-sh
[ -f ~/.keychain/${HOSTNAME}-sh-gpg ] && . ~/.keychain/${HOSTNAME}-sh-gpg
fi
PuTTY tiene una opción -pw
que te permite crear un acceso directo en el escritorio como este:
"C:\Program Files\PuTTY\putty.exe" -ssh [email protected] -pw your_password
Escribí este tutorial muy breve después de frustrarme REALMENTE con tutoriales REALMENTE REALMENTE largos, porque en realidad es muy simple :)
test -f ~/.ssh/id_rsa.pub || ssh-keygen -t rsa #press enter twice if given prompts, then "ssh-add"
scp ~/.ssh/id_rsa.pub [email protected]:/tmp/ #type password
ssh [email protected] #type password
cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
rm /tmp/id_rsa.pub
http://linuxproblem.org/art_9.html
Su objetivo
Desea utilizar Linux y OpenSSH para automatizar sus tareas. Por lo tanto, necesita un inicio de sesión automático desde el Host A/usuario a al Host B/usuario b. No desea ingresar ninguna contraseña, ya que desea llamar a ssh desde un script de Shell.
ssh-keygen
. (Si le dice que tiene que especificar un tipo, haga ssh-keygen -t rsa
). Cuando le solicite una ubicación de archivo, tome la opción predeterminada. Cuando te pide una frase de contraseña, pulsa Intro para no hacer una frase de contraseña.cat ~/.ssh/id_rsa.pub
(o cualquiera que sea la ubicación predeterminada del archivo en ssh-keygen
, aunque tendría que tener una realmente antigua ssh
instalación para que sea diferente); Copia la salida a tu portapapeles.~/.ssh/authorized_keys
(si ~/.ssh
no existe, slogin
a algún lugar; esta es la forma simple y fácil de crearlo con los permisos adecuados). Pegue su portapapeles (que contiene el id_rsa.pub
del otro Host) en este archivo.Si quieres hacerlo todo en la terminal en Linux:
En el host
cd ~/.ssh /
ssh-keygen -t {rsa | dsa} -b {1024 | 2048 | 4096} -C "texto de comentario si desea" -f id_ArbitraryName
Los elementos en {} son opciones, use rsa o dsa y elija el tamaño de bit (más grande es más seguro)
Luego debe agregar los permisos a los archivos authorized_keys y authorized_keys2.
cat id_ArbitraryName.pub >> authorized_keys
cat id_AribtraryName.pub >> authorized_keys2
Luego descargue el archivo id_AribtraryName en el cuadro del que desea ssh. Si la caja de conexión está basada en Unix, puede ser necesario un archivo de configuración (en PuTTY, alguien que se menciona arriba).
En la caja de conexión
En su archivo de configuración - vim ~/.ssh/config
Host example.Host.com # o el nombre de su computadora
Nombre de usuario
Archivo de identidad ~/.ssh/id_ArbitraryName
El archivo de configuración necesita permisos de 600. La carpeta SSh necesita 700.
Espero que te ayude si te encuentras con el problema de configuración que se omite mucho.