Automatizar copias de seguridad a través de SSH en un escritorio Linux

2

Actualmente tengo una configuración que me permite conectarme a todas las computadoras de mi red doméstica a través de claves SSH y RSA. Soy muy consciente de la seguridad, por lo que todas mis claves están protegidas con frase de contraseña. Básicamente, me gustaría configurar algo donde estoy ejecutando Unison en un trabajo cron para hacer una copia de seguridad en un servidor de archivos en mi red, al que llamaremos timmy. Me di cuenta de que la primera vez que trato de usar una clave en mi computadora portátil Ubuntu teeks, aparece un cuadro de diálogo que aparece y me pide que escriba mi frase clave. He oído que para los servidores que necesitan hacer copias de seguridad automáticas como esta, se debe usar ssh-agentpara solicitar la frase de contraseña clave al iniciar sesión / iniciar el servidor. ¿Cómo puedo configurar esto teeks?

Básicamente me gustaría que ocurriera lo siguiente:

  1. Cuando inicio y entro en el sistema operativo, solicito visualmente la frase de contraseña como se hace cuando uso una clave por primera vez.
  2. Si utilizo SSH en esta computadora (ya que está conectada a Internet) y aún no he proporcionado la frase de contraseña SSH, solicítela. (A veces, es posible que deba reiniciar la máquina de forma remota a través de SSH, por lo que me conectaré a SSH después de que se reinicie y me gustaría poder autenticar la clave sin tener que VNC y hacerlo manualmente).

¿Hay alguna herramienta que pueda usar para lograr esto?

Naftuli Kay
fuente

Respuestas:

1

Puede iniciar ssh-agent cuando inicie sesión en el shell colocando lo siguiente en su .profile:

SSH_ENV="$HOME/.ssh/environment"

function start_agent {
     echo "Initialising new SSH agent..."
     /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
     echo succeeded
     chmod 600 "${SSH_ENV}"
     . "${SSH_ENV}" > /dev/null
     /usr/bin/ssh-add;
}

# Source SSH settings, if applicable

if [ -f "${SSH_ENV}" ]; then
     . "${SSH_ENV}" > /dev/null
     #ps ${SSH_AGENT_PID} doesn't work under cywgin
     ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
         start_agent;
     }
else
     start_agent;
fi
Chris Ting
fuente
Entonces, ¿qué significará esto en mi caso de uso? Si introduzco SSH en la máquina después de que se haya iniciado inicialmente, ¿mostrará esto si las llaves aún no se han desbloqueado? Por el contrario, si ingreso SSH y ya he desbloqueado las claves, ¿no tendré que volver a ingresar la frase de contraseña? ¿Hará todo correctamente después de un nuevo arranque?
Naftuli Kay
1
Esto iniciará ssh-agent cuando inicies sesión. Si el script encuentra un ssh-agent en ejecución, entonces no necesita volver a ingresar la frase de contraseña. De lo contrario, iniciará un agente ssh y le pedirá la frase de contraseña. El script solo se ejecuta cuando inicia sesión. Después de un nuevo inicio, no se ejecutará ssh-agent. El agente ssh se iniciará cuando inicies sesión.
Chris Ting
¿Qué pasa con el aspecto gráfico vs shell? ¿Aparecerá tanto en una sesión SSH la primera vez como gráficamente, con un tipo de autenticación "el primero gana"? Gracias por su respuesta, parece ser lo que estoy buscando.
Naftuli Kay
1
Solo se le solicitará el primer inicio de sesión. No importa si ese inicio de sesión es gráfico o desde el shell. En el segundo inicio de sesión, se comprueba si hay un agente ssh en ejecución, y si se encuentra uno, no verá otro mensaje.
Chris Ting
En realidad, esto arruinó todo en mi computadora portátil. Cuando iniciaba sesión, me solicitaban gráficamente la contraseña SSH, y luego esencialmente me devolvía a la pantalla de inicio de sesión. Tuve que arrancar desde un shell raíz y editar mi perfil para evitar que esto suceda. ¿Qué salió mal?
Naftuli Kay
0

Para evitar ingresar contraseñas ssh (y automatizar tareas), puede usar certificados ssh, la configuración básica es generar un certificado para el usuario desde el que desea iniciar sesión, luego copiar este certificado en la máquina (s) / usuario (s) quiere conectarse a Es necesario asegurarse de que su servidor ssh esté configurado para aceptar el inicio de sesión del certificado. Debe asegurarse de que su certificado no se vea comprometido cuando lo copie de una máquina a otra.

Puede ver ejemplos en http://www.panticz.de/ssh_certificate_authentication e información más detallada en el sitio openssh http://www.openssh.com/

Saludos

franblay
fuente
Vuelva a leer la pregunta ... OP afirma que está utilizando la autenticación basada en certificados RSA. El problema es que sus claves privadas están encriptadas, por lo que necesita una forma de ingresar la contraseña para acceder a la clave. No está utilizando la autenticación ssh basada en contraseña.
Dave Sherohman
Lo siento, no soy hablante nativo de inglés y me perdí la pregunta ;-). Y luego ... ¿Por qué no almacenar certificados no encriptados? Recuerdo que tuve este problema con los certificados de Apache, era necesario ingresar la frase de contraseña cada vez que se reiniciaba Apache, ya que confiaba en mi propio servidor, guardaba el certificado sin registrar y eso funcionó para mí.
franblay