Outils pour utilisateurs

Outils du site


linux:ssh (lu 36204 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 [24-10-2018 20:51] – [Partager un répertoire distant via SSH] 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 219: Ligne 281:
 </code> </code>
  
-Pour chrooter toto, son répertoire home doit appartenir à root+Pour chrooter toto, son répertoire home doit appartenir à root et être en 755
 <code>cd /home <code>cd /home
 ls -l ls -l
Ligne 225: Ligne 287:
  
 chown root toto chown root toto
 +chmod 755 toto
 ls -l ls -l
 drwxr-xr-x  2 root    toto                4096 16 janv. 08:44 toto</code> drwxr-xr-x  2 root    toto                4096 16 janv. 08:44 toto</code>
Ligne 247: Ligne 310:
 </code> </code>
  
 +exemple d'utilisation de sftp
 +<code>
 +Download a single file from a remote ftp server to your machine:
  
 +sftp {user}@{host}:{remoteFileName} {localFileName}
 +
 +Upload a single file from your machine to a remote ftp server:
 +
 +sftp {user}@{host}:{remote_dir} <<< $'put {local_file_path}'
 +</code>
 ===== Chrooter les utilisateurs en SSH ===== ===== Chrooter les utilisateurs en SSH =====
 --- source: https://debian-facile.org/viewtopic.php?id=9607  https://linuxfr.org/forums/linux-debian-ubuntu/posts/cloisonner-utilisateur-ssh-debian-8-resolu --- source: https://debian-facile.org/viewtopic.php?id=9607  https://linuxfr.org/forums/linux-debian-ubuntu/posts/cloisonner-utilisateur-ssh-debian-8-resolu
Ligne 408: 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 414: 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.1540414285.txt.gz · Dernière modification : de edmc73