mirror of https://framagit.org/kyodev/kyopages.git
new ssh
This commit is contained in:
parent
bd21d1b768
commit
7d14acf21e
|
@ -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
|
||||||
|
```
|
|
@ -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>
|
|
@ -19,6 +19,8 @@ pages:
|
||||||
- sources: debian/apt/sources.md
|
- sources: debian/apt/sources.md
|
||||||
- sources snapshot: debian/apt/sources_snapshot.md
|
- sources snapshot: debian/apt/sources_snapshot.md
|
||||||
- unattended-upgrade: debian/apt/unattended-upgrade.md
|
- unattended-upgrade: debian/apt/unattended-upgrade.md
|
||||||
|
- config:
|
||||||
|
- LightDM: debian/config/lightdm.md
|
||||||
- grub:
|
- grub:
|
||||||
- grub-azerty: debian/grub/azerty-grub.md
|
- grub-azerty: debian/grub/azerty-grub.md
|
||||||
- grub-rescue boot: debian/grub/boot-grub-rescue.md
|
- grub-rescue boot: debian/grub/boot-grub-rescue.md
|
||||||
|
@ -69,6 +71,9 @@ pages:
|
||||||
- kernel compil: trucs/kernel/kernel-compil.md
|
- kernel compil: trucs/kernel/kernel-compil.md
|
||||||
- kernel compil patch: trucs/kernel/kernel-compil-patch.md
|
- kernel compil patch: trucs/kernel/kernel-compil-patch.md
|
||||||
- flags cpu (cpufeatures.h): trucs/kernel/cpu_flags.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
|
- dns openNic: trucs/dns-opennic.md
|
||||||
- interfaces nommage classique: trucs/interfaces-nommage-classique.md
|
- interfaces nommage classique: trucs/interfaces-nommage-classique.md
|
||||||
- iproute2 / net-tools: trucs/iproute_net-tools.md
|
- iproute2 / net-tools: trucs/iproute_net-tools.md
|
||||||
|
|
Loading…
Reference in New Issue