ssh sin password

¿En qué podemos ayudarte?
< Regresar
Estás aquí:
Imprimir
  1. Validar si existe alguna llave
  2. Generar un nuevo par llave
  3. Copiar la llave Publica
  4. Entrar al host sin password
  5. Deshabilitar la autenticacion en el host remoto
  6. Agregando mas seguridad

Validar si existe llave

ls -al ~/.ssh/*.pub

Si existe llave se puede saltar el paso de la generacion de la llave o respaldarla y crear una nueva

Generar un nuevo par de llaves

ssh-keygen -t rsa -b 4096
ls ~/.ssh/id_*

  • Genera un nuevo par de llaves de 4096 bits
  • Solicitara un passphrase aquí hay que dar “enter” dos veces para que se quede en blanco o sin passphrase

Copiar la llave Publica

ssh-copy-id remote_username@server_ip_address

Se conectara al host copiara la llave y regresara el prompt local

Si por alguna razon no esta disponible el ssh-copy-id

cat ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

Entrar al host sin password

ssh remote_username@server_ip_address

Si todo va bien se debe conectar al host remoto sin password

Deshabilitar la autenticacion en el host remoto

Antes de continuar validar que se tenga acceso al host remoto con un usuario que tenga privilegios de sudo

  • ssh sudo_user@server_ip_address
  • nano /etc/ssh/sshd_config
    • PasswordAuthentication no (estas 2 lineas hacen que no se pueda entrar via ssh normal y solo con el token generado, la sugerencia es que se habilite pero tener una sesion abierta y probar con una sesion nueva, por si falla algo no perder el acceso)
    • ChallengeResponseAuthentication no
    • UsePAM no (en centos esta variable debe dejarse en yes)
    • systemctl restart sshd

Agregando mas seguridad

En el host remoto editar el authorized_keys
nano ~/.ssh/authorized_keys

El archivo comienza con entradas como ssh-rsa o ssh-dsa y luce paraecido a esto,

from="192.168.0.1", command="/home/user/validate-rsync.sh"


Agregar las siguientes lineas antes del “ssh-“, esto ayudara a limitar desde donde las conexiones pueden ser hechas, y que comandos pueden ser ejecutados, el archivo pudiera verse asi:

from="187.190.242.205",no-port-forwarding,no-X11-forwarding,no-pty,command="/home/zague/validate-rsync.sh" ssh-rsa

Solo probe con ip pero puede probarse con nombre de host. Ahora solo queda crear el archivo /home/user/validate-rsync.sh.

nano /home/user/validate-rsync.sh

#!/bin/bash
case $SSH_ORIGINAL_COMMAND in
test*)
$SSH_ORIGINAL_COMMAND
;;
*rsync*)
$SSH_ORIGINAL_COMMAND
;;
*chown*)
$SSH_ORIGINAL_COMMAND
;;
*gunzip*)
$SSH_ORIGINAL_COMMAND
;;
*root*)
$SSH_ORIGINAL_COMMAND
;;
*)
echo "only few commands are allowed -ACCESS DENIED--"
exit 1
;;
esac


Asignarle privilegios de ejecución
chmod +x

En el script anterior cada uno de los casos pertenece a uno de los comandos que serán ejecutados, de tal manera que se revisan secuencialmente y solo puede ejecutar esos comandos. para mas referencia ver el articulo de respaldos automáticos con rsync

Table of Contents

Deja un comentario