SSH HOWTO Daniele Venzano (venza@users.sourceforge.net) v1.2 26-10-2002 Come utilizzare ssh per collegarsi a un computer remoto. Indice: ------- 1. Introduzione 1.1 Versioni 1.2 Dove trovare questo HOWTO 2. Software necessario 2.1 ssh, sshd, scp e ssh-keygen 2.2 Installazione 2.2.1 Sorgenti 2.2.2 Red Hat, Mandrake, Suse (RPM) 2.2.3 Debian 2.3 Uso 2.3.1 Uso di ssh 2.3.1.1 Autenticazione RSA 2.3.2 Uso di scp 1. Introduzione --------------- ssh e' un programma pensato per sostituire completamente rsh, rcp e famiglia fornendo una soluzione piu' sicura e affidabile. Con ssh tutte le comunicazioni tra server e client sono criptate. 1.1 Versioni ------------ 1.0 9-3-2002 venza Aggiornamento per le modifiche fatte al codice php sulle pagine della documentazione 1.1 2-3-2002 venza Prima versione 1.2 26-10-2002 venza Rimossa la parte sulla documentazione perche' non piu' valida Trasformato il documento in un ssh-howto 1.2 Dove trovare questo HOWTO ----------------------------- L'ultima versione di questo documento sara' sempre disponibile all'indirizzo: http://teg.homeunix.org/documentation.html Per ulteriori informazioni potete rivolgervi a: webvenza@libero.it 2. Software necessario ---------------------- 2.1 ssh, sshd, scp e ssh-keygen ------------------------------- Il pacchetto ssh e' formato da tre programmi principali: - ssh e' il client e lo si usa per aprire una shell remota o per eseguire dei comandi, sempre in remoto. - sshd e' il demone che si occupa di gestire le connessioni ssh dirette alla vostra macchina. - scp utilizza ssh per trasferire dei file da una macchina all'altra, permette anche di copiare uno o piu' file tra due server remoti. - ssh-keygen crea la coppia di chiavi pubblica/privata per l'autenticazione RSA 2.2 Installazione ----------------- 2.2.1 Sorgenti -------------- I sorgenti di ssh sono disponibili all'indirizzo: http://www.openssh.org l'ultima versione, ad oggi, e' la 3.4p1 Per la compilazione e' necessario avere le libreria openssl, disponibili presso: http://www.openssl.org l'ultima versione disponibile e' la 0.9.6g Questi due pacchetti contengono le istruzioni per la compilazione. 2.2.2 Red Hat, Mandrake, Suse (RPM) ----------------------------------- In genere i pacchetti rpm di ssh vanno sotto il nome di openssh-xxx.rpm dove xxx sta per 'common', 'client' e 'server'. Il mio consiglio e' di installarli tutti e tre e al piu' togliere sshd dall'elenco dei processi da eseguire all'avvio. Anche qui ci sara' la dipendenza da openssl. Per tutti questi pacchetti vi consiglio o di cercare nei CD di installazione della vostra distribuzione o di andare su: http://rpmfind.net e cercare il pacchetto piu' adatto. 2.2.3 Debian ------------ Per debian, se avete configurato le sorgenti di apt da uno dei mirror http o ftp, o dai cdrom di installazione, basta eseguire (come root) il comando 'apt-get install ssh' che installera' tutta la suite completa, sia la parte client che server. 2.3 Uso ------- Per tutti i comandi descritti qui di seguito si consiglia vivamente di leggere le pagine man relative, che sono molto complete ed esaurienti, molto piu' della breve descrizione qui di seguito. 2.3.1 Uso di ssh ---------------- Per collegarsi ad un host remoto (che abbia sshd attivo, ovviamente) il comando e': ssh @ Dove e' lo username dell'account sulla macchina remota e e' l'indirizzo (DNS o IP) della mecchina remota. La prima volta che ssh si connettera' ad un server, verifichera' la sua chiave, e non conoscendola dara' un messaggio simile a questo: -- The authenticity of host ' ()' can't be established. DSA key fingerprint is 6f:a6:7e:6a:8f:58:f5:0b:8b:c8:fc:a6:7e:58:bf:07. Are you sure you want to continue connecting (yes/no)? -- Qui dovete rispondere 'yes', in modo da aggiungere quell'indirizzo alla lista dei server conosciuti. E' anche possibile utilizzare ssh per eseguire dei comandi in remoto, senza eseguire una shell interattiva, per fare questo il comando e': ssh @ "" e' molto importatnte ricordarsi di racchiudere il con le virgolette (""), in modo che ssh interpreti tutta la stringa e non solo la parte fino al primo spazio come comando da eseguire. 2.3.1.1 Autenticazione RSA -------------------------- Per l'autenticazione ssh utilizza diversi metodi, i principali sono tramite password (come con telnet) o con chiavi pubbliche/private. Il primo metodo e' molto semplice e non ha bisogno di spiegazioni. Il secondo invece e' un po' piu' complicato da impostare, ma poi non richiede piu' che l'utente digiti la sua password in ogni connessione. Come prima cosa bisogna creare la propria coppia di chiavi, una pubblica e una privata. Questo lo si fa con il programma ssh-keygen: ssh-keygen -t dsa creera' le chiavi in formato DSA. (e' possibile usare anche il formato rsa1, per il protocollo versione 1 o rsa, per la versione 2). Dopo la creazione vi verra' chiesta una passphrase (da utilizzare come password per accedere alla chiave) che puo' anche venir lasciata in bianco e il nome dei file in cui salvare le due chiavi, i default vanno benissimo per i nostri scopi. La chiave privata deve essere sempre tenuta segreta, se c'e' il sospetto che qualcuno abbia potuto impadronirsene, bisogna generare un nuovo paio di chiavi, Quella pubblica, invece deve venir copiata sui server a cui ci si colleghera'. SourceForge permette di fare questo tramite la pagina web dell'utente. Normalmente il contenuto del file (tra i due creati con ssh-keygen e' quello con estensione .pub) va aggiunto a ~/.ssh/authorized_keys o a ~/.ssh/authorized_keys2 a seconda della versione del protocollo che verra' usata. 2.3.2 Uso di scp ---------------- scp e' un'estensione del comando cp che permette di copiare uno o piu' file con ssh su altri computer. Per copiare il file /tmp/pippo.tar.gz dal proprio computer ad un altro (qui chiamato altrohost) la sintassi e': scp /tmp/pippo.tar.gz altrohost:/tmp visceversa: scp altrohost:/tmp /tmp/pippo.tar.gz Se non si usa l'auenticazione RSA verra' chiesta la password. Funzionano le solite wildcards (* e ?) per indicare i file da copiare. E' possibile copiare file tra due macchine remote a questo modo: scp primohost:/tmp/*gz secondohost:/home/luser Se si vuole utilizzare un nome utente differente sulla macchina remota si usa la seguente sintassi: scp /tmp/pippo.tar.gz altroutente@altrohost:/tmp ^^^^^^^^^^^^