Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| linux:ssh [24-10-2018 20:51] – [Partager un répertoire distant via SSH] edmc73 | linux:ssh [06-10-2025 20:45] (Version actuelle) – [Clé DSA non supportée] edmc73 | ||
|---|---|---|---|
| Ligne 170: | Ligne 170: | ||
| Encore plus d' | Encore plus d' | ||
| + | |||
| + | ===== 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# | ||
| + | titi@MACHINE# | ||
| + | |||
| + | Utilisons ProxyJump | ||
| + | |||
| + | ssh -J titi@MACHINE tutu@serveur | ||
| + | |||
| + | |||
| + | < | ||
| + | ssh ssh | ||
| + | A ------> B ------> C | ||
| + | ^ ^ | ||
| + | using A' | ||
| + | | ||
| + | </ | ||
| + | |||
| + | 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 | ||
| + | |||
| + | < | ||
| + | Host serveur | ||
| + | HostName serveur | ||
| + | User tutu | ||
| + | IdentityFile ~/ | ||
| + | ProxyJump titi@MACHINE | ||
| + | |||
| + | |||
| + | # exemple pour un vieux serveur | ||
| + | |||
| + | Host vieuxserveur | ||
| + | HostName vieuxserveur | ||
| + | User root | ||
| + | IdentityFile ~/ | ||
| + | ProxyJump root@serveurIntermédiaire | ||
| + | PubkeyAcceptedKeyTypes=+ssh-dss, | ||
| + | HostKeyAlgorithms=+ssh-dss, | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ===== 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**, | ||
| + | ssh -NR 2200: | ||
| + | |||
| + | L' | ||
| + | |||
| + | L' | ||
| + | |||
| + | 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: | ||
| </ | </ | ||
| - | Pour chrooter toto, son répertoire home doit appartenir à root | + | Pour chrooter toto, son répertoire home doit appartenir à root et être en 755 |
| < | < | ||
| ls -l | ls -l | ||
| Ligne 225: | Ligne 287: | ||
| chown root toto | chown root toto | ||
| + | chmod 755 toto | ||
| ls -l | ls -l | ||
| drwxr-xr-x | drwxr-xr-x | ||
| Ligne 247: | Ligne 310: | ||
| </ | </ | ||
| + | exemple d' | ||
| + | < | ||
| + | Download a single file from a remote ftp server to your machine: | ||
| + | sftp {user}@{host}: | ||
| + | |||
| + | Upload a single file from your machine to a remote ftp server: | ||
| + | |||
| + | sftp {user}@{host}: | ||
| + | </ | ||
| ===== Chrooter les utilisateurs en SSH ===== | ===== Chrooter les utilisateurs en SSH ===== | ||
| --- source: https:// | --- source: https:// | ||
| Ligne 408: | Ligne 480: | ||
| The solution is to add the following line to ~/ | The solution is to add the following line to ~/ | ||
| - | | + | |
| If the server is using OpenSSH 7.0 or newer, you'll also need to add this line to / | If the server is using OpenSSH 7.0 or newer, you'll also need to add this line to / | ||
| Ligne 415: | Ligne 487: | ||
| + | ---------- | ||
| + | |||
| + | Si on essaie de se connecter sur un vieux serveur, on obtient le message d' | ||
| + | Unable to negotiate with 192.168.0.1 port 22: no matching host key type found. Their offer: ssh-rsa, | ||
| + | |||
| + | 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' | ||
| + | Unable to negotiate with 192.168.0.1 port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1, | ||
| + | |||
| + | |||
| + | < | ||
| + | Host serveur | ||
| + | Hostname serveur | ||
| + | User root | ||
| + | IdentityFile ~/ | ||
| + | #Legacy changes | ||
| + | KexAlgorithms +diffie-hellman-group-exchange-sha1, | ||
| + | HostKeyAlgorithms=+ssh-rsa | ||
| + | PubkeyAcceptedAlgorithms=+ssh-rsa | ||
| + | </ | ||
| + | |||
| + | 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: | ||
| + | |||
| + | On peut créer une règle pour autoriser ce vieux protocol seulement pour une ip et un user | ||
| + | vi / | ||
| + | |||
| + | < | ||
| + | Match Host 9.ip_du_vieux_serveur.1.1.1 User edmc | ||
| + | PubkeyAcceptedAlgorithms=+ssh-rsa | ||
| + | </ | ||