ssh *** Installation client/server ========================== Un simple apt-get suffit suffit pour installer client et server .. code-block:: bash 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 .. code-block:: bash 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: .. code-block:: bash 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 : .. code-block:: bash 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 : .. code-block:: bash 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 X11 forwarding ============== permet de récuperer la session X d'une machine :: ssh -X Ip 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) .. figure:: data/ssh1.png .. figure:: data/ssh2.png .. figure:: data/ssh3.png