fix markdown

master
dan 2020-07-17 12:24:11 +02:00
parent b020238da7
commit 15fdb0f1cf
1 changed files with 142 additions and 144 deletions

View File

@ -3,7 +3,8 @@
# 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)
`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
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.
^
SSH è come il teletrasporto. *Beam me up, Scotty!*
SSH è come il teletrasporto. **Beam me up, Scotty!**
^
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.
^
*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.
^
@ -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
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.
---
@ -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
`ssh telemaco@altrove`
^
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)
^
*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
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
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:
*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:
*zaphoda*, *abbiamoundominio.org* o *51.68.188.232*
**zaphoda**, **abbiamoundominio.org** o **51.68.188.232**
---
# 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.
@ -208,7 +208,7 @@ Le porte indicano, in telematica, il punto d'arrivo di una comunicazione.
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".
Usando diverse porte, servizi diversi sulla stessa macchina allo stesso
@ -249,9 +249,9 @@ Nota: cambiare una porta senza altri motivi, viene chiamata: Sicurezza tramite o
Scrivendo solo `ssh zaphoda` probabilmente non funziona.
^
*zaphoda* è il nome (hostname) della macchina,
la quale ha un indirizzo IP fisso: *51.68.188.232*
e siccome abbiamo affittato un dominio, è raggiungibile a: *abbiamoundominio.org*
**zaphoda** è il nome (hostname) della macchina,
la quale ha un indirizzo IP fisso: **51.68.188.232**
e siccome abbiamo affittato un dominio, è raggiungibile a: **abbiamoundominio.org**
^
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`
- *config*
- **config**
- known_hosts
- id_rsa-zaphoda
- 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`
> Host fattanza
> Hostname 192.168.4.42
> User kodi
> Port 50022
Host fattanza
Hostname 192.168.4.42
User kodi
Port 50022
^
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
> Host zaphoda
> HostName abbiamoundominio.org
> User dan
> Port 22
> ProxyCommand socat - SOCKS4A:localhost:abbiamoundominio.org:22,socksport=9050
> IdentitiesOnly yes
> IdentityFile ~/.ssh/id_rsa-zaphoda
Host zaphoda
HostName abbiamoundominio.org
User dan
Port 22
ProxyCommand socat - SOCKS4A:localhost:abbiamoundominio.org:22,socksport=9050
IdentitiesOnly yes
IdentityFile ~/.ssh/id_rsa-zaphoda
Zaphoda è una macchina chiamata con il suo nome di dominio,
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).
^
@ -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
Eccoci di ritorno al collegamento sulla macchina locale
Di ritorno al collegamento sulla macchina locale
`ls -l ~/.ssh`
- config
- *known_hosts*
- **known_hosts**
- id_rsa-zaphoda
- id_rsa-zaphoda.pub
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`
> The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
> ECDSA key fingerprint is SHA256:xso0+Jusafdf3YJhappydaysf3Eb5cTh6P2QCvRZfs.
> Are you sure you want to continue connecting (yes/no)?
The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:xso0+Jusafdf3YJhappydaysf3Eb5cTh6P2QCvRZfs.
Are you sure you want to continue connecting (yes/no)?
^
`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,
a meno che la fingerprint non coincida.
@ -368,21 +368,21 @@ In quel caso, dirà che qualcosa è andato storto.
`ssh 127.0.0.1`
^
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
> 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.
> The fingerprint for the RSA key sent by the remote host is
> SHA256:OyNcagUr5ynfsfxdciaosonoilmagopinolvGaUdlRJSxaxxmiDDtsHwf5gQc.
> Please contact your system administrator.
> 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
> remove with:
> 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.
> Host key verification failed.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
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.
The fingerprint for the RSA key sent by the remote host is
SHA256:OyNcagUr5ynfsfxdciaosonoilmagopinolvGaUdlRJSxaxxmiDDtsHwf5gQc.
Please contact your system administrator.
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
remove with:
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.
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.
^
Sono stato avvisat* e ho tre possibilità:
Sono stato avvisat@ e ho tre possibilità:
* contattare l'amministratore (ma sono io!)
* rinunciare a collegarmi
* cancellare la riga corrispondente nel file known_host, come suggerito:
- contattare l'amministratore (ma sono io!)
- rinunciare a collegarmi
- 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.
^
@ -428,7 +428,6 @@ Per il collegamento remoto:
ssh
scp
sftp
^
Per la gestione chiavi:
@ -436,7 +435,6 @@ ssh-add
ssh-keysign
ssh-keyscan
ssh-keygen
^
Lato server:
@ -448,7 +446,7 @@ ssh-agent
# 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.
`ssh unit@tty.freeshell.org`
@ -466,20 +464,20 @@ Nota: occorrerà configurare la shell (anche il backspace).
# 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`
^
*copia dal locale al remoto* (upload)
**copia dal locale al remoto** (upload)
`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
@ -504,7 +502,7 @@ Spostare da altrove la directory musica in locale, nella dir in cui mi trovo
# 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.
^
@ -513,7 +511,7 @@ Si usa come un ftp da linea comando.
`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:
@ -521,7 +519,7 @@ sftp è un po' legnoso, un esempio di collegamento specificando una porta:
`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?
@ -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
* ncftp (ftp/sftp cline client)
* filezilla (ftp/sftp client)
* gigolo (integrazione con filesystem remoti)
* integrazione nel file manager (thunar con gvfs-fuse, nautilus, nemo, etc)
* duplicity
* sshuttle
- ncftp (ftp/sftp cline client)
- filezilla (ftp/sftp client)
- gigolo (integrazione con filesystem remoti)
- integrazione nel file manager (thunar con gvfs-fuse, nautilus, nemo, etc)
- duplicity
- sshuttle
---
@ -559,22 +557,22 @@ definire una passphrase.
La coppia di chiavi, privata e pubblica, avranno quest'aspetto:
* La chiave privata: *id_rsa-zaphoda*
* La chiave pubblica: *id_rsa-zaphoda.pub*
- La chiave privata: **id_rsa-zaphoda**
- La chiave pubblica: **id_rsa-zaphoda.pub**
^
E andranno a popolare la directory: ~/.ssh/ insieme al file config e known_hosts
* config
* known_hosts
* *id_rsa-zaphoda*
* *id_rsa-zaphoda.pub*
- config
- known_hosts
- **id_rsa-zaphoda**
- **id_rsa-zaphoda.pub**
^
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
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
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`
@ -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,
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)
Esempio password: *5_Gru&t75$^dU*
Esempio passphrase: *Nutri la tua testa*
Esempio password: **5_Gru&t75$^dU**
Esempio passphrase: **Nutri la tua testa**
Una passphrase è più facile da ricordare che una buona password,
ma è anche più sicura.
@ -601,8 +599,8 @@ ma è anche più sicura.
# i Permessi
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.
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.
^
- config
@ -631,21 +629,21 @@ esempio: U=scrittura-e-lettura G=niet O=nada --> 600
# SSH-Tunnel
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).
^
Ci sono tre tipi di Port Forwarding:
*ssh -L*
**ssh -L**
Locale port forwarding
*ssh -R*
**ssh -R**
Remote port forwarding
*ssh -D*
**ssh -D**
Dinamic port forwarding
@ -660,25 +658,26 @@ Si usa per raggiungere o spostare files da/per una macchina "dietro",
cioè non raggiungibile direttamente.
^
Ad esempio: un collegamento al pc chiamato *nanna*, che è in una sottorete non
direttamente raggiungibile da fuori, attraverso un pc chiamato *ninna* che si
Ad esempio: un collegamento al pc chiamato **nanna**, che è in una sottorete non
direttamente raggiungibile da fuori, attraverso un pc chiamato **ninna** che si
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)
Si dovrà prima *creare* il tunnel e poi *usarlo*.
Si dovrà prima **creare** il tunnel e poi **usarlo**.
^
1: Creazione del tunnel:
Collegamento da *localhost* a *ninna* girando (forward) *nanna* sulla (port) porta 22000
Altrimenti detta: collegamento di *nanna* su *ninna* sulla porta 22000
Collegamento da **localhost** a **ninna** girando (forward) **nanna** sulla (port)
porta 22000
Altrimenti detta: collegamento di **nanna** su **ninna** sulla porta 22000
^
`ssh ninna -L 22000:nanna:22`
@ -693,13 +692,14 @@ E si tiene la connessione, dove si può aprire un `top`.
2: Uso del tunnel:
Collegamento su *localhost* alla porta 22000 dove si trova il tunnel che porta a *nanna*
Altrimenti detta: collegamento in locale alla porta 22000 per arrivare su *nanna*
Collegamento su **localhost** alla porta 22000 dove si trova il tunnel che porta a
**nanna**
Altrimenti detta: collegamento in locale alla porta 22000 per arrivare su **nanna**
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
^
@ -722,7 +722,7 @@ D = Dinamico tunnel
^
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
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).
^
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.
---
@ -770,14 +770,14 @@ il nostro computer è anche un server ssh.
È opportuno configurare sshd editando il suo file di configurazione:
in */etc/ssh/sshd_config*
in **/etc/ssh/sshd_config**
> PubkeyAuthentication yes
> PasswordAuthentication no
> PermitRootLogin no
> ChallengeResponseAuthentication no
> UsePAM no
> X11Forwarding no
PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin no
ChallengeResponseAuthentication no
UsePAM no
X11Forwarding no
Ora ci si potrà collegare solo con scambio chiavi,
e non direttamente come root.
@ -788,22 +788,20 @@ Per riavviare il server sshd: `/etc/init.d/ssh reload`
# 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`
Per la presentazione è stato usato *mdp*
Per la presentazione è stato usato **mdp**
`mdp punkish-slide.md`
Per la visione remota è stato usato *tmate*
Per la visione remota è stato usato **tmate**
`tmate` (ha generato un link)
Commenti? Kudos? Consigli? Vaffa? Grazie!
**https://git.abbiamoundominio.org/dan/presentazione-openssh**