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

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)

_images/ssh1.png
_images/ssh2.png
_images/ssh3.png