SSH: differenze tra le versioni

Da UZ wiki.
(Utilizzo del forwarding)
(Modifica dei nomi da Linuz a UZ)
Riga 1: Riga 1:
{{Q|Come faccio a forwardare ''tutte'' le porte di Linuz sul mio computer?|[[User:Alex|Oscar Wilde]]}}
+
{{Q|Come faccio a forwardare ''tutte'' le porte del server UZ sul mio computer?|[[User:Alex|Oscar Wilde]]}}
  
Il protocollo '''ssh''' vi consente di trasferire file da Linuz al vostro computer e viceversa (consultare [[SCP e SFTP]]), e anche di impartire comandi come se foste seduti di fronte al server. Tutte le connessioni sono cifrate.
+
Il protocollo '''ssh''' vi consente di trasferire file dal server [[UZ]] al vostro computer e viceversa (consultare [[SCP e SFTP]]), e anche di impartire comandi come se foste seduti di fronte al server. Tutte le connessioni sono cifrate.
  
 
==Parametri generali di connessione==
 
==Parametri generali di connessione==
 
{| border="1" cellpadding="2"
 
{| border="1" cellpadding="2"
| ''server'' || linuz.sns.it
+
| ''server'' || uz1.uz.sns.it
 
|-
 
|-
 
| ''nome utente / password'' || quelli di un qualunque account '''Linux''' dell'aula pc
 
| ''nome utente / password'' || quelli di un qualunque account '''Linux''' dell'aula pc
Riga 18: Riga 18:
 
== Linux ==
 
== Linux ==
 
=== Client ssh testuali (ad esempio openssh) ===
 
=== Client ssh testuali (ad esempio openssh) ===
Digitate <pre>ssh nomeutente@linuz.sns.it</pre> per lanciare una shell su Linuz.
+
Digitate <pre>ssh nomeutente@uz1.uz.sns.it</pre> per lanciare una shell su Linuz.
 
=== scp ===
 
=== scp ===
Digitate <pre>scp nomeutente@linuz.sns.it:/percorso/file/remoto /percorso/file/locale</pre> per copiare un file da Linuz sul vostro pc. Invertite gli argomenti per copiare un file dal pc locale su Linuz. Usate lo switch <code>-r</code> per copiare ricorsivamente un'intera cartella.
+
Digitate <pre>scp nomeutente@uz1.uz.sns.it:/percorso/file/remoto /percorso/file/locale</pre> per copiare un file dal server UZ sul vostro pc. Invertite gli argomenti per copiare un file dal pc locale sul server UZ. Usate lo switch <code>-r</code> per copiare ricorsivamente un'intera cartella.
 
=== Konqueror ===
 
=== Konqueror ===
Probabilmente il modo più comodo per scambiare file sotto Linux è il client ssh integrato in Konqueror (il browser e file manager di KDE): in una finestra di konqueror, digitate <code>fish://linuz.sns.it</code> oppure <code>sftp://linuz.sns.it</code> e inserite nome utente e password quando vi viene chiesto. Per qualche motivo strano, fino alla versione 3.3 di KDE (e forse anche con le versioni più recenti) la velocità di trasferimento di Konqueror era più bassa rispetto a quella di <code>scp</code> (che può raggiungere i 10 MB/sec tra <code>linuz</code> e le camere del Timpano). Comunque, la perdita di tempo dovuta a questa differenza è di solito più che compensata dal fatto che non bisogna digitare i nomi dei files sulla tastiera.
+
Probabilmente il modo più comodo per scambiare file sotto Linux è il client ssh integrato in Konqueror (il browser e file manager di KDE): in una finestra di konqueror, digitate <code>fish://uz1.uz.sns.it</code> oppure <code>sftp://uz1.uz.sns.it</code> e inserite nome utente e password quando vi viene chiesto. Per qualche motivo strano, fino alla versione 3.3 di KDE (e forse anche con le versioni più recenti) la velocità di trasferimento di Konqueror era più bassa rispetto a quella di <code>scp</code> (che può raggiungere i 10 MB/sec tra <code>linuz</code> e le camere del Timpano). Comunque, la perdita di tempo dovuta a questa differenza è di solito più che compensata dal fatto che non bisogna digitare i nomi dei files sulla tastiera.
  
 
== Windows ==
 
== Windows ==
 
===Riassunto per utenti impazienti===
 
===Riassunto per utenti impazienti===
Scaricate [http://winscp.net/ WinSCP], installatelo, aprite il programma e collegatevi a <code>linuz.sns.it</code> inserendo il vostro nome utente e password di Linux.
+
Scaricate [http://winscp.net/ WinSCP], installatelo, aprite il programma e collegatevi a <code>uz1.uz.sns.it</code> inserendo il vostro nome utente e password di Linux.
  
 
=== WinSCP ===
 
=== WinSCP ===
Riga 49: Riga 49:
 
Alla prima connessione i client ssh vi chiedono di verificare la ''fingerprint'' della chiave pubblica di Linuz: ciò serve per verificare che il server a cui vi state connettendo sia veramente Linuz e non un "server falso" creato da un malintenzionato allo scopo di rubare la vostra password (l'eventualità non è poi così impossibile, anzi, se non ci fosse questa verifica sarebbe tecnicamente possibile farlo).
 
Alla prima connessione i client ssh vi chiedono di verificare la ''fingerprint'' della chiave pubblica di Linuz: ciò serve per verificare che il server a cui vi state connettendo sia veramente Linuz e non un "server falso" creato da un malintenzionato allo scopo di rubare la vostra password (l'eventualità non è poi così impossibile, anzi, se non ci fosse questa verifica sarebbe tecnicamente possibile farlo).
  
La chiave RSA di linuz ha come ''fingerprint'' <code>f0:58:ac:bf:a5:f8:5h:69:36:db:a9:a4:fa:0e:b9:eb</code>
+
La chiave RSA del server UZ ha come ''fingerprint'' <code>f0:58:ac:bf:a5:f8:5h:69:36:db:a9:a4:fa:0e:b9:eb</code>
  
La chiave DSA di linuz ha come ''fingerprint'' <code>94:26:7c:2e:84:16:53:51:c1:3f:a7:9f:c1:a1:9b:13</code>
+
La chiave DSA del server UZ ha come ''fingerprint'' <code>94:26:7c:2e:84:16:53:51:c1:3f:a7:9f:c1:a1:9b:13</code>
  
Naturalmente non dovreste fidarvi troppo di questi valori perché sono pubblicati su un sito liberamente modificabile, e soprattutto perché sono pubblicati proprio su <code>linuz.sns.it</code>: in pratica è il server stesso che sta certificando la propria sicurezza: vi fidereste di qualcuno che dice "io sono affidabile, e lo prova questo documento firmato da me stesso"?
+
Naturalmente non dovreste fidarvi troppo di questi valori perché sono pubblicati su un sito liberamente modificabile, e soprattutto perché sono pubblicati proprio su <code>uz1.uz.sns.it</code>: in pratica è il server stesso che sta certificando la propria sicurezza: vi fidereste di qualcuno che dice "io sono affidabile, e lo prova questo documento firmato da me stesso"?
 +
Oltre a questo motivo, forse le chiavi ora sono diverse (quelle riportate sono quelle del vecchio server linuz del Timpano)
  
 
Se siete particolarmente paranoici o avete motivo di sospettare manomissioni, potete venire a controllare questi valori direttamente nell'aula pc o chiedere conferma a qualcuno di affidabile.
 
Se siete particolarmente paranoici o avete motivo di sospettare manomissioni, potete venire a controllare questi valori direttamente nell'aula pc o chiedere conferma a qualcuno di affidabile.
  
 
Se il vostro client ssh si lamenta perché la ''fingerprint'' del server è cambiata anche dopo la prima connessione, la causa probabilmente è una di queste tre:
 
Se il vostro client ssh si lamenta perché la ''fingerprint'' del server è cambiata anche dopo la prima connessione, la causa probabilmente è una di queste tre:
* avete inserito uno ''hostname'' diverso: per esempio <code>linuz</code> o <code>linuz.timpano</code> invece di <code>linuz.sns.it</code>
+
* avete inserito uno ''hostname'' diverso da <code>linuz.sns.it</code>
 
* gli amministratori hanno reinstallato ssh e cambiato la chiave (non dovrebbe succedere troppo spesso...)
 
* gli amministratori hanno reinstallato ssh e cambiato la chiave (non dovrebbe succedere troppo spesso...)
* qualcuno sta cercando di spacciarsi per Linuz e fregarvi.
+
* qualcuno sta cercando di spacciarsi per il server UZ e fregarvi.
 
In tutti e tre i casi, sarebbe meglio controllare prima di inserire la password...
 
In tutti e tre i casi, sarebbe meglio controllare prima di inserire la password...
  
 
== Caveat ==
 
== Caveat ==
Su Linuz è stato recentemente installato un programma che blocca le connessioni ssh per un breve lasso di tempo (10 minuti) dopo sette tentativi falliti di login. Si tratta di una misura di sicurezza per tutelarci da chi tenta centinaia di login successivi con password a caso. Speriamo che questa misura non vada a danneggiare eccessivamente gli utenti.
+
Sul server è stato recentemente installato (forse) un programma che blocca le connessioni ssh per un breve lasso di tempo (10 minuti) dopo sette tentativi falliti di login. Si tratta di una misura di sicurezza per tutelarci da chi tenta centinaia di login successivi con password a caso. Speriamo che questa misura non vada a danneggiare eccessivamente gli utenti.
  
 
== Cose avanzate ==
 
== Cose avanzate ==

Versione delle 18:13, 5 ott 2011

“Come faccio a forwardare tutte le porte del server UZ sul mio computer?”Oscar Wilde

Il protocollo ssh vi consente di trasferire file dal server UZ al vostro computer e viceversa (consultare SCP e SFTP), e anche di impartire comandi come se foste seduti di fronte al server. Tutte le connessioni sono cifrate.

Parametri generali di connessione

server uz1.uz.sns.it
nome utente / password quelli di un qualunque account Linux dell'aula pc
protocollo SSH v2 (quello predefinito, di solito non occorre cambiare nulla)
porta 22 (quella predefinita)
cartella /home/il_vostro_username

Linux

Client ssh testuali (ad esempio openssh)

Digitate
ssh nomeutente@uz1.uz.sns.it
per lanciare una shell su Linuz.

scp

Digitate
scp nomeutente@uz1.uz.sns.it:/percorso/file/remoto /percorso/file/locale
per copiare un file dal server UZ sul vostro pc. Invertite gli argomenti per copiare un file dal pc locale sul server UZ. Usate lo switch -r per copiare ricorsivamente un'intera cartella.

Konqueror

Probabilmente il modo più comodo per scambiare file sotto Linux è il client ssh integrato in Konqueror (il browser e file manager di KDE): in una finestra di konqueror, digitate fish://uz1.uz.sns.it oppure sftp://uz1.uz.sns.it e inserite nome utente e password quando vi viene chiesto. Per qualche motivo strano, fino alla versione 3.3 di KDE (e forse anche con le versioni più recenti) la velocità di trasferimento di Konqueror era più bassa rispetto a quella di scp (che può raggiungere i 10 MB/sec tra linuz e le camere del Timpano). Comunque, la perdita di tempo dovuta a questa differenza è di solito più che compensata dal fatto che non bisogna digitare i nomi dei files sulla tastiera.

Windows

Riassunto per utenti impazienti

Scaricate WinSCP, installatelo, aprite il programma e collegatevi a uz1.uz.sns.it inserendo il vostro nome utente e password di Linux.

WinSCP

WinSCP, che è software libero, è un ottimo client grafico che vi permette di scambiare file con Linuz via ssh (protocolli SCP e SFTP). Non è in grado di aprire una shell SSH. La configurazione è semplice, badate solo di selezionare il protocollo ssh (porta 22).

Putty

Putty, anch'esso software libero, nonostante il nome discutibile, è un buon client ssh che vi consente di aprire una shell SSH su Linuz e digitare comandi. Non consente di trasferire files. Fanno parte del progetto Putty anche i programmi PSCP, PSFTP e PUTTYgen.

  • Putty: il vero e proprio client ssh. Interfaccia grafica.
  • PSCP: un client di trasferimento files scp. Funziona da riga di comando in DOS, in modo simile a scp in linux.
  • PSFTP: un client di trasferimento files sftp. Funziona da riga di comando in DOS, in modo simile a sftp in linux.
  • PuTTYgen: un arnese utile a maneggiare chiavi rsa e convertirle in formato standard e in formato putty (che è lo stesso di WinSCP)

SSH Secure Shell

SSH Secure Shell, non gratuito, non a sorgente aperto, è un buon client ssh grafico utile per eseguire comandi, dal costo compreso tra 100 e 200 euro. E' simile a Putty. Una versione vecchia del client è scaricabile gratuitamente dal loro server.

Fa parte del pacchetto anche il programma SSH Secure File Transfer, buon client grafico per scambiare files. E' simile a WinSCP.

Mac

Usate Fugu, un client SCP e SFTP libero per Mac OS X.

Chiavi

Alla prima connessione i client ssh vi chiedono di verificare la fingerprint della chiave pubblica di Linuz: ciò serve per verificare che il server a cui vi state connettendo sia veramente Linuz e non un "server falso" creato da un malintenzionato allo scopo di rubare la vostra password (l'eventualità non è poi così impossibile, anzi, se non ci fosse questa verifica sarebbe tecnicamente possibile farlo).

La chiave RSA del server UZ ha come fingerprint f0:58:ac:bf:a5:f8:5h:69:36:db:a9:a4:fa:0e:b9:eb

La chiave DSA del server UZ ha come fingerprint 94:26:7c:2e:84:16:53:51:c1:3f:a7:9f:c1:a1:9b:13

Naturalmente non dovreste fidarvi troppo di questi valori perché sono pubblicati su un sito liberamente modificabile, e soprattutto perché sono pubblicati proprio su uz1.uz.sns.it: in pratica è il server stesso che sta certificando la propria sicurezza: vi fidereste di qualcuno che dice "io sono affidabile, e lo prova questo documento firmato da me stesso"? Oltre a questo motivo, forse le chiavi ora sono diverse (quelle riportate sono quelle del vecchio server linuz del Timpano)

Se siete particolarmente paranoici o avete motivo di sospettare manomissioni, potete venire a controllare questi valori direttamente nell'aula pc o chiedere conferma a qualcuno di affidabile.

Se il vostro client ssh si lamenta perché la fingerprint del server è cambiata anche dopo la prima connessione, la causa probabilmente è una di queste tre:

  • avete inserito uno hostname diverso da linuz.sns.it
  • gli amministratori hanno reinstallato ssh e cambiato la chiave (non dovrebbe succedere troppo spesso...)
  • qualcuno sta cercando di spacciarsi per il server UZ e fregarvi.

In tutti e tre i casi, sarebbe meglio controllare prima di inserire la password...

Caveat

Sul server è stato recentemente installato (forse) un programma che blocca le connessioni ssh per un breve lasso di tempo (10 minuti) dopo sette tentativi falliti di login. Si tratta di una misura di sicurezza per tutelarci da chi tenta centinaia di login successivi con password a caso. Speriamo che questa misura non vada a danneggiare eccessivamente gli utenti.

Cose avanzate

Forwarding di X

(Linux only) Se avviate ssh con l'opzione da linea di comando -X (occhio che la X è maiuscola), potete lanciare comandi che aprono finestre, come per esempio firefox o konqueror. La finestra verrà aperta sul vostro pc, ma è come se il programma girasse su Linuz. Questo può tornarvi comodo per gestire meglio i file che avete sulla home, o per accedere a siti che consentono l'accesso solo dall'interno della SNS (es. siti di riviste scientifiche a cui la SNS è abbonata).

Autenticazione a mezzo chiave pubblica

E' possibile autenticarsi ai pc dell'aula computer del timpano senza dover digitare la password, ma utilizzando semplicemente un file che contenga una chiave privata. Gran parte dei client ssh (OpenSSH su linux, putty e winscp su windows, SSH secure shell su windows con qualche difficoltà) supporta questa funzionalità.

Innanzitutto occorre crearsi (con ssh-keygen (linux) o PUTTYgen (windows)) una coppia chiave privata/chiave pubblica per l'autenticazione.

Le chiavi private in generale possono essere nel formato

  • PPK (usato da putty e da winscp, su windows)
  • OpenSSH (usato da openssh su linux)
  • ssh.com (usato da ssh secure shell su windows)

Per le chiavi pubbliche il problema non si pone, poiché in generale una chiave pubblica è una semplice riga di caratteri alfabetici e qualche simbolo come \ =

Le chiavi pubbliche in generale possono essere nel formato

  • ASCII (una riga di testo)

Bisogna dire al proprio account linux di accettare quella chiave. Per far ciò, è sufficiente inserire la chiave pubblica in formato ASCII come riga nel file $HOME/.ssh/authorized_keys (crearlo se non esiste) sulla propria home linux.

Infine bisogna dire al client ssh di usare quella chiave privata per l'autenticazione. In linux, ssh -i priv.key dove priv.key è il file contenente la chiave privata in formato OpenSSH (se la chiave è in $HOME/.ssh/identity, allora -i $HOME/.ssh/identity si può omettere). In windows, bisogna cercare da qualche parte la scheda con scritto "Private key file" (esempio putty), e inserire il percorso della chiave in formato PPK.

Per convertire le chiavi ASCII, OpenSSH e putty, può esser d'aiuto usare PUTTYgen.

Forwarding di porte

Vi preghiamo di utilizzarlo solo se non c'è un altra opzione e per brevi periodi, in quanto va a pesare sul carico del server per tutto il tempo per cui resta attivo.

Istruzioni per are un tunnel è piuttosto semplice: per accedere al computer host2 porta port2 passando dal computer host1, usando la porta locale porta port1:

nota: per aprire le porte locali da 0 a 1023 è necessario essere root. Gli utenti possono aprire solo le porte da 1024 a 65535.

da Linux:

  • ssh -L port1:host2:port2 host1
  • per mettere ssh in background, aggiungere -N -f

da Windows:

Serve qualche programmino, il più facile da usare è putty.

  • putty:
    • scaricate putty da questo sito
    • aprite putty e mettete Hostname: host1, Port: 22, Protocol SSH
    • entrate nella scheda Tunnel esempio
    • inserite Sourceport: porta1, Destination: host2:port2, type: Local, e poi click su Add
    • click su Open, inserite username e password linux, e il tunnel è fatto
  • SSH Secure Shell
    • trovate il programma da qualche parte
    • andate su Edit->Settings->Profile Settings->Tunneling
    • selezionate la scheda "Outgoing" e cliccate su "Add..."
    • Display Name: quello che vi pare, Type: TCP, Listen port: port1, Allow local connections only: yes, Destination host: host2, Destination port: port2
    • cliccate Ok->Ok
    • cliccate File->Connect

Utilizzo del forwarding

Il forwarding delle porte si può utilizzare per accedere ai servizi di linuz ristretti alla rete locale. Ad esempio se ci fosse un sito su polaris sulla porta 4080, per vederlo anche da fuori è sufficiente aprire un tunnel con host1=linuz.sns.it, port1=1234, host2=polaris.uz.sns.it, port2=4080, ed infine collegarsi con un browser alla pagina http://localhost:1234.

Un altro uso molto comune del forwarding è per accedere alle risorse scientifiche a cui è abbonata la Scuola Normale. Ad esempio per accedere al sito http://www.sciencemag.org/ da casa propria, fingendosi dentro la sns, di dovrà aprire un tunnel con host1=linuz.sns.it, port1=1234, host2=www.sciencemag.org, port2=80 (nota: tutti i siti internet utilizzano la porta 80, se non diversamente specificato), ed infine collegarsi con un browser alla pagina http://localhost:1234.