[Linuxtrent] Re: sftp e trasmissione

  • From: Baccanelli Massimo <massix@xxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Thu, 07 Apr 2005 12:07:30 +0200

<< spero che la ML non mi linci per il testo piuttosto esoso qua sotto >>

Ciao,

spero tu abbia una minima conoscenza sul protocollo che stai/vuoi utilizzare.

Vediamo se con poche righe, quindi meno di 5 ninuti di lettura. riesco ad illuminarti
sul suo funzionamento e, nel tuo caso particolare, l'uso dei suoi comandi: ssh, sftp & scp !

Cominciamo con una piccola premessa:

<x-tad-bigger> SSH</x-tad-bigger><x-tad-bigger> sta per Secure Shell ed è un protocollo che permette di stabilire una sessione remota
interagendo con un altra macchina e permettendo l'esecuzione di comandi.
SSH opera in maniera analoga ad altri protocolli quali telnet ed rlogin ma con l'importante
differenza che l'intera comunicazione avviene in maniera criptata.
</x-tad-bigger>
Ne esistono due versioni: SSH1 e SSH2.

La versione 2 e' la riscrittura della 1 con garanzia di maggiore sicurezza.

1) SSH - Connessione su host remoto.

Cominciamo con lo scordarci dei vecchi comandi: telnet & rlogin .
Questo perche', tramite un snoop sulla rete, qualsiasi ... malintenzionato.... puo' vedere qualsiasi cosa ... ...
I suddetti 'vecchi' comandi, sempre sulla rete, comunicano in chiaro ... ... non s'ho se mi spiego !!! !!! !!! !!! !!!

Esempio pratico:

monster:~ fastweb$ id
uid=502(fastweb) gid=502(fastweb) groups=502(fastweb)
monster:~ fastweb$
monster:~ fastweb$ ssh operator@legolas
The authenticity of host 'legolas (10.31.80.59)' can't be established.
RSA key fingerprint is 4b:6d:84:cc:08:f5:8c:d1:bd:47:3f:1f:03:89:f7:ae.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'legolas,10.31.80.59' (RSA) to the list of known hosts.
operator@legolas's password: <<<====== PASSWORD
Last login: Wed Mar 2 17:36:21 2005 from 10-31-2-27.dhcp
Sun Microsystems Inc. SunOS 5.8 Generic February 2000
operator@legolas $

In questo caso particolare, l'utente fastweb su host monster, cerca d'accedere all'host legolas come utente operator !!!


2) SFTP - Secure FTP su host remoto:

monster:~ fastweb$ sftp operator@legolas
Connecting to legolas...
operator@legolas's password: <<<====== PASSWORD
sftp> pwd
Remote working directory: /export/home/operator
sftp> ls
.
..
.Xauthority
.bash_history
.profile
.ssh
sftp> bye
monster:~ fastweb$

Idem come sopra ... ... con l'unica differenza che piuttosto d'avere una shell sul sistema remoto si limita ad inviare /
ricevere file. Vedi il buon vecchio ftp (remember?).

3) SCP - Secure CoPy su host remoto:

monster:~ fastweb$ scp test_file.out operator@legolas:/var/tmp
operator@legolas's password: <<<====== PASSWORD
test_file.out 100% 0 0.0KB/s --:-- ETA
monster:~ fastweb$ rm test_file.out

monster:~ fastweb$ scp operator@legolas:/var/tmp/test_file.out .
operator@legolas's password: <<<====== PASSWORD
test_file.out 100% 0 0.0KB/s --:-- ETA
monster:~ fastweb$

Comando equivalente al vecchio rcp ( remote copy ).
Nei due esempi, sopra riportati, si nota come il senso della comunicazione cambi a seconda dell'esigenza !!!

Fin qui', io spero, dovrebbe essere TUTTO chiaro ... ... ...

Sempre in chiaro, ... ..., avrai visto che in qualsiasi caso: ssh, sftp o scp, viene richiesta una password !!!

La cosa puo' essere aggiarata utilizzando opportunamente le eventuali chiavi ssh generate adhoc ... ... ... ...

vediamo come:

3) Come generare ed utilizzare le chiavi SSH:

Una chiave SSH e' composta da: copia provata + copia pubblica .
L'utilizzo della propia chiave pubblica, su di un host remoto, ci permette di eseguire le operazioni sopra
descritte, con tutte le autorizzazioni del caso. Quindi, cosa molto importante, senza alcuna richiesta di password !!!

3a) Generiamo una chiave SSH:

monster:~ fastweb$ ssh-keygen -b 2048 -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/Users/fastweb/.ssh/id_dsa): <<<===== INVIO A VUOTO
Enter passphrase (empty for no passphrase): <<<===== INVIO A VUOTO
Enter same passphrase again: <<<===== INVIO A VUOTO
Your identification has been saved in /Users/fastweb/.ssh/id_dsa.
Your public key has been saved in /Users/fastweb/.ssh/id_dsa.pub.
The key fingerprint is:
61:6d:6d:20:f1:11:9f:17:77:da:39:5b:ad:37:2e:88 fastweb@monster
monster:~ fastweb$

3b) Pubblicazione / copia propia chiave 'pubblica' su host remoto:

monster:~ fastweb$ scp /Users/fastweb/.ssh/id_dsa.pub operator@legolas:/export/home/operator/.ssh/authorized_keys
operator@legolas's password:
id_dsa.pub 100% 1117 5.0MB/s 00:00
monster:~ fastweb$

ATTENZIONE: L'esempio in questione crea exnovo un file di autorizzazioni.
Questo vuol dire che puo' SOVVRASCRIVERE un eventuale gia esistente !!! !!!
Se siamo sicuri che non ne esista gia uno e' un conto ... altrimenti ... ... ...


monster:~ mbaccanelli$ scp /Users/mbaccanelli/.ssh/id_dsa.pub operator@legolas:/export/home/operator/.ssh/mbaccanelli.authorized_keys
operator@legolas's password:
id_dsa.pub 100% 604 2.4MB/s 00:00
monster:~ mbaccanelli$

monster:~ mbaccanelli$ ssh operator@legolas
operator@legolas's password:
Last login: Thu Apr 7 11:30:33 2005 from 10-31-2-21.dhcp
Sun Microsystems Inc. SunOS 5.8 Generic February 2000
$ cd .ssh
$ ls
authorized_keys known_hosts mbaccanelli.authorized_keys
$ cat mbaccanelli.authorized_keys >> authorized_keys
$

Chiaro il concetto ???

Adesso, dopo aver copiato / inserito la propia chiave pubblica, puoi eseguire i vari comandi sopra descritti / citati con un importante differenza ... ... ...


!!! NON TI VERRA' PIU' RICHIESTA ALCUNA PASSWORD !!!


Esempio pratico:

monster:~ fastweb$ id
uid=502(fastweb) gid=502(fastweb) groups=502(fastweb)
monster:~ fastweb$ ssh operator@legolas
Last login: Thu Apr 7 12:01:14 2005 from 10-31-2-21.dhcp
Sun Microsystems Inc. SunOS 5.8 Generic February 2000
$ pwd
/export/home/operator
$ id
uid=2501(operator) gid=1(other)
$


Visto ???


Nella speranza che ti possa tornare utile ... ...


Bye
MaX
:-)


ps. Con google, ed un po' di santa pazienza, puoi trovare degli interessanti, quanto piu' chiari,. HOWTO !!!

Other related posts: