4691
Commentaire: Clef ssh / à expliquer mieux si vous pouvez / corriger / replacer ailleurs...
|
8508
|
Texte supprimé. | Texte ajouté. |
Ligne 1: | Ligne 1: |
= Qu'est ce que le SSH = SSH signifie Secure SHell. C'est un protocole qui permet d'établir une communication entre un serveur et un client SSH de manière sécurisée.[[BR]] Par déformation, on parlera souvent de SSH comme un outil permettant de se connecter à un ordinateur distant possédant un serveur SSH et par la suite de travailler sur cette machine distante. |
<<TableOfContents>> = Qu'est ce que le SSH ? = SSH signifie Secure SHell. C'est un protocole qui permet d'établir une communication entre un serveur et un client SSH de manière sécurisée.<<BR>> Par déformation, on parlera souvent de SSH comme un outil permettant de se connecter à un ordinateur distant possédant un serveur SSH et par la suite de travailler sur cette machine distante. |
Ligne 8: | Ligne 10: |
Vous pourrez ainsi accéder à votre [wiki:VieCrans/GestionCompte compte CRANS] Certains départements de l'ENS proposent un compte à leurs élèves, vous pourrez y accéder en ssh[[FootNote(par exemple, pour le département maths, le serveur est ssh.dptmaths.ens-cachan.fr, et pour le crans, le serveur est ssh.crans.org)]]. Vous pouvez aussi mettre un serveur SSH sur votre ordinateur afin de pouvoir y avoir un accès intégral depuis n'importe quel point de connexion à Internet. Pour le faire sur un ordinateur sous Mandrake, vous pouvez vous référer au tutoriel SystèmeLinux/MandrakeServeurs[[BR]] |
* Vous pourrez ainsi accéder à votre [[VieCrans/GestionCompte|compte CRANS]]<<FootNote(le serveur est alors ssh.crans.org.)>> * Certains départements de l'ENS proposent un compte à leurs élèves, vous pourrez y accéder en ssh<<FootNote(par exemple, pour le département maths, le serveur est ssh.dptmaths.ens-cachan.fr, et pour le département GC, le serveur est ssh.dgc.ens-cachan.fr.)>>. * Vous pouvez aussi mettre un serveur SSH sur votre ordinateur afin de pouvoir y avoir un accès intégral depuis n'importe quel point de connexion à Internet. Pour le faire sur un ordinateur sous Mandrake, vous pouvez vous référer au tutoriel SystèmeLinux/MandrakeServeurs<<BR>> |
Ligne 20: | Ligne 20: |
* PuTTY est aussi un excellent client libre sous windows et facile d'utilisation. Il consiste en un unique éxécutable qu'il n'y a donc pas besoin d'installer. Il est disponible sur [ftp://ftp.crans.org/pub/logiciels/clients_windows/putty.exe en local sur notre ftp] ou sur [http://www.chiark.greenend.org.uk/~sgtatham/putty/ la page de putty]. * Le client fourni par le projet OpenBSD et installable à travers cygwin, s'intègre très bien à windows, pour ceux qui n'ont pas peur de lancer un cmd.exe pour lancer ssh. Celui-ci possède toutes les fonctionnalités disponibles d'un client ssh (couleur, terminal correct, pages de code correctes, etc). [http://sources.redhat.com/cygwin/setup.exe] |
* PuTTY est aussi un excellent client libre sous windows et facile d'utilisation. Il consiste en un unique éxécutable qu'il n'y a donc pas besoin d'installer. Il est disponible sur [[ftp://ftp.crans.org/pub/logiciels/clients_windows/putty_0.62.exe|en local sur notre ftp]] ou sur [[http://www.chiark.greenend.org.uk/~sgtatham/putty/|la page de putty]]. * Le client fourni par le projet OpenBSD et installable à travers cygwin, s'intègre très bien à windows, pour ceux qui n'ont pas peur de lancer un cmd.exe pour lancer ssh. Celui-ci possède toutes les fonctionnalités disponibles d'un client ssh (couleur, terminal correct, pages de code correctes, etc). [[http://sources.redhat.com/cygwin/setup.exe]] |
Ligne 25: | Ligne 24: |
* Il existe un très bon client libre : [wiki:WikiInformatique/ConnexionScp WinSCP]. Ce programme est disponible sur [http://winscp.net/eng/docs/lang:fr le site officiel]. | * Il existe un très bon client libre : [[WikiInformatique/ConnexionScp|WinSCP]]. Ce programme est disponible sur [[http://winscp.net/eng/docs/lang:fr|le site officiel]]. |
Ligne 28: | Ligne 27: |
* Il est possible d'installer un serveur SSH sous Windows sans nécessairement installer Cygwin : [http://sshwindows.sourceforge.net/download/ SSHWindows]. | * Il est possible d'installer un serveur SSH sous Windows sans nécessairement installer Cygwin : [[http://sshwindows.sourceforge.net/download/|SSHWindows]]. |
Ligne 31: | Ligne 30: |
Pour information, voilà où trouver des clients ssh, on pourra aussi aller voir avec profit la page du projet [http://www.openssh.com/ OpenSSH]. Il faut consulter le site de votre distribution favorite ou aller voir [ftp://ftp.cs.hut.fi/pub/ssh/ le serveur officiel], sur [ftp://sunsite.unc.edu/pub/packages/security/ssh/ Sunsite] ou encore sur [ftp://ftp.crans.org/pub/logiciels/clients_windows notre ftp public]. | Pour information, voilà où trouver des clients ssh, on pourra aussi aller voir avec profit la page du projet [[http://www.openssh.com/|OpenSSH]]. Il faut consulter le site de votre distribution favorite ou aller voir [[ftp://ftp.cs.hut.fi/pub/ssh/|le serveur officiel]], sur [[ftp://sunsite.unc.edu/pub/packages/security/ssh/|Sunsite]] ou encore sur [[ftp://ftp.crans.org/pub/logiciels/clients_windows|notre ftp public]]. |
Ligne 33: | Ligne 32: |
Ligne 38: | Ligne 36: |
[http://www.lysator.liu.se/~jonasw/freeware/niftyssh/ Celui-là] ou [http://www.datafellows.com/index.htm celui-ci] mais ce sont des versions commerciales. | [[http://www.lysator.liu.se/~jonasw/freeware/niftyssh/|Celui-là]] ou [[http://www.datafellows.com/index.htm|celui-ci]] mais ce sont des versions commerciales. |
Ligne 41: | Ligne 39: |
Vous pouvez vous connecter directement depuis le site du Cr@ns, grâce à l'applet [http://www.mindbright.se/mindterm/ Java MindTerm]. Ça tourne donc sur toutes les machines virtuelles Java. Voir la page de [wiki:Self:VieCrans/OpenSsh connexion directe sur zamok]. | Vous pouvez vous connecter directement depuis le site du Cr@ns, grâce à l'applet [[http://www.mindbright.se/mindterm/|Java MindTerm]]. Ça tourne donc sur toutes les machines virtuelles Java. Voir la page de [[VieCrans/OpenSsh|connexion directe sur zamok]]. |
Ligne 43: | Ligne 41: |
= Comment créer une clef SSH = |
= Les clefs SSH = |
Ligne 47: | Ligne 44: |
On génère une clef : | == Générer la clef == Tout cela repose sur du chiffrement asymétrique. Vous avez chez vous la clé privée, que vous conserver jalousement secrète, et vous placez la clé publique sur chacune des machines auxquelles vous voulez pouvoir vous connecter. Pour générer la paire de clé, on utilise {{{ssh-keygen}}}. |
Ligne 49: | Ligne 49: |
ssh-keygen -t dsa }}} Cela donne un fichier {{{.pub}}} et un fichier sans {{{.pub}}}. On place le fichier sans {{{.pub}}} dans le répertoire {{{~/.ssh}}} de son pc. Quant au {{{fichier.pub}}}, on ajoute son contenu au fichier {{{authorized_keys}}} (à créer si nécessaire) {{{ cat fichier.pub >> authorized_keys }}} Puis on le copie sur la machine distante (zamok) et on fait la même chose, à nouveau dans le répertoire {{{/home/login/.ssh}}} {{{ scp fichier.pub login@zamok.crans.org:.ssh }}} (''connexion à zamok'') {{{ cd .ssh cat fichier.pub >> authorized_keys |
ssh-keygen -t rsa |
Ligne 68: | Ligne 52: |
L'option {{{-t}}} permet de créer une clé de type RSA. Il existe également DSA et ECDSA. RSA est le type par défaut, ECDSA n'est pas supporté par toutes les versions de SSH. On vous demande ensuite où vous voulez stocker la clé privé, l'emplacement par défaut {{{/home/user/.ssh/id_rsa}}} est parfait, sauf si vous avec déjà une clé là et que vous en voulez une autre. On vous demande également une passphrase. Il est vivement conseillé d'en mettre une<<FootNote(Un cas typique où on ne met pas de passphrase est quand la clé est destinée à être utilisée par un script, qui ne sait pas taper un mot de passe.)>>, sinon toute personne mettant la main sur votre ordinateur aura accès à cette clé privé non protégée, et donc aux machines sur lesquelles vous aurez mis la clé publique (on peut modifier la passphrase avec {{{ssh-keygen -p}}}, habituellement une passphrase est sensiblement plus longue qu'un mot de passe). Cela crée un fichier {{{.pub}}} et un fichier sans {{{.pub}}}. == Publier la clé == On copie ensuite la clef publique à la fin du fichier {{{authorized_keys}}} de l'utilisateur distant sur le serveur distant. Donc le fichier {{{/home/userdistant/.ssh/authorized_keys}}} ressemble à ça : {{{ ssh-rsa AAAB3NzaC1yc2E[…]/5POqR5 vincent@cabal ssh-rsa AAAAB3NzaC1yc2EA[…]dww== /home/badguy/.ssh/id_rsa }}} Le premier champ indique le type de clé, le deuxième est un beau blob en base64 de la clé publique, et le troisième champ est un commentaire. Vous pouvez mettre ce que vous voulez dedans, mais en général on met {{{user@host_de_provenance}}}, histoire de savoir pourquoi cette clé est là. Malheureusement, bien souvent on voit {{{/home/username/.ssh/id_rsa}}}, ce qui n'est pas très informatif parce que les clés SSH sont pratiquement toujours rangées là. Il existe une commande dédiée pour exporter votre clé SSH : {{{ ssh-copy-id -i ~/.ssh/id_rsa.pub login@machine.domain.tld }}} {{{-i}}} permet de spécifier quelle clé on veut exporter (utile si on en a plusieurs), mais si on l'omet, il ira chercher au path par défaut. (Et bien entendu, on vous demande votre mot de passe puisque la clé n'est pas encore exportée.) == Utiliser la clé == En admettant que vous n'ayez rien fait d'autre, si maintenant vous faites {{{ user@chezmoi$ ssh login@machine.domain.tld Enter passphrase for key '/home/user/.ssh/id_rsa': }}} Et vous de me dire "C'est nul ton truc, à la place de taper à chaque fois mon mot de passe, je tape à chaque fois ma passphrase, et en plus tu m'as dis qu'elle devait être plus longue !". Si vous vous arrêtez là, effectivement, c'est nul. L'intérêt est que la passphrase vous pouvez ne la taper qu'une fois, et la clé privée est déverrouillée pour un temps donné, voire jusqu'à ce que vous éteignez votre machine/fermiez votre session. Celui qui va mémoriser votre clé déverrouillée, on l'appelle l'agent SSH. Petit problème : gnome (l'environnement graphique par défaut, donc probablement celui que vous avez) a très envie de jouer à l'agent SSH à la place de l'agent SSH, et il fait ça mal. Donc, si c'est votre cas, tapez : {{{ gnome-session-properties }}} une jolie fenêtre poppe, décochez dedans la case "Agent de clés SSH" (oh et puis tant que vous y êtes, décochez aussi "Agent de mot de passe GPG", ça vous rendra service quand vous voudrez utiliser un agent GPG). Maintenant, pour déverrouiller votre clé, tapez : {{{ ssh-add }}} puis votre passphrase. Et voilà, votre clé est déverouillée, et vous pouvez aller vous balader en ssh sans taper de mot de passe. L'option {{{-t}}} de cette commande vous permet de spécifier la durée (en secondes) au bout de laquelle la clé se reverrouillera. Si vous ne mettez rien, elle restera déverrouillée jusqu'à la mort de votre agent (normalement, la fermeture de la session/extinction de la machine). |
|
Ligne 69: | Ligne 103: |
On peut en trouver sur la page ../AstucesSsh | On peut en trouver sur la page ../AstucesSsh (allez au moins voir comment on se fait un {{{.ssh/config}}}). |
Sommaire
Qu'est ce que le SSH ?
SSH signifie Secure SHell. C'est un protocole qui permet d'établir une communication entre un serveur et un client SSH de manière sécurisée.
Par déformation, on parlera souvent de SSH comme un outil permettant de se connecter à un ordinateur distant possédant un serveur SSH et par la suite de travailler sur cette machine distante.
Les communications SSH se font sur le port 22.
Pourquoi utiliser cet outil
Vous pourrez ainsi accéder à votre compte CRANS1
Certains départements de l'ENS proposent un compte à leurs élèves, vous pourrez y accéder en ssh2.
Vous pouvez aussi mettre un serveur SSH sur votre ordinateur afin de pouvoir y avoir un accès intégral depuis n'importe quel point de connexion à Internet. Pour le faire sur un ordinateur sous Mandrake, vous pouvez vous référer au tutoriel SystèmeLinux/MandrakeServeurs
Il est inhabituel de voir un serveur SSH installé sur une machine équipée d'un système Windows. Toutefois, vous trouverez ci-après une liste de programmes gratuits ou en évaluation gratuite, permettant d'utiliser SSH sous Windows.
Comment utiliser cet outil
Sous Windows
Les terminaux
PuTTY est aussi un excellent client libre sous windows et facile d'utilisation. Il consiste en un unique éxécutable qu'il n'y a donc pas besoin d'installer. Il est disponible sur en local sur notre ftp ou sur la page de putty.
Le client fourni par le projet OpenBSD et installable à travers cygwin, s'intègre très bien à windows, pour ceux qui n'ont pas peur de lancer un cmd.exe pour lancer ssh. Celui-ci possède toutes les fonctionnalités disponibles d'un client ssh (couleur, terminal correct, pages de code correctes, etc). http://sources.redhat.com/cygwin/setup.exe
Les clients pour accéder aux fichiers
Il existe un très bon client libre : WinSCP. Ce programme est disponible sur le site officiel.
Les serveurs
Il est possible d'installer un serveur SSH sous Windows sans nécessairement installer Cygwin : SSHWindows.
Sous UNIX
Pour information, voilà où trouver des clients ssh, on pourra aussi aller voir avec profit la page du projet OpenSSH. Il faut consulter le site de votre distribution favorite ou aller voir le serveur officiel, sur Sunsite ou encore sur notre ftp public.
Pour le client SSH sous Linux, si vous avez du mal avec la console, vous pouvez écrire dans la barre d'adresses de Konqueror fish:// suivi de l'adresse du serveur SSH, comme par exemple : fish://zamok.crans.org
Sous MacOS 8.x et 9.x (pour MacOS X voir Unix)
Celui-là ou celui-ci mais ce sont des versions commerciales.
Depuis le web
Vous pouvez vous connecter directement depuis le site du Cr@ns, grâce à l'applet Java MindTerm. Ça tourne donc sur toutes les machines virtuelles Java. Voir la page de connexion directe sur zamok.
Les clefs SSH
Une clef SSH permet de se connecter en SSH, à partir d'une machine donnée (ordinateur personnel), sur une machine sur laquelle on a un compte (par exemple, zamok) sans devoir pour cela taper systématiquement son mot de passe.
Générer la clef
Tout cela repose sur du chiffrement asymétrique. Vous avez chez vous la clé privée, que vous conserver jalousement secrète, et vous placez la clé publique sur chacune des machines auxquelles vous voulez pouvoir vous connecter.
Pour générer la paire de clé, on utilise ssh-keygen.
ssh-keygen -t rsa
L'option -t permet de créer une clé de type RSA. Il existe également DSA et ECDSA. RSA est le type par défaut, ECDSA n'est pas supporté par toutes les versions de SSH.
On vous demande ensuite où vous voulez stocker la clé privé, l'emplacement par défaut /home/user/.ssh/id_rsa est parfait, sauf si vous avec déjà une clé là et que vous en voulez une autre. On vous demande également une passphrase. Il est vivement conseillé d'en mettre une3, sinon toute personne mettant la main sur votre ordinateur aura accès à cette clé privé non protégée, et donc aux machines sur lesquelles vous aurez mis la clé publique (on peut modifier la passphrase avec ssh-keygen -p, habituellement une passphrase est sensiblement plus longue qu'un mot de passe).
Cela crée un fichier .pub et un fichier sans .pub.
Publier la clé
On copie ensuite la clef publique à la fin du fichier authorized_keys de l'utilisateur distant sur le serveur distant.
Donc le fichier /home/userdistant/.ssh/authorized_keys ressemble à ça :
ssh-rsa AAAB3NzaC1yc2E[…]/5POqR5 vincent@cabal ssh-rsa AAAAB3NzaC1yc2EA[…]dww== /home/badguy/.ssh/id_rsa
Le premier champ indique le type de clé, le deuxième est un beau blob en base64 de la clé publique, et le troisième champ est un commentaire. Vous pouvez mettre ce que vous voulez dedans, mais en général on met user@host_de_provenance, histoire de savoir pourquoi cette clé est là. Malheureusement, bien souvent on voit /home/username/.ssh/id_rsa, ce qui n'est pas très informatif parce que les clés SSH sont pratiquement toujours rangées là.
Il existe une commande dédiée pour exporter votre clé SSH :
ssh-copy-id -i ~/.ssh/id_rsa.pub login@machine.domain.tld
-i permet de spécifier quelle clé on veut exporter (utile si on en a plusieurs), mais si on l'omet, il ira chercher au path par défaut. (Et bien entendu, on vous demande votre mot de passe puisque la clé n'est pas encore exportée.)
Utiliser la clé
En admettant que vous n'ayez rien fait d'autre, si maintenant vous faites
user@chezmoi$ ssh login@machine.domain.tld Enter passphrase for key '/home/user/.ssh/id_rsa':
Et vous de me dire "C'est nul ton truc, à la place de taper à chaque fois mon mot de passe, je tape à chaque fois ma passphrase, et en plus tu m'as dis qu'elle devait être plus longue !". Si vous vous arrêtez là, effectivement, c'est nul.
L'intérêt est que la passphrase vous pouvez ne la taper qu'une fois, et la clé privée est déverrouillée pour un temps donné, voire jusqu'à ce que vous éteignez votre machine/fermiez votre session. Celui qui va mémoriser votre clé déverrouillée, on l'appelle l'agent SSH.
Petit problème : gnome (l'environnement graphique par défaut, donc probablement celui que vous avez) a très envie de jouer à l'agent SSH à la place de l'agent SSH, et il fait ça mal. Donc, si c'est votre cas, tapez :
gnome-session-properties
une jolie fenêtre poppe, décochez dedans la case "Agent de clés SSH" (oh et puis tant que vous y êtes, décochez aussi "Agent de mot de passe GPG", ça vous rendra service quand vous voudrez utiliser un agent GPG).
Maintenant, pour déverrouiller votre clé, tapez :
ssh-add
puis votre passphrase. Et voilà, votre clé est déverouillée, et vous pouvez aller vous balader en ssh sans taper de mot de passe. L'option -t de cette commande vous permet de spécifier la durée (en secondes) au bout de laquelle la clé se reverrouillera. Si vous ne mettez rien, elle restera déverrouillée jusqu'à la mort de votre agent (normalement, la fermeture de la session/extinction de la machine).
Astuces
On peut en trouver sur la page ../AstucesSsh (allez au moins voir comment on se fait un .ssh/config).
le serveur est alors ssh.crans.org. (1)
par exemple, pour le département maths, le serveur est ssh.dptmaths.ens-cachan.fr, et pour le département GC, le serveur est ssh.dgc.ens-cachan.fr. (2)
Un cas typique où on ne met pas de passphrase est quand la clé est destinée à être utilisée par un script, qui ne sait pas taper un mot de passe. (3)