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
@ -218,12 +218,12 @@ indirizzo e stessa interfaccia di rete possono coesistere.
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
(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`
^
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`
---
@ -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.
^
@ -425,30 +425,28 @@ OpenBSD descrive OpenSSH come una suite che comprende i seguenti strumenti:
Per il collegamento remoto:
ssh
scp
ssh
scp
sftp
^
Per la gestione chiavi:
ssh-add
ssh-keysign
ssh-keyscan
ssh-add
ssh-keysign
ssh-keyscan
ssh-keygen
^
Lato server:
sshd
sftp-server
sshd
sftp-server
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,27 +464,27 @@ 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
-r copia recursivamente tutti i file di una directory
-p mantiene i permessi del source-file (file esistente)
-P indica una porta
-r copia recursivamente tutti i file di una directory
-p mantiene i permessi del source-file (file esistente)
-P indica una porta
-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
*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,10 +519,10 @@ 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?
Ma perché usare sftp?
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.
@ -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
---
@ -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`
-b specifica la dimensione
-t specifica il tipo (rsa o dsa)
-b specifica la dimensione
-t specifica il tipo (rsa o dsa)
-f specifica il nome
^
@ -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
@ -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
sarebbe navigabile.
`chmod 700 ~/.ssh`
`chmod 600 ~/.ssh/id_rsa-zaphoda`
`chmod 700 ~/.ssh`
`chmod 600 ~/.ssh/id_rsa-zaphoda`
`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
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
---
@ -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,31 +658,32 @@ 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`
L = Local tunnel
22 = la porta dove raggiungere nanna
L = Local tunnel
22 = la porta dove raggiungere nanna
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:
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
^
@ -710,19 +710,19 @@ Nota: Una volta creato il tunnel, potrò anche usarlo con scp.
# 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
^
`ssh -NvD 8080 itara@altrove`
N = non chiudere la shell
v = verbose mode
N = non chiudere la shell
v = verbose mode
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*
Collega al server e crea un SOCKS proxy sulla porta 8080 in locale.
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**