Outils pour utilisateurs

Outils du site


linux:ssh (lu 25704 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 [28-05-2018 13:31] – [Chrooter les utilisateurs en SFTP / SSH] edmc73linux:ssh [06-10-2025 20:45] (Version actuelle) – [Clé DSA non supportée] edmc73
Ligne 27: Ligne 27:
 > Le man en français http://www.delafond.org/traducmanfr/man/man5/sshd_config.5.html > Le man en français http://www.delafond.org/traducmanfr/man/man5/sshd_config.5.html
  
 +
 +Pour éviter de perdre sa session lors d'une interruption réseau, on peut rajouter
 +
 +  ClientAliveCountMax 10
 +  ClientAliveInterval 60
 +  TCPKeepAlive yes
 +
 +ce qui permet de tester si le client est en vie toutes les 60 secondes jusqu'a 10 essaie (soit 600 secondes) avant de le déconnecter
 ==== Si la demande de Password est longue à s'afficher ==== ==== Si la demande de Password est longue à s'afficher ====
 Ajouter cette option dans le fichier de config. Ajouter cette option dans le fichier de config.
Ligne 162: 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 180: Ligne 250:
  
 source => http://www.generation-linux.fr/index.php?post/2009/04/14/Monter-un-repertoire-distant-avec-SSH2 source => http://www.generation-linux.fr/index.php?post/2009/04/14/Monter-un-repertoire-distant-avec-SSH2
 +
 +==== Performance ====
 +
 +Un très bon article sur les performances sshfs / nfs => http://www.admin-magazine.com/HPC/Articles/Sharing-Data-with-SSHFS
 +
 +  sshfs -o Ciphers=arcfour,compression=no,nonempty,auto_cache,reconnect,workaround=all user@development.net:/usr/local/gitdev/ ~/dev/code
  
 ===== Chrooter les utilisateurs en SFTP ===== ===== Chrooter les utilisateurs en SFTP =====
Ligne 205: 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 211: 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 233: 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 394: 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 401: Ligne 487:
  
  
 +----------
 +
 +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>
linux/ssh.1527514261.txt.gz · Dernière modification : de edmc73