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

