This commit is contained in:
kyodev 2018-02-05 19:20:34 +01:00
parent bd21d1b768
commit 7d14acf21e
3 changed files with 282 additions and 0 deletions

View File

@ -0,0 +1,139 @@
# ssh: utilisation côté client
## gestion des clés
* ouvrir sa clé, le temps de la session ou jusqu'à déchargement
```shell
# la clé a un nom standard id_rsa
ssd-add
# le clé s'appelle toto_rsa
ssh-add toto_rsa
```
* si erreur, démarrer l'agent ssh
```shell
eval $(ssh-agent -s)
```
```text
Agent pid 12345
```
l' ajouter au démarrage du système
* voir le(s) clef(s)
```shell
ssh-add -l
```
* décharger le(s) clef(s)
```shell
ssh-add -D
```
## sftp
explorateur par exemple: `sftp://<user>@SRV/`
## export display
dans la config du serveur, sur debian, `X11Forwarding yes`, on peut donc se connecter et obtenir un export du serveur X:
```shell
ssh -X <user>@SRV
mousepad # exemple application X
```
l'application est sur le serveur, l'affichage sur le client
## scp (secure cp)
```shell
scp -P 'port' /chemin/fichierSource <user>@SRV:/chemin/cible
```
## génération clé
si pas déjà exixtante :
```shell
ssh-keygen -t rsa -b 4096 -C mail/host/commentaire
```
* à lancer en utilisateur
* -t par défaut rsa
* -b taille en bits (par défaut: 2048b)
* -C commentaire
* DSA, déprécié par openssl
* un commentaire permet d'identifier clairement le client, par nom ou host ou machine ou mail...
* mot de passe non obligatoire, mais ÇA DEVRAIT. le pass protège l'ouverture de la **clé privée**
* par défaut, 2 fichiers générés dans `~/.ssh` pour le client
* id_rsa : **clé privée**, confidentielle, à ne jamais donner, à protéger
* id_rsa.pub: **clé publique**, à communiquer au service requis
* pour le serveur, clé dans /etc/ssh
## config client
* pour faire simple: chmod 600 sur les fichiers key (au moins la clé privée)
* étape **non obligatoire**, mais augmente le confort d'accès
* **SRV** désigne l'ip 192.168.1.110 du serveur ( rappel connaître ipv4: `ip -4 a` ), majuscules non obligatoires
* **SRV** a un serveur ssh écoutant sur le port 5555 (pas de port 22 standard que kevin essaye d'emblée)
```shell
xdg-open ~/.ssh/config
```
```text
Host SRV
HostName 192.168.1.110
User client
Port 5555
# defaut: IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/essai_rsa
```
## envoi clé publique sur un serveur
### méthode rapide
```shell
# hypothèse que .ssh/ sera créé si besoin
ssh-copy-id -p 5555 -i ~/.ssh/id_rsa.pub <user>@192.168.1.110
```
### méthode _traditionnelle_
* se connecter en user sur le serveur, en debian d'origine, `<user>/.ssh/` n'existe pas
```shell
ssh -p '5555' <user>@SRV
mkdir .ssh
chmod 700 .ssh
exit
```
* copier la clé sur le serveur, du client:
```shell
scp -P '5555' ~/.ssh/id_rsa.pub <user>@SRV:/home/user
# sur le serveur SRV
cat id_rsa.pub >> .ssh/authorized_keys
rm id_rsa.pub
```
* vérifier les droits en final
```text
ls -ld .ssh/
drwx------ 2 user user 4096 déc. 26 22:23 .ssh/
ls -l .ssh/
-rw-r--r-- 1 user user 1472 janv. 9 21:17 authorized_keys
```

View File

@ -0,0 +1,138 @@
# installation serveur ssh, authentification par clé
* chmod 700 sur ~/.ssh (pas obligatoire mais conseillé)
* chmod 600 sur les fichiers key (obligatoire, vérification par openssh)
* root requis pour la configuration du serveur ssh
* installation si besoin:
```shell
apt install openssh-server
```
les clés du serveur sont générées automatiquement à l'installation du serveur
## configuration
```text
editor /etc/ssh/sshd_config
```
par défaut:
* PubkeyAuthentication yes
* AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
* ChallengeResponseAuthentication no
* PermitRootLogin prohibit-password (synonyme de without-password)
modification:
* `PasswordAuthentication no` pour désactiver l'accès par pass (**important**)
* `Port 5555` pour éviter le port standard 22, voir [ports iana](https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml)
pour faire simple, ajout bloc suivant en fin de fichier :
```text
# modifications ultérieures éventuelles facilitées
#LogLevel DEBUG
#AuthorizedKeysFile .ssh/authorized_keys
# standard répété
ChallengeResponseAuthentication no
PermitEmptyPasswords no
PubkeyAuthentication yes
# changement port d'écoute
Port 5555
# suppression accès par mot de passe
PasswordAuthentication no
# même pas avec une clef !
PermitRootLogin no
# facultatif ipv4
AddressFamily inet
# facultatif, restreindre l'accès à certains
AllowUsers <user>
```
relancer le service: `systemctl restart sshd`
## connexion client
le client a une clé autorisée sur le serveur. pour la génération et la publication, voir
<https://kyodev.frama.io/kyopages/trucs/ssh/ssh-client/>
```shell
ssh <user>@SRV
```
le **mot de passe de la clé** n'est pas demandé et la connexion se fait correctement
## ça marche
* commenter `LogLevel DEBUG` pour désactiver debug éventuel
## ça marche pas
* activer `LogLevel DEBUG` sur le serveur
* surveiller `tail -n 20 -f /var/log/auth.log`
* côté client, se connecter avec `ssh -vv user@SRV`
* vérifier les droits
* vérifier les **droits**
* **vérifier les droits**
* chmod 700 sur ~/.ssh
* chmod 600 sur les fichiers
* droits sur le serveur, du côté user 600 sur les keys
* **MAIS AUSSI**, un /home/user correct, 777 proscrit, 755 c'est un minimum mieux
* journalctl -xe
* systemctl status sshd.service
* systemctl list-units | grep ssh
* systemctl list-unit-files | grep ssh
## config serveur rapide
```text
# modifications ultérieures éventuelles facilitées
#LogLevel DEBUG
#AuthorizedKeysFile .ssh/authorized_keys
# standard
ChallengeResponseAuthentication no
PermitEmptyPasswords no
PubkeyAuthentication yes
# modifications
Port 5555
PasswordAuthentication no
PermitRootLogin no
# ipv4
AddressFamily inet
# restreindre l'accès à certains
AllowUsers user1 user2
```
## liens divers
* <https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml>

View File

@ -19,6 +19,8 @@ pages:
- sources: debian/apt/sources.md
- sources snapshot: debian/apt/sources_snapshot.md
- unattended-upgrade: debian/apt/unattended-upgrade.md
- config:
- LightDM: debian/config/lightdm.md
- grub:
- grub-azerty: debian/grub/azerty-grub.md
- grub-rescue boot: debian/grub/boot-grub-rescue.md
@ -69,6 +71,9 @@ pages:
- kernel compil: trucs/kernel/kernel-compil.md
- kernel compil patch: trucs/kernel/kernel-compil-patch.md
- flags cpu (cpufeatures.h): trucs/kernel/cpu_flags.md
- ssh:
- installation serveur : trucs/ssh/ssh-serveur.md
- utilisation client: trucs/ssh/ssh-client.md
- dns openNic: trucs/dns-opennic.md
- interfaces nommage classique: trucs/interfaces-nommage-classique.md
- iproute2 / net-tools: trucs/iproute_net-tools.md