corrections mineures
This commit is contained in:
parent
ff50acc08b
commit
6e21632eac
|
@ -272,7 +272,7 @@ Options utiles pour `scp` :
|
||||||
|
|
||||||
* `-P 2222` : utilise le port 2222 pour le serveur distant (malheureusement différent de `ssh`…)
|
* `-P 2222` : utilise le port 2222 pour le serveur distant (malheureusement différent de `ssh`…)
|
||||||
* `-q` : mode silencieux
|
* `-q` : mode silencieux
|
||||||
* `-C` : active la compression
|
* `-C` : active la compression
|
||||||
* `-i identity_file` : utilise une clé SSH spécifique
|
* `-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
|
$ ssh-keygen -t ed25519 -a 100
|
||||||
Generating public/private ed25519 key pair.
|
Generating public/private ed25519 key pair.
|
||||||
Enter file in which to save the key (/home/jdoe/.ssh/id_ed25519):
|
Enter file in which to save the key (/home/jdoe/.ssh/id_ed25519):
|
||||||
Enter passphrase (empty for no passphrase):
|
Enter passphrase (empty for no passphrase):
|
||||||
Enter same passphrase again:
|
Enter same passphrase again:
|
||||||
Your identification has been saved in /home/jdoe/.ssh/id_ed25519.
|
Your identification has been saved in /home/jdoe/.ssh/id_ed25519.
|
||||||
Your public key has been saved in /home/jdoe/.ssh/id_ed25519.pub.
|
Your public key has been saved in /home/jdoe/.ssh/id_ed25519.pub.
|
||||||
The key fingerprint is:
|
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
|
$ ssh-keygen -o -t rsa -b 4096 -a 100
|
||||||
Generating public/private rsa key pair.
|
Generating public/private rsa key pair.
|
||||||
Enter file in which to save the key (/home/jdoe/.ssh/id_rsa):
|
Enter file in which to save the key (/home/jdoe/.ssh/id_rsa):
|
||||||
Enter passphrase (empty for no passphrase):
|
Enter passphrase (empty for no passphrase):
|
||||||
Enter same passphrase again:
|
Enter same passphrase again:
|
||||||
Your identification has been saved in /home/jdoe/.ssh/id_rsa.
|
Your identification has been saved in /home/jdoe/.ssh/id_rsa.
|
||||||
Your public key has been saved in /home/jdoe/.ssh/id_rsa.pub.
|
Your public key has been saved in /home/jdoe/.ssh/id_rsa.pub.
|
||||||
The key fingerprint is:
|
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
|
### Agent SSH
|
||||||
|
|
||||||
Il est important de protéger une clé SSH utilisée par humain par une passphrase.
|
Il est important de protéger une clé SSH utilisée par un 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.
|
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.
|
En général, un agent SSH est lancé par son Window Manager.
|
||||||
Sinon, on peut le lancer automatiquement via son `~/.profile` :
|
Sinon, on peut le lancer automatiquement via son `~/.profile` :
|
||||||
|
|
||||||
~~~
|
~~~{.bash}
|
||||||
eval $(ssh-agent) 1> /dev/null
|
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 :
|
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_AUTH_SOCK=/tmp/ssh-IklIVmCGvWgT/agent.1151
|
||||||
SSH_AGENT_PID=1198
|
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
|
$ 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)
|
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).
|
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.
|
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 ssh-agent...
|
||||||
* Starting gpg-agent...
|
* Starting gpg-agent...
|
||||||
* Adding 2 ssh key(s): /home/jdoe/.ssh/id_ed25519 /home/jdoe/.ssh/id_rsa
|
* 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)
|
* 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
|
$ 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` :
|
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 :
|
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`.
|
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
|
### 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 :
|
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`
|
- 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`
|
- 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
|
# 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`
|
- 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 :
|
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
|
### 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 :
|
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
|
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
|
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 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 :
|
On peut provoquer une déconnexion automatique au bout d'1h d'activité en positionnant :
|
||||||
|
|
||||||
~~~
|
~~~{.bash}
|
||||||
export TMOUT=3600
|
export TMOUT=3600
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
|
@ -823,15 +823,15 @@ On peut aussi verrouiller temporairement son agent SSH via :
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
$ ssh-add -x
|
$ ssh-add -x
|
||||||
Enter lock password:
|
Enter lock password:
|
||||||
Again:
|
Again:
|
||||||
Agent locked.
|
Agent locked.
|
||||||
|
|
||||||
$ ssh-add -l
|
$ ssh-add -l
|
||||||
The agent has no identities.
|
The agent has no identities.
|
||||||
|
|
||||||
$ ssh-add -X
|
$ ssh-add -X
|
||||||
Enter lock password:
|
Enter lock password:
|
||||||
Agent unlocked.
|
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
|
- 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*)
|
- 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
|
- configurer [Fail2Ban](HowtoFail2Ban) pour bannir les adresses IP qui se trompent de mot de passe
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue