GestioneSSHCertificati: differenze tra le versioni

Da GazziNet.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
Nessun oggetto della modifica
 
(3 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
= Configurare Accesso SSH con Chiavi da manager01.gazzi.local =
Obiettivo: configurare l'accesso SSH senza password da manager01.gazzi.local verso altre macchine Linux tramite chiavi SSH.
1. **Generazione chiavi SSH (sul nodo monitor01)**
    ssh-keygen -t rsa -b 4096 -C "monitor01" -f ~/.ssh/id_rsa
    - Non inserire una passphrase se vuoi accesso automatico.
    - Il file pubblico sarà ~/.ssh/id_rsa.pub
2. **Distribuzione della chiave pubblica agli host remoti**
    Per ogni macchina remota:
    ssh-copy-id utente@host_remoto
    Oppure, manualmente:
    cat ~/.ssh/id_rsa.pub | ssh utente@host_remoto 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && chmod 700 ~/.ssh'
3. **Verifica connessione**
    ssh utente@host_remoto
    -> non dovrebbe richiedere la password
4. **Automazione (script `setup_ssh_keys.sh`)**
    Lo script automatizza i punti 1 e 2.


== Introduzione ==
---setup_ssh_keys.sh
Questa guida spiega come generare una chiave SSH su ''manager01.gazzi.local'' e copiarla su altre macchine per permettere l'accesso senza password.


== Procedura Manuale ==
#!/bin/bash
 
<div class="mw-collapsible mw-collapsed" style="width:100%">
# Script da eseguire su manager01.gazzi.local
<div class="mw-collapsible-content">
# Scopo: configurare chiavi SSH e copiarle ai nodi remoti
 
=== 1. Generare la Chiave SSH ===
# === CONFIGURA QUI ===
Aprire il terminale su ''manager01.gazzi.local'' e lanciare:
REMOTE_USER="nome_utente_remoto"
 
HOSTS=("host1.gazzi.local" "host2.gazzi.local" "host3.gazzi.local")
<syntaxhighlight lang="bash">
KEY_PATH="$HOME/.ssh/id_rsa"
ssh-keygen -t ed25519 -C "manager01.gazzi.local"
# =====================
</syntaxhighlight>
 
# 1. Genera la chiave se non esiste
Premere sempre '''INVIO''' per accettare i percorsi di default e lasciare la passphrase vuota.
if [ ! -f "$KEY_PATH" ]; then
 
    echo "Generazione chiave SSH..."
=== 2. Copiare la Chiave Sulle Macchine Remote ===
    ssh-keygen -t rsa -b 4096 -C "monitor01.gazzi.local" -f "$KEY_PATH" -N ""
Per ogni macchina su cui vuoi autenticarti senza password, eseguire:
else
 
    echo "Chiave SSH già presente: $KEY_PATH"
<syntaxhighlight lang="bash">
fi
ssh-copy-id utente@host_remoto
</syntaxhighlight>
# 2. Copia la chiave pubblica alle macchine remote
 
for host in "${HOSTS[@]}"; do
Esempio pratico:
    echo "Copia della chiave su $host..."
 
    ssh-copy-id "$REMOTE_USER@$host"
<syntaxhighlight lang="bash">
done
ssh-copy-id root@web01.gazzi.local
</syntaxhighlight>
echo "Configurazione completata. Verifica con: ssh $REMOTE_USER@<host>"
 
=== 3. Testare la Connessione ===
Verificare che la connessione SSH ora avvenga senza password:
 
<syntaxhighlight lang="bash">
ssh utente@host_remoto
</syntaxhighlight>
 
</div>
</div>
 
== Script Automatico ==
 
<div class="mw-collapsible mw-collapsed" style="width:100%">
<div class="mw-collapsible-content">
 
=== Script Bash: setup_ssh_keys.sh ===
 
<syntaxhighlight lang="bash">
#!/bin/bash
 
# Script da eseguire su manager01.gazzi.local
# Crea la chiave SSH (se non esiste) e la copia su una lista di host remoti
 
read -p "Inserisci il nome utente per le macchine remote: " REMOTE_USER
 
# Elenco degli host remoti
HOSTS=("web01.gazzi.local" "db01.gazzi.local" "app01.gazzi.local")
 
# 1. Generazione della chiave SSH se assente
if [ ! -f "$HOME/.ssh/id_ed25519" ]; then
    echo "[INFO] Genero nuova coppia di chiavi SSH..."
    ssh-keygen -t ed25519 -C "manager01.gazzi.local" -N "" -f "$HOME/.ssh/id_ed25519"
else
    echo "[INFO] Chiave SSH già esistente, salto la creazione."
fi
 
# 2. Copia della chiave SSH su ciascun host remoto
for HOST in "${HOSTS[@]}"; do
    echo "[INFO] Copio la chiave SSH su $HOST..."
    ssh-copy-id "${REMOTE_USER}@${HOST}"
done
 
echo "[FINE] Configurazione completata."
</syntaxhighlight>
 
</div>
</div>
 
== Esecuzione dello Script ==
 
<syntaxhighlight lang="bash">
chmod +x setup_ssh_keys.sh
./setup_ssh_keys.sh
</syntaxhighlight>
 
== Note Importanti ==
 
* La chiave privata deve essere protetta. Non condividerla mai.
* La chiave pubblica può essere distribuita liberamente.
* Se un host remoto ha una porta SSH diversa dalla 22, modificare '''ssh-copy-id''' aggiungendo l'opzione '''-p PORTA'''.
 
== Collegamenti Utili ==
 
* [https://man.openbsd.org/ssh-keygen ssh-keygen man page]
* [https://man.openbsd.org/ssh-copy-id ssh-copy-id man page]

Versione attuale delle 07:40, 30 apr 2025

Obiettivo: configurare l'accesso SSH senza password da manager01.gazzi.local verso altre macchine Linux tramite chiavi SSH.

1. **Generazione chiavi SSH (sul nodo monitor01)**
   ssh-keygen -t rsa -b 4096 -C "monitor01" -f ~/.ssh/id_rsa

   - Non inserire una passphrase se vuoi accesso automatico.
   - Il file pubblico sarà ~/.ssh/id_rsa.pub

2. **Distribuzione della chiave pubblica agli host remoti**
   Per ogni macchina remota:
   ssh-copy-id utente@host_remoto

   Oppure, manualmente:
   cat ~/.ssh/id_rsa.pub | ssh utente@host_remoto 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && chmod 700 ~/.ssh'

3. **Verifica connessione**
   ssh utente@host_remoto
   -> non dovrebbe richiedere la password

4. **Automazione (script `setup_ssh_keys.sh`)**
   Lo script automatizza i punti 1 e 2.

---setup_ssh_keys.sh

#!/bin/bash

# Script da eseguire su manager01.gazzi.local
# Scopo: configurare chiavi SSH e copiarle ai nodi remoti

# === CONFIGURA QUI ===
REMOTE_USER="nome_utente_remoto"
HOSTS=("host1.gazzi.local" "host2.gazzi.local" "host3.gazzi.local")
KEY_PATH="$HOME/.ssh/id_rsa"
# =====================

# 1. Genera la chiave se non esiste
if [ ! -f "$KEY_PATH" ]; then
    echo "Generazione chiave SSH..."
    ssh-keygen -t rsa -b 4096 -C "monitor01.gazzi.local" -f "$KEY_PATH" -N ""
else
    echo "Chiave SSH già presente: $KEY_PATH"
fi

# 2. Copia la chiave pubblica alle macchine remote
for host in "${HOSTS[@]}"; do
    echo "Copia della chiave su $host..."
    ssh-copy-id "$REMOTE_USER@$host"
done

echo "Configurazione completata. Verifica con: ssh $REMOTE_USER@<host>"