ssh¶
Installation client/server¶
Un simple apt-get suffit suffit pour installer client et server
apt-get install ssh
Par défaut root est autoriser à ce connecter. Vous pouvez modifier le fichier de config qui se trouve dans /etc/ssh/sshd_config. Pour ajouter la possibilité à un utilisateur standart de se connecter en ssh, il suffit d’ajouter cet utilisateur au groupe ssh. Cela est possible via la modification du fichier /etc/group
Note
sous debian un tasksel permet de selectionner à l’installation le serveur ssh comme composant du serveur
Note
pour windows il existe un excellent serveur ssh http://www.kpym.com/2/kpym/index.htm, il est configurable via un fichier ini et on peut notament lancer un script d initialisation ou utiliser les utilisateur d’un domaine. Ce serveur utilise les utilisateurs windows pour l’authentification Sinon il est possible d’utiliser cygwin qui est devenu plus facile d’installation en utilisant la documentation http://docs.oracle.com/cd/E24628_01/install.121/e22624/preinstall_req_cygwin_ssh.htm#CHDJDBIA
Utilisation¶
Le ssh est un moyen simple et sécuriser d’échange entre deux machines basé sur des clés privées / publiques permettant de crypter les informations transmisses. Il permet ainsi d’effectuer des opérations sur une machine à partir d’une autre machine
ssh user@host
ssh user@host command
SSH sans password¶
Si on souhaite automatiser des échanges via un tunnel SSH, un problème va être rencontrer au niveau du password. En effet ssh vous demande toujours un password et il n’est pas possible de passer ce dernier dans la ligne de commande. C’est a ce niveau qu’intervient les clés. Prenons un exemple concret: sur la machine SO07 on souhaite envoyer des commandes sur la machine SO06 via un tunnel ssh. La commande qu’on souhaite automatiser est la suivante:
ssh root@SO06 su - bkadmin -c "mqsistop BK1"
Nous allons donc faire plusieurs étapes:
- sur le S007 on va générer les clés ssh : ssh-keygen -t rsa (cela les génère dans $HOME/.ssh, faite entrer à toute les questions)
- sur le S006 on va générer les clés ssh : ssh-keygen -t rsa
- on échanges les clés:
- copier le fichier id_rsa.pub du SO07 sur la machine SO06 en le renommant id_SO07.pub (par exemple)
- il faut maintenant, sur SO06, copier le contenu de id_SO07.pub dans $HOME/.ssh/authorized_keys via la commande cat id_SO07.pub >> $HOME/.ssh/authorized_keys
Il est maintenant possible sur le SO07 de ce connecter sur le SO06 sans mot de passe mais toujours de façon sécurisée
Note
il est aussi possible d’utiliser la commande ssh-add pour ajouter les clés
Connection ssh sans mot de passe¶
Billet pense-bête, ça m’évitera de chercher si j’ai un trou de mémoire :) Il est possible de se connecter sans saisir de mot de passe sur une machine distante en SSH, chose très pratique lors de l’administration de plusieurs machines... Si ce n’est pas encore fait, il vous faut générer votre paire de clef publique / privée, pour cela, entrez la commande suivante :
ssh-keygen
Il vous demandera : # L’endroit oû stocker les clefs, (~/.ssh/id_dsa par défaut) # Une phrase faisant office de mot de passe, laissez cette dernière vide
Ensuite, il faut copier la clef publique dans le fichier ~/.ssh/authorized_keys du pc distant, vous pouvez le faire manuellement avec la commande scp, mais il existe plus simple :
ssh-copy-id user@domain.tld
Voilà, vous pouvez dorénavant vous connecter à votre machine sans mot de passe.
Prenez garde à n’utilisez cette méthode qu’à partir d’une machine “de confiance”...
Connexion par rebond¶
Nous avons 3 machines:
- alice
- bob
- claire
Pour que la machine alice puisse ce connecter sur claire elle doit:
- ce connecter sur bob
- puis de bob ce connecter sur claire
Il est possible de modifier le fichie ~/.ssh/config d’alice:
Host claire
ProxyCommand ssh IpOfBob -W IpOfClaire:22
maintenant pour ce connecter à claire rien de plus simple
ssh claire
Redirection de port¶
On souhaite en utilisant sur sa machine dans un naviguateur l’adresse localhost:8080 le site porter le serveur serveurdistant sur le port 80
ssh serveurdistant -L 8080:localhost:80
si on veut utiliser toujours l’adresse localhost:8080 pour avoir accès au site web porté par le serveur intranet:80 qui est lui accessible uniquement par le serveur serveurdistant
ssh serveurdistant -L 8080:intranet:80
Redirection du flux vnc¶
Sur le serveur distant il faut installer x11vnc
serveurdistant$ apt-get install x11vnc
pour lancer le serveur vnc sur la machien distante
x11vnc -localhost -display :0
cela permet uniquement au serveur lui même (localhost) de ce connecter en vnc. cela apporte de la sécurité et impose une redirection du port 5900 (port vnc)
Note
souvent root n’est pas autorisé à lancer x11vnc on doit alors le lancer avec un autre utilisateur
su - userlx -c "x11vnc -localhost -display :0"
maintenant on peut rediriger le port 5900 via un tunnel ssh
ssh serveurdistant -L 5900:localhost:5900
et lancer le client vnc
apt-get install vncviewer
vncviewer localhost:5900
et maintenant une ligne de commande pour tout faire en une seule fois
ssh serveurdistant -L 5900:localhost:5900 -C x1vnc -localhost -display :0 -nopw
Il est possible de réaliser cette manipulation via putty.
Par exemple via une machine accessible via ssh par mascarille.com:65022 nous avons accès a un serveur web sur une machine interne 192.168.2.92:80
Il est possible en utilisant putty de redirigé le flux 192.168.2.92:80 (qui est derrière mascarille.com) sur le port local 8888 (accessible donc via 127.0.0.1:8888)