Cliente Secure Shell [Secure Shell] para acceso seguro a equipos remotos. SSH es un programa para iniciar sesión en un equipo remoto y ejecutar comandos en él. Proporciona comunicaciones cifradas seguras entre dos hosts no confiables a través de una red insegura. Incluye los programas scp [ver], sftp [ver], ssh [ver], ssh-add, ssh-agent, ssh-argv0, ssh-copy-id, ssh-keygen [ver] y ssh-keyscan
ssh-agent es un programa en segundo plano [daemon] que se inicia automáticamente cuando se iniciala sesión. Para ver las variable de entorno:
$ echo $SSH_AGENT_PID
$ echo $SSH_AUTH_SOCK
$ ssh-add
$ ssh-add ~/.ssh/my_specific_key
$ ssh-add -l
$ ssh-add -D
$ ssh-add -d ~/.ssh/key_dev_server
$ ssh-add -x
$ ssh-add -X
$ ssh-add -t 600 ~/.ssh/temporal_key
$ ssh-copy-id usuario@servidor.ejemplo.com
$ ssh-copy-id -i ~/.ssh/mi_clave_publica.pub usuario@servidor.ejemplo.com
Una vez ejecutado con éxito, se puede iniciar sesión inmediatamente sin contraseña:
$ ssh usuario@servidor.ejemplo.com
$ ssh-keyscan servidor.ejemplo.com >> ~/.ssh/known_hosts
$ ssh-keyscan -f hosts.txt
$ ssh-keyscan -t rsa,ed25519 servidor.ejemplo.com
Nota.- El comando "ssh-argv0" es una utilidad auxiliar de bajo nivel y no está diseñado para ser usado directamente por el usuario final. Su función principal es permitir que los comandos del paquete openssh-client como ssh, sftp, scp se instalen como enlaces [symlinks] a un único ejecutable, utilizando el nombre del enlace para determinar qué programa ejecutar.
1.-
Integrar el uso de ssh-agent y ssh-add en la configuración de inicio de shell [.bashrc]
$ nano ~/bashrc
Y añadir al final del archivo:
# ===============================================
# Configuración para SSH Agent
# ===============================================
#
# 1. Comprobar si el agente ya está en ejecución
if [ -z "$SSH_AUTH_SOCK" ]; then
# 2. Buscar un archivo que contenga las variables del agente (si lo hemos guardado antes)
AGENT_INFO="$HOME/.ssh/ssh-agent.info"
#
if [ -f "$AGENT_INFO" ]; then
# 3. Reusar un agente existente si el PID todavía existe
. "$AGENT_INFO" > /dev/null
if kill -0 "$SSH_AGENT_PID" 2>/dev/null; then
# El agente existe y está en ejecución, todo OK.
echo "Reutilizando ssh-agent (PID $SSH_AGENT_PID)"
else
# El agente no existe, limpiamos el archivo de información.
rm -f "$AGENT_INFO"
# 4. Iniciar un nuevo agente y guardar la información
echo "Iniciando nuevo ssh-agent..."
ssh-agent > "$AGENT_INFO"
. "$AGENT_INFO" > /dev/null
#
# Opcional: Añadir la clave principal automáticamente
# ssh-add 2>/dev/null
fi
else
# 4. Iniciar un nuevo agente y guardar la información
echo "Iniciando nuevo ssh-agent..."
ssh-agent > "$AGENT_INFO"
. "$AGENT_INFO" > /dev/null
#
# Opcional: Añadir la clave principal automáticamente
# ssh-add 2>/dev/null
fi
fi
Una vez guardada la configuración:
$ source ~/.bashrc
Se verá el mensaje: "Iniciando nuevo ssh-agent...".
Si la línea de ssh-add está comentada, se debe añadir las claves manualmente
$ ssh-add
A partir de este momento cualquier conexión SSH que se inicie, no se volverá a pedir la frase de contraseña, ya que el ssh-client le pedirá la clave al ssh-agent que ya está desbloqueado.