Outils pour utilisateurs

Outils du site


linux:ssh (lu 36212 fois)

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
linux:ssh [06-03-2019 13:31] – [Chrooter les utilisateurs en SFTP] edmc73linux:ssh [06-03-2026 09:19] (Version actuelle) – [2. Application de la politique] edmc73
Ligne 170: Ligne 170:
  
 Encore plus d'explication => http://fr.openclassrooms.com/informatique/cours/mise-en-place-d-un-tunnel-tcp-ip-via-ssh Encore plus d'explication => http://fr.openclassrooms.com/informatique/cours/mise-en-place-d-un-tunnel-tcp-ip-via-ssh
 +
 +===== Se connecter par rebond =====
 +
 +Si vous avez besoin d'une connexion ssh à une machine accessible uniquement par une autre machine et que vous n'avez pas envie de vous connecter deux fois comme par exemple
 +  toto@mamachine# ssh titi@MACHINE
 +  titi@MACHINE# ssh tutu@serveur
 +
 +Utilisons ProxyJump
 +
 +  ssh -J titi@MACHINE tutu@serveur
 +
 +
 +<code>
 +    ssh       ssh
 +A ------> B ------> C
 +    ^          ^
 + using A'  using A's
 +   key         key
 +</code>
 +
 +ProxyJump utilise la clé local (A) pour se connecter à (B) puis utilise cette même clé (A) pour se connecter à (C) même si (B) n'a pas de clé pour se connecter directement à (C), ça fonctionne quand même.
 +
 +
 +On peut aussi écrire tout ça dans le fichier de config ssh
 +
 +<code>
 +Host serveur
 +  HostName serveur
 +  User tutu
 +  IdentityFile ~/.ssh/id_ed25519
 +  ProxyJump titi@MACHINE
 +
 +
 +# exemple pour un vieux serveur
 +
 +Host vieuxserveur
 +  HostName vieuxserveur
 +  User root
 +  IdentityFile ~/.ssh/id_rsa.pub
 +  ProxyJump root@serveurIntermédiaire
 +  PubkeyAcceptedKeyTypes=+ssh-dss,ssh-rsa
 +  HostKeyAlgorithms=+ssh-dss,ssh-rsa
 +
 +</code>
 +
 +
 +
 +===== Reverse ssh =====
 +
 +Mon serveur **toto-public.com** voudrait se connecter à **monpc.local** or celui-ci est derrière un pare-feu ou un réseau local inaccessible mais il a quand même accès au web et donc à **toto-public.com**.
 +
 +
 +Sur **monpc.local**, lancez la commande suivante
 +  ssh -NR 2200:localhost:22 user@toto-public.com
 +
 +L'option ''-N'' spécifie qu'on se loggue que pour du forward, pas possible de taper des commandes
 +
 +L'option ''-R'' pour Remote: port_local_du_serveur_distant:ip_local_du_serveur_distant:port_local_du_serveur_local (le port 2200 est un exemple)
 +
 +Une fois connecté, allons sur notre serveur **toto-public.com** et lancez la commande suivante pour vous connecter à **monpc.local**
 +
 +  ssh -p 2200 user@localhost
  
 ===== Partager un répertoire distant via SSH ===== ===== Partager un répertoire distant via SSH =====
Ligne 418: Ligne 480:
 The solution is to add the following line to ~/.ssh/config on every client machine (every machine where you run the SSH client): The solution is to add the following line to ~/.ssh/config on every client machine (every machine where you run the SSH client):
  
-  PubkeyAcceptedKeyTypes=+ssh-dss+  HostKeyAlgorithms=+ssh-dss
  
 If the server is using OpenSSH 7.0 or newer, you'll also need to add this line to /etc/ssh/sshd_config on each server machine. If the server is using OpenSSH 7.0 or newer, you'll also need to add this line to /etc/ssh/sshd_config on each server machine.
Ligne 424: Ligne 486:
 Alternatively, you can generate an entirely new SSH key and add it to your authorized_keys file on every server you ever want to log into. I recommend you use RSA, to avoid compatibility woes. I don't recommend ECDSA, as apparently gnome-keyring-daemon doesn't automatically pick up SSH keys of type ECDSA. Alternatively, you can generate an entirely new SSH key and add it to your authorized_keys file on every server you ever want to log into. I recommend you use RSA, to avoid compatibility woes. I don't recommend ECDSA, as apparently gnome-keyring-daemon doesn't automatically pick up SSH keys of type ECDSA.
  
 +
 +----------
 +
 +Si on essaie de se connecter sur un vieux serveur, on obtient le message d'erreur
 +  Unable to negotiate with 192.168.0.1 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss
 +
 +La solution est de rajouter une option dans votre ligne de commande
 +  ssh 192.168.0.1 -oHostKeyAlgorithms=+ssh-rsa
 +
 +Dans le fichier .ssh/config vous pouvez aussi mettre ça
 +
 +Le **KexAlgorithms** n'est à ajouter seulement si l'erreur suivante apparait
 +  Unable to negotiate with 192.168.0.1 port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
 +
 +
 +<code>
 +Host serveur
 +  Hostname serveur
 +  User root
 +  IdentityFile ~/.ssh/id_rsa
 +  #Legacy changes
 +  KexAlgorithms +diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
 +  HostKeyAlgorithms=+ssh-rsa
 +  PubkeyAcceptedAlgorithms=+ssh-rsa
 +</code>
 +
 +Et à contrario, si une vieille machine veut se connecter sur un serveur ssh récent et que dans les logs du serveur on a ça
 +  userauth_pubkey: signature algorithm ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]
 +
 +On peut créer une règle pour autoriser ce vieux protocol seulement pour une ip et un user
 +  vi /etc/ssh/sshd_config.d/ma_regle.conf
 +
 +<code>
 +Match Host 9.ip_du_vieux_serveur.1.1.1 User edmc
 +  PubkeyAcceptedAlgorithms=+ssh-rsa
 +</code>
 +
 +
 +
 +
 +
 +===== Connexion SSH vers vieux serveurs (OpenSSL 3.5+) =====
 +
 +L'erreur ''ssh_dispatch_run_fatal: error in libcrypto'' survient car les distributions récentes (Fedora/RHEL) bloquent les signatures SHA-1 au niveau d'OpenSSL, même si SSH les autorise.
 +
 +==== 1. Création du module de politique crypto ====
 +Créer un fichier pour autoriser spécifiquement les signatures SHA-1 dans la bibliothèque crypto :
 +
 +Fichier : ''/etc/crypto-policies/policies/modules/SHA1-SSL-SIG.pmod''
 +
 +Contenu :
 +
 +<file>
 +#Unblock openssl sha1 signatures for ssh
 +__openssl_block_sha1_signatures = 0
 +</file>
 +
 +==== 2. Application de la politique ====
 +Appliquer la modification sans affaiblir tout le système (maintien du mode DEFAULT) :
 +
 +Commande : 
 +  sudo update-crypto-policies --set DEFAULT:SHA1-SSL-SIG
 +
 +Vérification (doit afficher ''DEFAULT:SHA1-SSL-SIG'') : 
 +  update-crypto-policies --show 
 +
 +==== 3. Configuration Client SSH ====
 +Ajouter l'exception pour l'IP du serveur dans ''~/.ssh/config'' :
 +<file>
 +Host 192.168.0.3
 +    HostName 192.168.0.3
 +    HostKeyAlgorithms +ssh-rsa
 +    PubkeyAcceptedAlgorithms +ssh-rsa
 +</file>
 +
 +Note : Cette méthode est plus sécurisée que le mode ''LEGACY'' global car elle cible précisément le verrou OpenSSL.
  
linux/ssh.1551879072.txt.gz · Dernière modification : de edmc73