Ssh è lo strumento più importante per ogni amministratore di sistema. In questo articolo raccogliamo alcuni “trucchi” che rendono la vita più facile a chi ne fa un uso intenso.
ssh senza password
È molto semplice connettersi ad un server autenticandosi con la propria chiave, senza dover sempre digitare la password.
- generiamo una coppia chiave pubblica-chiave privata sulla nostra macchina:
# ssh-keygen
- Se esiste sulla nostra macchina il comando ssh-copy-id, copiamo il file .pub sulla macchina remota con il comando
# ssh-copy-id USER@HOST_REMOTO
Oppure copiamo il contenuto del file ~/.ssh/id_rsa.pub nel file ~/.ssh/authorized_keys sull’host remoto
# cat /home/stefano/.ssh/id_rsa.pub | ssh USER@HOST_REMOTO 'cat >> ~/.ssh/authorized_keys'
Se la cartella ~/.ssh/ non esiste, va creata prima.
- Se il file authorized_keys non esisteva prima, i suoi permessi andranno corretti
# ssh USER@HOST_REMOTO 'chmod 600 ~/.ssh/authorized_keys'
ssh config tweaks
nel file ~/.ssh/config si possono specificare parecchie impostazioni interessanti per ogni host
# man ssh_config
Per tutti gli host (Host *) possiamo usare queste impostazioni:
Host * ControlMaster auto ControlPath /tmp/master-%r@%h:%p ControlPersist 1h User root
- ControlMaster auto : usa la stessa connessione per più sessioni. Ovvero ci si dovrà autenticare solo alla prima connessione, le altre che verranno aperte mentre la prima è attiva non richiederanno password. (OpenSSH client >= 3.8)
- ControlPersist 1h : si usa in combinazione con il precedente. La connessione principale rimane aperta per 1 ora, in questo modo se si chiude la sessione e ci si riconnette prima di un’ora, non verrà richiesta l’autenticazione. (OpenSSH client >= 5.5)
- ControlPath: indica dove e con che nome salvare le sessioni aperte. Modificatelo solo se sapete cosa state facendo
- User root : con questa opzione si definisce l’utente di default. Quindi eseguendo il comando
# ssh host
come utente non privilegiato, sarà equivalente a
# ssh root@host
- Ci sono molte altre personalizzazioni possibili in config:
# man ssh_config