diff --git a/docs/trucs/ssh/ssh-client.md b/docs/trucs/ssh/ssh-client.md new file mode 100644 index 0000000..7bc4b17 --- /dev/null +++ b/docs/trucs/ssh/ssh-client.md @@ -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://@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 @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 @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 @192.168.1.110 +``` + + +### méthode _traditionnelle_ + +* se connecter en user sur le serveur, en debian d'origine, `/.ssh/` n'existe pas +```shell +ssh -p '5555' @SRV + +mkdir .ssh +chmod 700 .ssh +exit +``` +* copier la clé sur le serveur, du client: +```shell +scp -P '5555' ~/.ssh/id_rsa.pub @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 +``` diff --git a/docs/trucs/ssh/ssh-serveur.md b/docs/trucs/ssh/ssh-serveur.md new file mode 100644 index 0000000..3b79667 --- /dev/null +++ b/docs/trucs/ssh/ssh-serveur.md @@ -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 +``` + +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 + + + +```shell +ssh @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 + +* diff --git a/mkdocs.yml b/mkdocs.yml index 215f5e4..39c6e95 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -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