SSH

Un article de SeRoM - Wiki.


Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les trames sont chiffrées. Il devient donc impossible d'utiliser un sniffer pour voir ce que fait l'utilisateur. Le protocole SSH a été conçu avec l'objectif de remplacer les différents programmes rlogin, telnet et rsh.


Sommaire

[modifier] tuto ssh

[modifier] Usage basique

connection a un server ssh :

   ssh hostname
   ssh ip

connection a un server avec un certain login :

   ssh -l login hostname
   ssh user@hostname

connection a un server en precisant le port :

   ssh -p n°port hostname

[modifier] executer une commande

connection a un server pour executer juste une commande (la connection est fermée apres l'execution de la commande:

   ssh login@hostname "ls -l /bin/"

note ce type de commande ne fonctionnera pas avec des commande de type vi text.txt, pour par exemple editer un fichier txt il faudra ajouter le flag t :

   ssh -t login@hostname vi /tmp/txt

[modifier] rediriger stdin,stdout,stderr

rediriger sur la machine a laquelle on est connecter:

   ssh login@hostname "ls /bin | grep -i rm"

rediriger sur la machine locale

   ssh login&hostname "ls /bin" | grep -i rm 

[modifier] transfert de fichier

copier un fichier de la machine a laquelle on est connectée vers la machine connectée :

   scp [user]@host:/path/to/sourcefile /path/to/destinationfile

copier un fichier de la machine connectée a la machine a laquelle on veut se connecté :

   scp /path/to/sourcefile [user]@host:/path/to/destinationfile

pour copier un repertoire entier on utilisera le flag -r :

   scp -r ...

on pourra aussi utiliser la commande : sftp (qui est en quelque sort une connection ftp)

   sftp fish@xen-lo.no-ip.org

on peut aussi syncroniser des repertoire avec l'utilitaire rsync :

   rsync -e ssh login@hostname:/tmp/

pour plus d'info man rsync

[modifier] Forwarding

ssh a la possibilité de multiplexé plusieur connection a traver un tunnel ssh, cela permet de forwarder des flux tcp/ip, x11, ...

on peut effectuer une connection sur X disant :

   ssh -X login@hostname xclock

on peut aussi faire du port forwarding :

   ssh -L 1234:localhost:23 username@host

tous le traffic qui va sur le port 1234 du client va etre rediriger sur le port 23 du server (note : ici localhost sera resolu par le server ssh apres que le connection sois etablie, localhost se rapporte donc au cient lui meme

autres exemples :

    ssh xen-lo.no-ip.org  -l fish  -L 10021/192.168.1.1/8080

cette commande va rediriger le traffic du reseaux de xen-lo, ici le web server de sont router (ayant l ip local 192.168.1.1 sur le port 8080) sur mon port 10021, je pourrai donc visualiser la page du router en tapant 127.0.0.1:10021 dans mon navigateur.

   ssh -D 1080 xen-lo.no-ip.org 

cette commande va rediriger tous mon traffic vers le server ssh, le server ssh jouera en quelque sorte le role de server proxy

[modifier] log

les connection ssh sont enregistrer dans un fichier appeler lastlog, consultable avec l outil last. last affiche la liste des derniers utilisateur qui se sont connecté en lisant le contenu dans /var/log/wtmp. pour ne pas etre enregistrer dans ce fichier , on peut utiliser l option -T de ssh, malgré cela certain systeme pourrais enregistrer l acces dans /var/log/auth.log


[modifier] An almost invisible ssh connection

You can use SSH with no tty allocation while using the -T flag :

   ssh -T user@host

If you connect to a host with this way, a command like "w" or who will not show your connection. Better, add 'bash -i' at the end of the command to simulate a shell

    ssh -T user@host /bin/bash -i

Another trick with ssh is to use the -o option which allow you to specify a particular know_hosts file (by default it's ~/.ssh/know_hosts). The trick is to use -o with /dev/null:

   ssh -o UserKnownHostsFile=/dev/null -T user@host /bin/bash -i

With this trick the IP of the box you connect to won't be logged in know_hosts.

with these trick, the only way to be seen is with a ps -aux