corrections mineures

This commit is contained in:
Jérémy Lecour 2017-10-29 12:08:25 +01:00
parent ff50acc08b
commit 6e21632eac

View file

@ -272,7 +272,7 @@ Options utiles pour `scp` :
* `-P 2222` : utilise le port 2222 pour le serveur distant (malheureusement différent de `ssh`…)
* `-q` : mode silencieux
* `-C` : active la compression
* `-C` : active la compression
* `-i identity_file` : utilise une clé SSH spécifique
@ -347,9 +347,9 @@ Pour générer une clé SSH *ed25519* :
~~~
$ ssh-keygen -t ed25519 -a 100
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/jdoe/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Enter file in which to save the key (/home/jdoe/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/jdoe/.ssh/id_ed25519.
Your public key has been saved in /home/jdoe/.ssh/id_ed25519.pub.
The key fingerprint is:
@ -375,9 +375,9 @@ Pour générer une clé SSH *RSA* :
~~~
$ ssh-keygen -o -t rsa -b 4096 -a 100
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jdoe/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Enter file in which to save the key (/home/jdoe/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/jdoe/.ssh/id_rsa.
Your public key has been saved in /home/jdoe/.ssh/id_rsa.pub.
The key fingerprint is:
@ -425,19 +425,19 @@ no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa XXXXX co
### Agent SSH
Il est important de protéger une clé SSH utilisée par humain par une passphrase.
Pour éviter de taper sa passphrase à chaque utilisation, on peut utiliser un *agent SSH* qui va retenir la clé SSH en mémoire.
Il est important de protéger une clé SSH utilisée par un humain par une passphrase.
Pour éviter de saisir sa passphrase à chaque utilisation, on peut utiliser un *agent SSH* qui va retenir la clé SSH en mémoire.
En général, un agent SSH est lancé par son Window Manager.
Sinon, on peut le lancer automatiquement via son `~/.profile` :
~~~
~~~{.bash}
eval $(ssh-agent) 1> /dev/null
~~~
Une fois lancé, l'agent ouvre une socket Unix dans `$TMPDIR/ssh-XXXXXXXXXX/agent.PPID` et la rend disponible via les variables d'environnement suivantes :
~~~
~~~{.bash}
SSH_AUTH_SOCK=/tmp/ssh-IklIVmCGvWgT/agent.1151
SSH_AGENT_PID=1198
~~~
@ -446,11 +446,11 @@ On peut alors lancer la commande `ssh-add` qui va nous demander notre passphrase
~~~
$ ssh-add -t 36000
Enter passphrase for /home/jdoe/.ssh/id_ed25519:
Enter passphrase for /home/jdoe/.ssh/id_ed25519:
Identity added: /home/jdoe/.ssh/id_ed25519 (/home/jdoe/.ssh/id_ed25519)
~~~
> *Note* : l'option [-t](http://man.openbsd.org/ssh-agent#t) permet de limiter à 10h le temps où l'agent va conserver la passphrase en mémoire. Si l'option n'est pas utilisée, ce temps sera infini, ce que l'on déconseille en général.
> *Note* : l'option [-t](http://man.openbsd.org/ssh-agent#t) permet de limiter à 10h (36 000 secondes) le temps où l'agent va conserver la passphrase en mémoire. Si l'option n'est pas utilisée, ce temps sera infini, ce que l'on déconseille en général.
On peut également utiliser l'outil [keychain](https://www.funtoo.org/Keychain) qui facilite l'utilisation d'un agent SSH (et d'un agent GPG).
Il va notamment lancer les agents si ils ne sont pas encore lancés, et transmettre plusieurs clés SSH si besoin.
@ -462,7 +462,7 @@ $ keychain id_ed25519 id_rsa --timeout 600
* Starting ssh-agent...
* Starting gpg-agent...
* Adding 2 ssh key(s): /home/jdoe/.ssh/id_ed25519 /home/jdoe/.ssh/id_rsa
Enter passphrase for /home/jdoe/.ssh/id_ed25519:
Enter passphrase for /home/jdoe/.ssh/id_ed25519:
* ssh-add: Identities added: /home/jdoe/.ssh/id_ed25519 /home/jdoe/.ssh/id_rsa (life=600m)
~~~
@ -485,7 +485,7 @@ On lance la commande suivante :
$ ssh -L 3306:127.0.0.1:3306 ssh.example.com
~~~
Et l'on pourra accéder au service MySQL sur sa propre machine via 127.0.0.1 port 3306.
Et l'on pourra accéder au service MySQL sur sa propre machine via 127.0.0.1 sur le port 3306.
Si le service MySQL est sur une 3ème machine (accessible depuis le serveur distant), il suffit de préciser son IP avec l'option `-L` :
@ -516,7 +516,7 @@ Enfin il faut noter que si l'on veut utiliser un port local inférieur à 1024,
Si l'on est derrière une connexion NAT par exemple, on peut ouvrir un tunnel pour permettre une connexion distante depuis une machine accessible en SSH :
~~~
ssh -R 22000:127.0.0.1:22 ssh.example.com
$ ssh -R 22000:127.0.0.1:22 ssh.example.com
~~~
Depuis *ssh.example.com* on peut ainsi accéder à la machine derrière le NAT via `ssh -p22000 127.0.0.1`.
@ -537,9 +537,9 @@ C'est ainsi pratique avec un navigateur où l'ensemble du trafic vers le web pas
### Séquences d'échappement SSH
<https://lonesysadmin.net/2011/11/08/ssh-escape-sequences-aka-kill-dead-ssh-sessions/amp/>
<https://lonesysadmin.net/2011/11/08/ssh-escape-sequences-aka-kill-dead-ssh-sessions/>
On peut utiliser des combinaisons de touches spéciales via une connexion SSH pour intéragir sur la connexion en cours.
On peut utiliser des combinaisons de touches spéciales via une connexion SSH pour intéragir avec la connexion en cours.
En tapant `Entrée + ~ + ?` on obtient la liste des séquences possibles :
@ -606,15 +606,15 @@ Côté serveur, vous devez :
- Autoriser l'IP Forwarding : `sysctl -w net.ipv4.ip_forward=1`
- Si besoin, mettre une règle de NAT, par exemple sous Linux : `iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE`
Pour lancer le connexion VPN, on fera :
Pour lancer la connexion VPN, on fera :
~~~
# ssh -w 42:42 ssh.example.com
~~~
On a ensuite un périphérique `tun42` utilisable des 2 côtés à configurer.
On a ensuite un périphérique `tun42` utilisable, à configurer des 2 côtés.
- Côté serveur SSH : `ifconfig tun42 172.17.18.2/24`
- Côté serveur SSH : `ifconfig tun42 172.17.18.2/24`
- Côté client SSH : `ifconfig tun42 172.17.18.1/24`
On peut alors enfin configurer le routage au niveau client, par exemple sous Linux :
@ -625,7 +625,7 @@ On peut alors enfin configurer le routage au niveau client, par exemple sous Lin
### UserKnownHostsFile
OpenSSH se sert du fichier `~/.ssh/known_hosts` pour retenir le fingerprint de chaque connexion effectuée.
OpenSSH se sert du fichier `~/.ssh/known_hosts` pour retenir l'empreinte (_fingerprint_) de chaque connexion effectuée.
Cela lui permet de détecter un changement des clés du serveur, notamment une tentative d'usurpation d'un serveur :
~~~
@ -659,7 +659,7 @@ ssh.example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC2nP2WzQ8hkZDiEq5+QSGFhTB7
ssh.example.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBsUneE642qr/kzKwJcKl9Cgog/kgCqRLZwZs4J7RRt8
~~~
Puis l'on crée un fichier contenant :
Puis on crée un fichier contenant :
~~~
example-ssh,ssh.example.com,192.0.2.42 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC2nP2WzQ8hkZDiEq5+QSGFhTB7SYfRa7/IG0gMOIoCDXH8b3sfsBUUEL8ZSFaWgNKskUnpgg/fqAhvnDLOPskr3OGXRfrCR68fCqn5H1zBrHB1kpdjPW9ezUe1xoY3hGp6LITANHWpZie1wBjYAzaBO70hNAo4JMCQvZXDsQdyws2DRSuYtiAoG/ZY0+t2VZh3MJLcofv1wNo43M+aHJR2xWmQSE7cWjMlcw/QOmsWJBv1+Kb/nK2Q7buX/byvY8ySu5ydATnyEinzbutZXc/t/FioOtWMeqh6NlD3aPGIpUTmf8ow+c1QwZWOC3T2GWyTD5KVmAZSm77lWkpYFcd1
@ -787,7 +787,7 @@ Les clés SSH avec l'algorithme DSA sont dépréciées depuis Stretch.
On peut limiter le temps d'une connexion SSH inactive en utilisant la variable d'environnement *TMOUT*.
On peut provoquer une déconnexion automatique au bout d'1h d'activité en positionnant :
~~~
~~~{.bash}
export TMOUT=3600
~~~
@ -823,15 +823,15 @@ On peut aussi verrouiller temporairement son agent SSH via :
~~~
$ ssh-add -x
Enter lock password:
Again:
Enter lock password:
Again:
Agent locked.
$ ssh-add -l
The agent has no identities.
$ ssh-add -X
Enter lock password:
Enter lock password:
Agent unlocked.
~~~
@ -844,4 +844,3 @@ Voici plusieurs méthodes pour protéger son serveur SSH (qui peuvent se cumuler
- utiliser du Port Knocking pour camoufler son port SSH
- ne pas autoriser les connexions SSH avec un mot de passe (`PasswordAuthentication no` dans *sshd_config*)
- configurer [Fail2Ban](HowtoFail2Ban) pour bannir les adresses IP qui se trompent de mot de passe