Connexion sans mot de passe

On peut se connecter aux machines interactives du CC-IN2P3 en utilisant le mot de passe associé à son compte de calcul. Cette méthode implique la saisie de ce mot de passe à chaque connexion.

Une seconde méthode de connexion existe, permettant une connexion sécurisée sans utilisation du mot de passe. Pour cela, vous devez :

  1. installer et configurer Kerberos sur votre machine de travail ;
  2. configurer le client SSH de façon à utiliser le ticket Kerberos pour l’authentification (au lieu du mot de passe).

Une fois cette installation réalisée, vous n’aurez plus qu’à entrer votre mot de passe périodiquement (typiquement une fois par jour, ou moins) et vous pourrez établir autant de connexions sécurisées que nécessaire. Dans ce didacticiel, vous trouverez les informations nécessaires pour installer Kerberos et configurer votre client SSH pour réaliser cela.

Installer et configurer Kerberos

Kerberos est un protocole réseau d’authentification qui permet de prouver son identité lors de connexions sécurisées à des machines interactives du CC-IN2P3 en utilisant SSH. Si ce n’est déjà fait, vous aurez besoin d’installer le logiciel Kerberos sur votre machine de travail. Pour un système de type Unix, il devrait y avoir deux paquets logiciels à installer, généralement nommés krb5-user et krb5-config, le premier fournissant les programmes requis, et le second les fichiers de configuration.

Une fois Kerberos installé, de nouvelles commandes, telles que kinit, klist, krenew et kdestroy seront disponibles. Ces commandes nécessitent que le fichier de configuration /etc/krb5.conf existe et soit correctement rempli. La configuration par défaut ne permettra pas de se connecter, donc vous pouvez le renommer (ou le remplacer) et en créer un nouveau avec le contenu adéquat, donné ci-dessous (configuration valide pour Linux et macOS) :

[libdefaults]
    default_realm       = CC.IN2P3.FR
    dns_lookup_realm    = false
    dns_lookup_kdc      = true
    allow_weak_crypto   = false
    kdc_timeout         = 10
    max_retries         = 3
    ticket_lifetime     = 3d
    renew_lifetime      = 30d
    forwardable         = true
    proxiable           = false
    default_ccache_name = DIR:/tmp/kerberos

[realms]
    CC.IN2P3.FR = {
        default_domain  = idm.cc.in2p3.fr
        kpasswd_server  = ccidm01.in2p3.fr
        admin_server    = ccidm01.in2p3.fr
        kdc             = ccidm01.in2p3.fr:88
        kdc             = ccidm02.in2p3.fr:88
        kdc             = ccidm03.in2p3.fr:88
        kdc             = ccidm04.in2p3.fr:88
    }

[appdefaults]
    encrypt = true

Note

On peut spécifier l’emplacement du fichier de configuration (par exemple $HOME/krb5.conf) si nécessaire par l’utilisation de la variable d’environnement KRB5_CONFIG, initialisée avec le chemin complet vers le fichier, par exemple : % export KRB5_CONFIG=$HOME/krb5.conf. Cette méthode alternative peut être utile dans le cas où vous ne possédez pas de droits super-utilisateur sur votre machine de travail.

Vous devriez maintenant pouvoir obtenir un ticket Kerberos. Supposons que votre identifiant soit username :

% kinit username@CC.IN2P3.FR

et il suffit maintenant d’entrer votre mot de passe associé à votre compte.

Important

Kerberos est sensible à la casse, aussi il faut bien écrire le royaume CC.IN2P3.FR en majuscules.

Vous pouvez maintenant vérifier que vous avez bien obtenu un ticket en utilisant la commande klist :

% klist
Ticket cache: DIR::/tmp/kerberos/tkt
Default principal: username@CC.IN2P3.FR

Valid starting       Expires              Service principal
07/24/2019 14:47:02  07/25/2019 14:47:02  krbtgt/CC.IN2P3.FR@CC.IN2P3.FR
        renew until 07/31/2019 14:47:02

La sortie de la commande klist montre que vous avez obtenu un ticket, qui est en cache sur votre machine de travail, ainsi que sa période de validité. Le CC-IN2P3 fournit des tickets valable 3 jours (au maximum). Mais vous pouvez préciser la durée de validité désirée, grâce à l’option -l.

Note

Si votre identifiant sur votre machine de travail est le même que celui de votre compte, à savoir username, et que vous n’avez à configurer Kerberos que pour le royaume CC.IN2P3.FR, vous pouvez alors simplement utiliser la commande kinit, sans argument. Le Kerberos Default principal, c’est-à-dire username@CC.IN2P3.FR sera alors déduit de votre nom d’utilisateur de la session en cours et le royaume par défaut du fichier /etc/krb5.conf.

Note

Le ticket Kerberos est valide pendant 3 jours, mais peut être renouvelé, ce qui étend sa validité. Pour faire cela, il suffit de faire % kinit -R username@CC.IN2P3.FR ou, simplement, % kinit -R si username@CC.IN2P3.FR est votre principal Kerberos par défaut.

Configurer son client SSH

Une fois que vous avez obtenu un ticket Kerberos grâce à la commande kinit, vous pouvez vous connecter par SSH aux machines du CC-IN2P3 sans devoir entrer votre mot de passe, tant que votre ticket Kerberos reste valide.

Une façon pratique de spécifier au client SSH d’utiliser ce ticket Kerberos plutôt que votre mot de passe est de créer une entrée spécifique pour la connexion aux machines du CC-IN2P3 dans le fichier de configuration de SSH, qui se trouve normalement dans votre répertoire utilisateur, à savoir le fichier $HOME/.ssh/config :

Pour Ubuntu, CentOS, Fedora
Host cc
   Hostname                   cca.in2p3.fr
   User                       username
   GSSAPIClientIdentity       username@CC.IN2P3.FR
   GSSAPIAuthentication       yes
   GSSAPIDelegateCredentials  yes
   GSSAPITrustDns             yes
Pour macOS
Le client SSH fournit avec macOS version 10.2 et ultérieure n’inclut pas le support pour connexion à des machines derrière un alias DNS, tel que cca.in2p3.fr. Vous avez donc à désigner une machine spécifique, telle que cca001.in2p3.fr, ce qui impliquera que vous allez systématiquement vous connecter à cette machine. Il est néanmoins possible d’indiquer plusieurs hôtes dans le fichier de configuration $HOME/.ssh/config :
Host cc
   Hostname                  cca001.in2p3.fr
   User                      username
   GSSAPIAuthentication      yes
   GSSAPIDelegateCredentials yes

De plus, si vous possédez des tickets valides pour plusieurs royaumes, le client SSH de macOS utilisera le ticket associé à l’identifiant par défaut, qui peut ne pas être celui du royaume CC.IN2P3.FR. Afin de vérifier que le royaume CC.IN2P3.FR est bien celui par défaut, vous devez utiliser cette commande, avant d’établir la connexion SSH :

% kswitch -p username@CC.IN2P3.FR

Une fois le client SSH configuré, vous pourrez alors vous connecter de manière sécurisée en utilisant votre ticket Kerberos, grâce à la commande :

% ssh cc

Note

Dans cet exemple, on utilise l’hôte cc de la ligne Host cc comme alias pour désigner la plateforme de machines interactives.

Warning

Veuillez noter que le CC-IN2P3 fournit cette fonctionnalité de connexion sans mot de passe à des fins pratiques. Quiconque ayant un accès physique à votre machine de travail pourrait exploiter ce mécanisme pour se connecter, en votre nom, sur les machines du CC-IN2P3.

C’est pourquoi on vous demande de prendre toutes les précautions nécessaires pour protéger vos identifiant et mot de passe et ainsi éviter toute utilisation frauduleuse de ceux-ci. La Charte de sécurité des systèmes informatique du CNRS s’applique.

Configuration avancée

Si vous vous connectez habituellement à plusieurs machines du CC-IN2P3, vous pouvez toutes les spécifier dans le fichier de configuration $HOME/.ssh/config. Pour une machine Linux, on pourra, par exemple, définir cette configuration :

Host cca
   Hostname cca.in2p3.fr

Host cca1
   Hostname cca001.in2p3.fr

Host cca8
   Hostname cca008.in2p3.fr

#
# The SSH options below apply to all 'Host' entries that match the pattern cc*
#

Host cc*
   User                      username
   GSSAPIClientIdentity      username@CC.IN2P3.FR
   GSSAPIAuthentication      yes
   GSSAPIDelegateCredentials yes
   GSSAPITrustDns            yes

Pour une personnalisation plus avancée de votre client SSH, vous pouvez vous référer à la page de manuel ssh_config(5) ou à ce didacticiel.

Si des questions subsistent, ou si vous avez besoin d’aide, veuillez contacter notre support utilisateur du CC-IN2P3.