fix markdown

This commit is contained in:
dan 2020-07-17 12:24:11 +02:00
parent b020238da7
commit 15fdb0f1cf

View File

@ -3,7 +3,8 @@
# la Remotica # la Remotica
ssh serve a collegarsi a una macchina remota, via terminale, su cui si ha un account ssh serve a collegarsi a una macchina remota, via terminale, su cui si ha un
account
(ma non solo) (ma non solo)
`ssh user@macchina` (si mette la password di user) e oplà si è sulla macchina, `ssh user@macchina` (si mette la password di user) e oplà si è sulla macchina,
@ -32,7 +33,7 @@ Alcune cose da sapere:
--- ---
# Esempio di uso con screen manager # Un esempio di uso con screen manager
Usare ssh in concomitanza con uno screen manager, come screen o tmux, permette Usare ssh in concomitanza con uno screen manager, come screen o tmux, permette
di scollegarsi lasciando andare il programma e di ricollegarsi in seguito. di scollegarsi lasciando andare il programma e di ricollegarsi in seguito.
@ -65,18 +66,18 @@ SSH è un protocollo di rete per interfacciarsi (collegarsi) in modo sicuro
a un'altra macchina. a un'altra macchina.
^ ^
SSH è come il teletrasporto. *Beam me up, Scotty!* SSH è come il teletrasporto. **Beam me up, Scotty!**
^ ^
SSH è come la proiezione astrale. SSH è come la proiezione astrale.
--- ---
Una *shell*, in italiano *conchiglia*, è un ambiente, un ecosistema o in questo caso Una **shell**, in italiano **conchiglia**, è un ambiente, un ecosistema o in questo caso
un'interfaccia su una macchina. un'interfaccia su una macchina.
^ ^
*OPENSSH* è un insieme di diversi software per effettuare una connessione tra pc **OPENSSH** è un insieme di diversi software per effettuare una connessione tra pc
secondo la logica client-server. secondo la logica client-server.
^ ^
@ -101,7 +102,7 @@ alla bocca per invitare a tenere un segreto.
Esiste dal 1995 ed è stato creata per non far passare password in chiaro durante una Esiste dal 1995 ed è stato creata per non far passare password in chiaro durante una
connessione tra pc (cioè per rimpiazzare telnet). connessione tra pc (cioè per rimpiazzare telnet).
Si usa oggi come software nella versione chiamata *OpenSSH*, mantenuta dagli Si usa oggi come software nella versione chiamata **OpenSSH**, mantenuta dagli
sviluppatori del sistema operativo OpenBSD. sviluppatori del sistema operativo OpenBSD.
--- ---
@ -121,7 +122,6 @@ Per Debian-based-OS: (tra cui Debian, Bunsen Labs, Linux Mint, Ubuntu)
Un collegamento dell'utente Telemaco alla macchina remota di nome Altrove Un collegamento dell'utente Telemaco alla macchina remota di nome Altrove
`ssh telemaco@altrove` `ssh telemaco@altrove`
^
se volessi leggere cosa succede (verbose mode) se volessi leggere cosa succede (verbose mode)
@ -157,30 +157,30 @@ Cominciamo dal login: `ssh nome@macchina` e mi teletrasporto
ssh si usa in soggettiva: parto da me (localhost) ssh si usa in soggettiva: parto da me (localhost)
^ ^
*localhost* è "casa", la macchina su cui siedo, **localhost** è "casa", la macchina su cui siedo,
si trova per convenzione sempre all'indirizzo IP: 127.0.0.1 si trova per convenzione sempre all'indirizzo IP: 127.0.0.1
Se il suo hostname è settato, si può anche chiamarla per nome Se il suo hostname è settato, si può anche chiamarla per nome
^ ^
*remotehost* è una macchina remota, **remotehost** è una macchina remota,
se è raggiungibile si trova a un indirizzo IP se è raggiungibile si trova a un indirizzo IP
Potrebbe avere assegnato un nome di dominio Potrebbe avere assegnato un nome di dominio
^ ^
Ad esempio il pc da cui scrivo si chiama *querencia*, Ad esempio il pc da cui scrivo si chiama **querencia**,
la posso raggiungere (partendo da me) chiamandola: la posso raggiungere (partendo da me) chiamandola:
*querencia*, *localhost* o *127.0.0.1* **querencia**, **localhost** o **127.0.0.1**
^ ^
Altro esempio, la macchina di unit hacklab si chiama *zaphoda*, Altro esempio, la macchina di unit hacklab si chiama **zaphoda**,
la posso raggiungere chiamandola come: la posso raggiungere chiamandola come:
*zaphoda*, *abbiamoundominio.org* o *51.68.188.232* **zaphoda**, **abbiamoundominio.org** o **51.68.188.232**
--- ---
# Una macchina remota, detta anche server # Una macchina remota, detta anche server
(dove si scoprirà che sono il server di me stess*) (dove si scoprirà che sono il server di me stess@)
^ ^
Il primo problema, per provare ssh, è avere una macchina a cui collegarsi. Il primo problema, per provare ssh, è avere una macchina a cui collegarsi.
@ -208,7 +208,7 @@ Le porte indicano, in telematica, il punto d'arrivo di una comunicazione.
o anche "etichette" o anche "etichette"
^ ^
*Esempio di una porta: la porta 21, dove vive FTP* **Esempio di una porta: la porta 21, dove vive FTP**
Una macchina ha dei processi che ascoltano in attesa di connessione su una "porta". Una macchina ha dei processi che ascoltano in attesa di connessione su una "porta".
Usando diverse porte, servizi diversi sulla stessa macchina allo stesso Usando diverse porte, servizi diversi sulla stessa macchina allo stesso
@ -218,12 +218,12 @@ indirizzo e stessa interfaccia di rete possono coesistere.
Collegandosi a Zaphoda con un navigatore senza specificare nessuna porta, il Collegandosi a Zaphoda con un navigatore senza specificare nessuna porta, il
navigatore sceglierà la porta 80 (quella default del web, http), ma lì troverà nginx navigatore sceglierà la porta 80 (quella default del web, http), ma lì troverà nginx
(il nostro software che gestisce il web) che lo rimanderà alla porta 443 (quella (il nostro software che gestisce il web) che lo rimanderà alla porta 443 (quella
default del web crittato, ossia https.) Perché crittato è meglio che in chiaro. default del web crittato, ossia https.) Perché crittato è meglio che in chiaro.
`http://abbiamoundominio.org` `http://abbiamoundominio.org`
^ ^
Ma collegandosi a Zaphoda specificando la porta 8000, nginx ci spedirà Ma collegandosi a Zaphoda specificando la porta 8000, nginx ci spedirà
all'interfaccia web di icecast (che appunto usa la porta 8000) all'interfaccia web di icecast (che appunto usa la porta 8000)
`http://abbiamoundominio.org:8000` `http://abbiamoundominio.org:8000`
--- ---
@ -249,9 +249,9 @@ Nota: cambiare una porta senza altri motivi, viene chiamata: Sicurezza tramite o
Scrivendo solo `ssh zaphoda` probabilmente non funziona. Scrivendo solo `ssh zaphoda` probabilmente non funziona.
^ ^
*zaphoda* è il nome (hostname) della macchina, **zaphoda** è il nome (hostname) della macchina,
la quale ha un indirizzo IP fisso: *51.68.188.232* la quale ha un indirizzo IP fisso: **51.68.188.232**
e siccome abbiamo affittato un dominio, è raggiungibile a: *abbiamoundominio.org* e siccome abbiamo affittato un dominio, è raggiungibile a: **abbiamoundominio.org**
^ ^
Devo specificare esplicitamente chi sono, cosa voglio e dove voglio andare. Devo specificare esplicitamente chi sono, cosa voglio e dove voglio andare.
@ -273,22 +273,22 @@ I file di configurazione di ssh vivono nella cartella ~/.ssh/
`ls -l ~/.ssh` `ls -l ~/.ssh`
- *config* - **config**
- known_hosts - known_hosts
- id_rsa-zaphoda - id_rsa-zaphoda
- id_rsa-zaphoda.pub - id_rsa-zaphoda.pub
Vengono creati al primo utilizzo di ssh, la configurazione *(config)* può essere editata. Vengono creati al primo utilizzo di ssh, la configurazione **(config)** può essere editata.
^ ^
Un file esempio *config* contiene: Un file esempio **config** contiene:
`cat ~/.ssh/config` `cat ~/.ssh/config`
> Host fattanza Host fattanza
> Hostname 192.168.4.42 Hostname 192.168.4.42
> User kodi User kodi
> Port 50022 Port 50022
^ ^
Fattanza è una macchina su una rete interna e usa la porta 50022 con utente kodi Fattanza è una macchina su una rete interna e usa la porta 50022 con utente kodi
@ -303,17 +303,17 @@ posso più semplicemente usare:
# Zaphoda nel file di configurazione di ssh # Zaphoda nel file di configurazione di ssh
> Host zaphoda Host zaphoda
> HostName abbiamoundominio.org HostName abbiamoundominio.org
> User dan User dan
> Port 22 Port 22
> ProxyCommand socat - SOCKS4A:localhost:abbiamoundominio.org:22,socksport=9050 ProxyCommand socat - SOCKS4A:localhost:abbiamoundominio.org:22,socksport=9050
> IdentitiesOnly yes IdentitiesOnly yes
> IdentityFile ~/.ssh/id_rsa-zaphoda IdentityFile ~/.ssh/id_rsa-zaphoda
Zaphoda è una macchina chiamata con il suo nome di dominio, Zaphoda è una macchina chiamata con il suo nome di dominio,
il collegamento avviene con un tunnel via Tor (che sta già girando in localhost), il collegamento avviene con un tunnel via Tor (che sta già girando in localhost),
usa utente dan con una chiave privata *id_rsa-zaphoda* per l'autenticazione, usa utente dan con una chiave privata **id_rsa-zaphoda** per l'autenticazione,
e la porta 22 (essendo il default non c'era bisogno di specificarla). e la porta 22 (essendo il default non c'era bisogno di specificarla).
^ ^
@ -328,33 +328,33 @@ le macchine in uso, in modo da non dover scrivere ogni volta un lungo incantesim
# Primo collegamento: collegarsi in ssh a localhost # Primo collegamento: collegarsi in ssh a localhost
Eccoci di ritorno al collegamento sulla macchina locale Di ritorno al collegamento sulla macchina locale
`ls -l ~/.ssh` `ls -l ~/.ssh`
- config - config
- *known_hosts* - **known_hosts**
- id_rsa-zaphoda - id_rsa-zaphoda
- id_rsa-zaphoda.pub - id_rsa-zaphoda.pub
Ad ogni collegamento, ssh tiene traccia della fingerprint del server con una Ad ogni collegamento, ssh tiene traccia della fingerprint del server con una
riga nel file *known_hosts*. riga nel file **known_hosts**.
^ ^
`ssh 127.0.0.1` `ssh 127.0.0.1`
> The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established. The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
> ECDSA key fingerprint is SHA256:xso0+Jusafdf3YJhappydaysf3Eb5cTh6P2QCvRZfs. ECDSA key fingerprint is SHA256:xso0+Jusafdf3YJhappydaysf3Eb5cTh6P2QCvRZfs.
> Are you sure you want to continue connecting (yes/no)? Are you sure you want to continue connecting (yes/no)?
^ ^
`yes` `yes`
^ ^
> Warning: Permanently added '127.0.0.1' (ECDSA) to the list of known hosts. Warning: Permanently added '127.0.0.1' (ECDSA) to the list of known hosts.
^ ^
l'indirizzo 127.0.0.1 è stato aggiunto al file *~/.ssh/known_host* l'indirizzo 127.0.0.1 è stato aggiunto al file **~/.ssh/known_host**
E al prossimo collegamento allo stesso indirizzo, non lo farà più notare, E al prossimo collegamento allo stesso indirizzo, non lo farà più notare,
a meno che la fingerprint non coincida. a meno che la fingerprint non coincida.
@ -368,21 +368,21 @@ In quel caso, dirà che qualcosa è andato storto.
`ssh 127.0.0.1` `ssh 127.0.0.1`
^ ^
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
> Someone could be eavesdropping on you right now (man-in-the-middle attack)! Someone could be eavesdropping on you right now (man-in-the-middle attack)!
> It is also possible that a host key has just been changed. It is also possible that a host key has just been changed.
> The fingerprint for the RSA key sent by the remote host is The fingerprint for the RSA key sent by the remote host is
> SHA256:OyNcagUr5ynfsfxdciaosonoilmagopinolvGaUdlRJSxaxxmiDDtsHwf5gQc. SHA256:OyNcagUr5ynfsfxdciaosonoilmagopinolvGaUdlRJSxaxxmiDDtsHwf5gQc.
> Please contact your system administrator. Please contact your system administrator.
> Add correct host key in /home/dan/.ssh/known_hosts to get rid of this message. Add correct host key in /home/dan/.ssh/known_hosts to get rid of this message.
> Offending RSA key in /home/dan/.ssh/known_hosts:2 Offending RSA key in /home/dan/.ssh/known_hosts:2
> remove with: remove with:
> ssh-keygen -f "/home/dan/.ssh/known_hosts" -R "127.0.0.1" ssh-keygen -f "/home/dan/.ssh/known_hosts" -R "127.0.0.1"
> RSA host key for 127.0.0.1 has changed and you have requested strict checking. RSA host key for 127.0.0.1 has changed and you have requested strict checking.
> Host key verification failed. Host key verification failed.
--- ---
@ -402,14 +402,14 @@ reinstallato il sistema operativo, generando una nuova fingerprint che non
coincide con quella precedente, registrata da known_host. coincide con quella precedente, registrata da known_host.
^ ^
Sono stato avvisat* e ho tre possibilità: Sono stato avvisat@ e ho tre possibilità:
* contattare l'amministratore (ma sono io!) - contattare l'amministratore (ma sono io!)
* rinunciare a collegarmi - rinunciare a collegarmi
* cancellare la riga corrispondente nel file known_host, come suggerito: - cancellare la riga corrispondente nel file known_host, come suggerito:
^ ^
ssh-keygen -f "/home/dan/.ssh/known_hosts" -R "127.0.0.1" `ssh-keygen -f "/home/dan/.ssh/known_hosts" -R "127.0.0.1"`
E ricominciare. E ricominciare.
^ ^
@ -425,30 +425,28 @@ OpenBSD descrive OpenSSH come una suite che comprende i seguenti strumenti:
Per il collegamento remoto: Per il collegamento remoto:
ssh ssh
scp scp
sftp sftp
^
Per la gestione chiavi: Per la gestione chiavi:
ssh-add ssh-add
ssh-keysign ssh-keysign
ssh-keyscan ssh-keyscan
ssh-keygen ssh-keygen
^
Lato server: Lato server:
sshd sshd
sftp-server sftp-server
ssh-agent ssh-agent
--- ---
# Un account per fare le prove # Un account per fare le prove
Super Dimentional Fortress è una comunità che usa NetBSD ed esiste dagli anni 80 Super Dimentional Fortress è una comunità che usa NetBSD ed esiste dagli anni 80.
Fornisce free shell access per motivi didattici. Fornisce free shell access per motivi didattici.
`ssh unit@tty.freeshell.org` `ssh unit@tty.freeshell.org`
@ -466,27 +464,27 @@ Nota: occorrerà configurare la shell (anche il backspace).
# Copiare file con scp # Copiare file con scp
*scp* serve a spostare file da una macchina all'altra **scp** serve a spostare file da una macchina all'altra
^ ^
*copia da remoto a locale* (download) **copia da remoto a locale** (download)
`scp itara@altrove:file_esistente file_da_creare` `scp itara@altrove:file_esistente file_da_creare`
^ ^
*copia dal locale al remoto* (upload) **copia dal locale al remoto** (upload)
`scp file_esistente itara@altrove:file_da_creare` `scp file_esistente itara@altrove:file_da_creare`
^ ^
la sintassi di scp usa sempre: il file *esistente prima* e quello *da-creare dopo*. la sintassi di scp usa sempre: il file **esistente prima** e quello **da-creare dopo**.
^ ^
Opzioni Opzioni
-r copia recursivamente tutti i file di una directory -r copia recursivamente tutti i file di una directory
-p mantiene i permessi del source-file (file esistente) -p mantiene i permessi del source-file (file esistente)
-P indica una porta -P indica una porta
-v modalità verbosa -v modalità verbosa
^ ^
@ -504,7 +502,7 @@ Spostare da altrove la directory musica in locale, nella dir in cui mi trovo
# Copiare file con sftp # Copiare file con sftp
*stfp* è come FTP, ma con la esse davanti. **stfp** è come FTP, ma con la esse davanti.
la "s" sta per "secure", come in https. la "s" sta per "secure", come in https.
^ ^
@ -513,7 +511,7 @@ Si usa come un ftp da linea comando.
`sftp altrove` `sftp altrove`
Esempio di comandi a disposizione: *cd lcd ls lls pwd get put bye* Esempio di comandi a disposizione: **cd lcd ls lls pwd get put bye**
^ ^
sftp è un po' legnoso, un esempio di collegamento specificando una porta: sftp è un po' legnoso, un esempio di collegamento specificando una porta:
@ -521,10 +519,10 @@ sftp è un po' legnoso, un esempio di collegamento specificando una porta:
`sftp -oPort=50022 itara@altrove:/media/film/` `sftp -oPort=50022 itara@altrove:/media/film/`
^ ^
Sia scp che ftp hanno i loro manuali: *man scp* e *man sftp* Sia scp che ftp hanno i loro manuali: **man scp** e **man sftp**
^ ^
Ma perché usare sftp? Ma perché usare sftp?
Nessun BAFH metterebbe mai rssh su una macchina piena di film. Nessun BAFH metterebbe mai rssh su una macchina piena di film.
E ci sono tanti software che sono in grado di utilizzare ssh, scp, sftp. E ci sono tanti software che sono in grado di utilizzare ssh, scp, sftp.
@ -533,12 +531,12 @@ E ci sono tanti software che sono in grado di utilizzare ssh, scp, sftp.
# Qualche software che fa uso di openssh # Qualche software che fa uso di openssh
* ncftp (ftp/sftp cline client) - ncftp (ftp/sftp cline client)
* filezilla (ftp/sftp client) - filezilla (ftp/sftp client)
* gigolo (integrazione con filesystem remoti) - gigolo (integrazione con filesystem remoti)
* integrazione nel file manager (thunar con gvfs-fuse, nautilus, nemo, etc) - integrazione nel file manager (thunar con gvfs-fuse, nautilus, nemo, etc)
* duplicity - duplicity
* sshuttle - sshuttle
--- ---
@ -549,8 +547,8 @@ Per comodità, spostarsi nella directory ~/.ssh/ (se non esiste va creata)
`ssh-keygen -b 8192 -t rsa -f id_rsa-zaphoda` `ssh-keygen -b 8192 -t rsa -f id_rsa-zaphoda`
-b specifica la dimensione -b specifica la dimensione
-t specifica il tipo (rsa o dsa) -t specifica il tipo (rsa o dsa)
-f specifica il nome -f specifica il nome
^ ^
@ -559,22 +557,22 @@ definire una passphrase.
La coppia di chiavi, privata e pubblica, avranno quest'aspetto: La coppia di chiavi, privata e pubblica, avranno quest'aspetto:
* La chiave privata: *id_rsa-zaphoda* - La chiave privata: **id_rsa-zaphoda**
* La chiave pubblica: *id_rsa-zaphoda.pub* - La chiave pubblica: **id_rsa-zaphoda.pub**
^ ^
E andranno a popolare la directory: ~/.ssh/ insieme al file config e known_hosts E andranno a popolare la directory: ~/.ssh/ insieme al file config e known_hosts
* config - config
* known_hosts - known_hosts
* *id_rsa-zaphoda* - **id_rsa-zaphoda**
* *id_rsa-zaphoda.pub* - **id_rsa-zaphoda.pub**
^ ^
La parte *pub*-blica della doppia chiave non è segreta, è riconoscibile dalla desinenza La parte **pub**-blica della doppia chiave non è segreta, è riconoscibile dalla desinenza
*.pub* ed è la chiave pubblica che deve essere messa sul server, per effettuare lo **.pub** ed è la chiave pubblica che deve essere messa sul server, per effettuare lo
scambio chiavi con autenticazione senza scambio password, nella directory ~/.ssh/, scambio chiavi con autenticazione senza scambio password, nella directory ~/.ssh/,
con i giusti permessi, dove sarà rinominata come: *authorized_keys* con i giusti permessi, dove sarà rinominata come: **authorized_keys**
`mv id_rsa-zaphoda.pub authorized_keys` `mv id_rsa-zaphoda.pub authorized_keys`
@ -588,11 +586,11 @@ dell'utente, la quale non viene così digitata e non viene trasmessa.
È richiesta invece la passphrase di sblocco chiavi in locale, È richiesta invece la passphrase di sblocco chiavi in locale,
e ancora: non quella dell'utente sul server. e ancora: non quella dell'utente sul server.
Nota: Se non avrò settato una password o passphrase, non mi verrà chiesta Nota: Se non avrò settato una password o passphrase, non mi verrà chiesta,
(è utile per l'utilizzo automatico all'interno di uno script di backup) (è utile per l'utilizzo automatico all'interno di uno script di backup)
Esempio password: *5_Gru&t75$^dU* Esempio password: **5_Gru&t75$^dU**
Esempio passphrase: *Nutri la tua testa* Esempio passphrase: **Nutri la tua testa**
Una passphrase è più facile da ricordare che una buona password, Una passphrase è più facile da ricordare che una buona password,
ma è anche più sicura. ma è anche più sicura.
@ -601,8 +599,8 @@ ma è anche più sicura.
# i Permessi # i Permessi
Tra i file che sono stati elencati dentro ~/.ssh/ ci sono anche la chiave *privata* Tra i file che sono stati elencati dentro ~/.ssh/ ci sono anche la chiave **privata**
e quella *pubblica* usate per l'autenticazione con scambio di chiavi via ssh. e quella **pubblica** usate per l'autenticazione con scambio di chiavi via ssh.
^ ^
- config - config
@ -615,15 +613,15 @@ Questi file devono avere permesso di lettura e scrittura solo al proprietario, e
directory che li contiene anche, ma in più quello di esecuzione, altrimenti non directory che li contiene anche, ma in più quello di esecuzione, altrimenti non
sarebbe navigabile. sarebbe navigabile.
`chmod 700 ~/.ssh` `chmod 700 ~/.ssh`
`chmod 600 ~/.ssh/id_rsa-zaphoda` `chmod 600 ~/.ssh/id_rsa-zaphoda`
`chmod 644 ~/.ssh/id_rsa-zaphoda.pub` `chmod 644 ~/.ssh/id_rsa-zaphoda.pub`
^ ^
memo: 4 = scrittura, 2 = lettura, 1 = esecuzione memo: 4 = scrittura, 2 = lettura, 1 = esecuzione
esempio: scrittura+lettura=6 esempio: scrittura+lettura=6
memo: UGO - cioè User, Group, Others - cioè me, mio gruppo, resto del mondu. memo: UGO - cioè User, Group, Others - cioè me, mio gruppo, resto del mondu.
esempio: U=scrittura-e-lettura G=niet O=nada --> 600 esempio: U=scrittura-e-lettura G=niet O=nada --> 600
--- ---
@ -631,21 +629,21 @@ esempio: U=scrittura-e-lettura G=niet O=nada --> 600
# SSH-Tunnel # SSH-Tunnel
Il Port Forwarding SSH, chiamato anche SSH tunneling, permette di stabilire una Il Port Forwarding SSH, chiamato anche SSH tunneling, permette di stabilire una
sessione protetta ssh e poi far passare connessioni arbitrarie TCP attraverso di essa sessione protetta ssh e poi far passare connessioni arbitrarie TCP attraverso
(fa un tunnel). (fa un tunnel).
^ ^
Ci sono tre tipi di Port Forwarding: Ci sono tre tipi di Port Forwarding:
*ssh -L* **ssh -L**
Locale port forwarding Locale port forwarding
*ssh -R* **ssh -R**
Remote port forwarding Remote port forwarding
*ssh -D* **ssh -D**
Dinamic port forwarding Dinamic port forwarding
@ -660,31 +658,32 @@ Si usa per raggiungere o spostare files da/per una macchina "dietro",
cioè non raggiungibile direttamente. cioè non raggiungibile direttamente.
^ ^
Ad esempio: un collegamento al pc chiamato *nanna*, che è in una sottorete non Ad esempio: un collegamento al pc chiamato **nanna**, che è in una sottorete non
direttamente raggiungibile da fuori, attraverso un pc chiamato *ninna* che si direttamente raggiungibile da fuori, attraverso un pc chiamato **ninna** che si
affaccia alla rete con un IP raggiungibile. affaccia alla rete con un IP raggiungibile.
Ho credenziali sia su *ninna* che su *nanna*. Ho credenziali sia su **ninna** che su **nanna**.
Per raggiungere *nanna* bisogna passare da *ninna*. Con un tunnel. Per raggiungere **nanna** bisogna passare da **ninna**. Con un tunnel.
--- ---
# Local Port Forwarding (2) # Local Port Forwarding (2)
Si dovrà prima *creare* il tunnel e poi *usarlo*. Si dovrà prima **creare** il tunnel e poi **usarlo**.
^ ^
1: Creazione del tunnel: 1: Creazione del tunnel:
Collegamento da *localhost* a *ninna* girando (forward) *nanna* sulla (port) porta 22000 Collegamento da **localhost** a **ninna** girando (forward) **nanna** sulla (port)
Altrimenti detta: collegamento di *nanna* su *ninna* sulla porta 22000 porta 22000
Altrimenti detta: collegamento di **nanna** su **ninna** sulla porta 22000
^ ^
`ssh ninna -L 22000:nanna:22` `ssh ninna -L 22000:nanna:22`
L = Local tunnel L = Local tunnel
22 = la porta dove raggiungere nanna 22 = la porta dove raggiungere nanna
22000 = la porta dove aprire il tunnel su localhost 22000 = la porta dove aprire il tunnel su localhost
^ ^
@ -693,13 +692,14 @@ E si tiene la connessione, dove si può aprire un `top`.
2: Uso del tunnel: 2: Uso del tunnel:
Collegamento su *localhost* alla porta 22000 dove si trova il tunnel che porta a *nanna* Collegamento su **localhost** alla porta 22000 dove si trova il tunnel che porta a
Altrimenti detta: collegamento in locale alla porta 22000 per arrivare su *nanna* **nanna**
Altrimenti detta: collegamento in locale alla porta 22000 per arrivare su **nanna**
Apro un'altra finestra terminale. Apro un'altra finestra terminale.
^ ^
`ssh localhost -p 22000` (e mi trovo su *nanna*) `ssh localhost -p 22000` (e mi trovo su **nanna**)
p = specifica la porta p = specifica la porta
^ ^
@ -710,19 +710,19 @@ Nota: Una volta creato il tunnel, potrò anche usarlo con scp.
# Dynamic Port Forwarding # Dynamic Port Forwarding
è un socks proxy tunnel per le app che supportano socks. è un socks proxy tunnel per le app che supportano socks.
Serve a creare un proxy con ssh Serve a creare un proxy con ssh
^ ^
`ssh -NvD 8080 itara@altrove` `ssh -NvD 8080 itara@altrove`
N = non chiudere la shell N = non chiudere la shell
v = verbose mode v = verbose mode
D = Dinamico tunnel D = Dinamico tunnel
^ ^
Collega al server e crea un SOCKS proxy sulla porta 8080 in locale. Collega al server e crea un SOCKS proxy sulla porta 8080 in locale.
E ora nel client potrò usare: *localhost*, *Socks5* Proxy, Port *8080* E ora nel client potrò usare: **localhost**, **Socks5** Proxy, Port **8080**
Ad esempio potrei, nelle preferenze di Firefox, indirizzarlo a usare Ad esempio potrei, nelle preferenze di Firefox, indirizzarlo a usare
localhost sulla porta 8080 e così far passare la mia navigazione da Altrove. localhost sulla porta 8080 e così far passare la mia navigazione da Altrove.
@ -757,7 +757,7 @@ Ora da fuori si potrà puntare il browser a http://ninna:8080 e raggiungere
la pagina web ospitata sulla "macchina dietro" (Nanna). la pagina web ospitata sulla "macchina dietro" (Nanna).
^ ^
Nota: l'uso di *ninna* e *nanna* è unicamente dovuto al fatto che i loro nomi Nota: l'uso di **ninna** e **nanna** è unicamente dovuto al fatto che i loro nomi
sono intuitivamente percepibili in successione. Non per farvi venire sonno. sono intuitivamente percepibili in successione. Non per farvi venire sonno.
--- ---
@ -770,14 +770,14 @@ il nostro computer è anche un server ssh.
È opportuno configurare sshd editando il suo file di configurazione: È opportuno configurare sshd editando il suo file di configurazione:
in */etc/ssh/sshd_config* in **/etc/ssh/sshd_config**
> PubkeyAuthentication yes PubkeyAuthentication yes
> PasswordAuthentication no PasswordAuthentication no
> PermitRootLogin no PermitRootLogin no
> ChallengeResponseAuthentication no ChallengeResponseAuthentication no
> UsePAM no UsePAM no
> X11Forwarding no X11Forwarding no
Ora ci si potrà collegare solo con scambio chiavi, Ora ci si potrà collegare solo con scambio chiavi,
e non direttamente come root. e non direttamente come root.
@ -788,22 +788,20 @@ Per riavviare il server sshd: `/etc/init.d/ssh reload`
# The End # The End
Per la scrittura di questa slide è stato usato il formato *markdown* Per la scrittura di questa slide è stato usato il formato **markdown**
`emacs punkish-slide.md` `emacs punkish-slide.md`
Per la presentazione è stato usato *mdp* Per la presentazione è stato usato **mdp**
`mdp punkish-slide.md` `mdp punkish-slide.md`
Per la visione remota è stato usato *tmate* Per la visione remota è stato usato **tmate**
`tmate` (ha generato un link) `tmate` (ha generato un link)
Commenti? Kudos? Consigli? Vaffa? Grazie! Commenti? Kudos? Consigli? Vaffa? Grazie!
**https://git.abbiamoundominio.org/dan/presentazione-openssh** **https://git.abbiamoundominio.org/dan/presentazione-openssh**