Outils pour utilisateurs

Outils du site


linux:ssh (lu 110127 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édentes Révision précédente
Prochaine révision
Révision précédente
linux:ssh [05-12-2016 14:14]
edmc73 [Gérer plusieurs clés]
linux:ssh [13-01-2023 08:50] (Version actuelle)
edmc73 [Clé DSA non supportée]
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
 +
 +===== 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 181: Ligne 205:
 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
  
-===== Chrooter les utilisateurs en SFTP / SSH =====+==== 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 =====
  
 Voir -> http://formation-debian-testing.via.ecp.fr/ftp.html#id289286 Voir -> http://formation-debian-testing.via.ecp.fr/ftp.html#id289286
Ligne 205: Ligne 235:
 </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 241:
  
 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 232: Ligne 263:
         ChrootDirectory %h         ChrootDirectory %h
 </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 =====
 +--- source: https://debian-facile.org/viewtopic.php?id=9607  https://linuxfr.org/forums/linux-debian-ubuntu/posts/cloisonner-utilisateur-ssh-debian-8-resolu
 +
 +Installation du paquet bash-static
 +
 +  #apt-get install bash-static
 +
 +Pour faciliter l'administration nous allons créer un groupe sshchroot
 +
 +  #addgroup sshchroot
 +
 +Création de l'utilisateur test
 +
 +  #adduser test
 +  #usermod -d / test
 +  #usermod -s /bin/bash-static
 +  #adduser test sshchroot
 +
 +Mettre l'utilisateur root propriétaire du home de test sinon la connexion ssh sera refusée
 +
 +  #chown root: /home/test
 +
 +Petit script qui vous activera des commandes supplémentaire pour le user test
 +
 +  #cd /home/test
 +  #vim create.sh
 +
 +<file bash create.sh>
 +#!/bin/bash
 +
 +mkdir -p {bin,dev,lib,lib64}
 +mknod dev/null c 1 3
 +mknod dev/zero c 1 5
 +chmod 0666 dev/{null,zero}
 +
 +TMPFILE1=./temp1
 +TMPFILE2=./temp2
 +#Definition des commandes que vous souhaitez activer
 +APPS="/bin/bash /bin/cp /bin/ls /bin/mkdir /bin/mv /bin/rm /bin/rmdir /usr/bin/id /usr/bin/rsync /usr/bin/scp /usr/bin/wget /usr/bin/vim /usr/bin/vi /bin/cat /bin/less /usr/bin/tail /usr/bin/clear /bin/chmod"
 +
 +for app in $APPS;  do
 +  if [ -x $app ]; then
 +    app_path=`dirname $app`
 +    if ! [ -d .$app_path ]; then
 +        mkdir -p .$app_path
 +    fi
 +    cp -p $app .$app
 +    ldd $app >> ${TMPFILE1}
 +  fi
 +done
 +
 +for libs in `cat ${TMPFILE1}`; do
 +    frst_char="`echo $libs | cut -c1`"
 +    if [ "$frst_char" = "/" ]; then
 +        echo "$libs" >> ${TMPFILE2}
 +    fi
 +done
 +
 +for lib in `cat ${TMPFILE2}`; do
 +      mkdir -p .`dirname $lib` > /dev/null 2>&1
 +      cp $lib .$lib
 +done
 +
 +cp -r /lib/terminfo ./lib/
 +
 +rm -f $TMPFILE1
 +rm -f $TMPFILE2
 +</file>
 +
 +Lancez le script dans /home/test
 +
 +  #./create.sh
 +
 +Editez le fichier de conf ssh pour enfin chrooter la connexion
 +
 +  #vim /etc/sshd_config 
 +<code>
 +Match Group test
 +        #%u permet de se placer automatiquement dans le home du user 
 +        ChrootDirectory /home/%u
 +        AllowTCPForwarding no
 +        X11Forwarding no
 +</code>
 +
 +Petit restart du service ssh
 +
 +  # service ssh reload
 +(on ne sait jamais)
 +  #service ssh restart
 +
 +Test avec le user test
 +
 +<code>
 +I have no name!@x.x.x.x:/$
 +I have no name!@x.x.x.x:/$ ls -l
 +total 28
 +drwxrwxr-x 2    0 1003 4096 Mar 15 15:35 bin
 +-rwxr-xr-x 1    0 1003  886 Mar 15 15:21 create.sh
 +drwxr-xr-x 2    0 1003 4096 Mar 15 15:23 dev
 +drwxr-xr-x 2 1001 1003 4096 Mar 15 15:48 lala
 +drwxr-xr-x 4    0 1003 4096 Mar 15 15:23 lib
 +drwxr-xr-x 2    0 1003 4096 Mar 15 15:23 lib64
 +drwxr-xr-x 4    0 1003 4096 Mar 15 15:23 usr
 +</code>
 +
 +Je ne peux pas editez dans home de test\\
 +C'est normal seul root doit être propriétaire. Les droits plus permissifs sont les suivants:
 +chmod 755 si vous donnez des trop permissifs le ssh chrooter ne fonctionnera pas. Dans ce cas créer un répertoire dont l'utilisateur a full access.
 +exemple:
 +
 +  #mkdir /home/test/test 
 +  #chown test:test /home/test/test
  
 ===== autossh : créer une connexion persistante ===== ===== autossh : créer une connexion persistante =====
Ligne 263: Ligne 417:
  
 La commande pour se connecter en ssh avec cette clé est La commande pour se connecter en ssh avec cette clé est
-  ssh -i ~/.ssh/id_dsa_serveur.pub user@serveur.com+  ssh -i ~/.ssh/id_dsa_serveur user@serveur.com
  
 On peut aussi créer un fichier de config pour automatiser tout ça soit dans son répertoire personnel, soit au niveau de la config du serveur ssh On peut aussi créer un fichier de config pour automatiser tout ça soit dans son répertoire personnel, soit au niveau de la config du serveur ssh
Ligne 274: Ligne 428:
  
 Il existe une multitude de paramètre dans ce fichier de config disponible ici => http://www.gsp.com/cgi-bin/man.cgi?section=5&topic=ssh_config Il existe une multitude de paramètre dans ce fichier de config disponible ici => http://www.gsp.com/cgi-bin/man.cgi?section=5&topic=ssh_config
 +===== Clé DSA non supportée =====
 +
 +This is a result of upgrading to OpenSSH 7.0. As the release notes for OpenSSH 7.0 say, "Support for ssh-dss host and user keys is disabled by default at run-time".
 +
 +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
 +
 +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.
 +
 +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
 +
linux/ssh.1480943676.txt.gz · Dernière modification: 05-12-2016 14:14 de edmc73