SSH

SSH pour Secure Shell et un protocole de communication contrairement a telnet qui est aussi un protocole de communication, SSH est sécurisé et fonctionne avec des clés de chiffrement ce qui a pour effet de rendre toutes les communications impossibles à lire.
Il sert par exemple à se connecter a un serveur/routeur se trouvant a distance.

On va voir deux moyens de connexion, la connexion basique par mot de passe, et ensuite on verra celle par clés qui est plus pratique mais pas pour autant plus sécure.

Connexion basique

Ce type de connexion demande un mot de passe, ce qui peut vite devenir agaçant quand on se connecte plusieurs fois par jour sur notre serveur.

ssh -p 22 toto@ipdusrv
toto@ipdusrv's password:

Connexion par clés

Pour pallier au problème vu plus haut avec la connexion par mot de passe, on va utiliser la connexion par clé qui est beaucoup plus pratique, mais il faut la mettre en place.
Pour cela, rien de plus simple.
On va commencer par générer une paire de clés publiques/privées RSA qui vont nous servir pour l’authentification.

$ ssh-keygen  -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):      
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
4e:c8:81:45:70:89:81:b1:74:75:e1:25:5d:95:97:f2 user@srv
The key's randomart image is:
+--[ RSA 4096]----+
|.+.+.+.o+...o.o  |
|+ o o oo.. . E   |
|.      ..   . .  |
|       .         |
|        1        |
|       3 ,       |
|      3 -        |
|       7 .       |
|      .          |
+-----------------+

On va ensuite envoyer la clé publique sur notre serveur, dans son fichier de clés.
la clé se trouve généralement dans ~/.ssh/id_rsa.pub.

ssh-copy-id -i id_rsa.pub user@srv

À ce point-là, on peut se connecter en utilisant sa passphrase utilisée plus haut, mais il nous faut encore faire une petite manipulation pour ne plus avoir à rentrer cette phrase, et pour cela on va utiliser l’agent ssh.
Sur le pc du client, rentrez cette commande:

$ ssh-add
Enter passphrase for /home/user/.ssh/id_rsa: 
Identity added: /home/user/.ssh/id_rsa (/home/user/.ssh/id_rsa)

Maintenant, a la première connexion, votre passphrase vous sera demandée, mais ensuite vous pourrez vos connecter autant de fois que vous voudrez sans rien taper.

SCP

Scp ou Secure Copy est une fonction de copie sécurisée utilisant le protocole ssh.
remote to local:

scp usr@srv:/home/usr/file ./

local to remote:

scp file root@srv:/home/usr/

Execute custom script

Il est parfois nécessaire de faire executer seulement un script ou une commande lors de la connexion a un serveur par SSH, plusieurs methodes existent, une pas tres propre consiste a modifier le shell de l'utilisateur pour le diriger vers ledit script a executer.

Une autre methode est d'utiliser la clause ForceCommand dans le fichier /etc/sshd_config afin de le faire pointer vers le script a utiliser.

Match User foo
    ForceCommand /path/to/script.sh

SSHD_CONFIG(5) précise que : la commande est invoquée en utilisant le shell de connexion de l'utilisateur avec l'option -c

ce qui implique que le shell de l'utilisateur ne doit pas etre /bin/false ou désactivé

SSHFS

SSHFS pour Secure shell file system est un tool permettant de monter localement un FS distant, ce qui en fait un outil fort sympathique quand on travaille sur une machine distante qui n’aurait par exemple par internet.
Pour l’installer, rien de plus simple
debian:

apt-get install sshfs

centos:

yum install fuse sshfs

FreeBSD:

pkg install fusefs-sshfs-2.5 

les sources sont également disponibles ici
Une fois l’outil installé, il faut:
Créer le répertoire ou sera monté le FS:

mkdir /mnt/toto

Monter le FS:

sshfs toto@IPMachineDistante:/home/toto /mnt/toto 

Pour démonter le FS, la commande suivante suffit:

umount /mnt/toto

Si vous voulez monter le répertoire au démarrage de votre poste client, il faut avant tout générer une paire de clé ssh pour monter automatiquement sans avoir à rentrer un mot de passe.
Ensuite, il faut ajouter la ligne suivante a fstab:

toto@IPMachineDistante:/home/toto  /mnt/toto fuse.sshfs idmap=user,uid=0123

Port forwarding

ssh -L localhost:12345:toto.com:8006 user@oweteam.com

Spécifie que le port 12345 sur la machine locale (client) sera transféré sur le port 8006 de la machine distante toto.com Ceci fonctionne grâce à l'allocation d'une socket qui écoute sur le port 12345 de la machine locale, et qui, dès qu'une connexion est établie sur ce port, la transfère à travers le canal sécurisé, et se connecte sur le port 8006 de la machine distante toto.com.

Dynamic port forwarding

ssh -D 12345 user@oweteam.com

Spécifie un transfert « dynamique » des ports au niveau applicatif. Ceci fonctionne grâce à l'allocation d'une socket qui écoute sur le port 12345 de la machine locale, et qui, dès qu'une connexion est établie sur ce port, la transfère à travers le canal sécurisé, et le protocole applicatif est utilisé pour déterminer où se connecter sur la machine distante. ssh se comporte alors comme un serveur SOCKS.

Reverse port forwarding


Spécifie que le port 22 de la machine distante localhost sera transféré au port 2210 de la machine locale. Ceci fonctionne grâce à l'allocation d'une socket qui écoute sur le port 22 de la machine distante localhost, et qui, dès qu'une connexion est établie sur ce port, la transfère à travers le canal sécurisé, et se connecte sur le port 2210 de la machine locale.

ssh -R 2210:localhost:22 user@oweteam.com

Ainsi, depuis oweteam.com il est possible de se connecter a localhost via le port 2210 en ssh.

ssh user@localhost -p 2210
wiki/ssh.txt · Dernière modification: 2019/08/14 14:13 par root
CC0 1.0 Universal
Powered by PHP Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Valid HTML5