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.

Alternativement, vous pouvez établir une connexion sécurisée sans utilisation du mot de passe. Pour cela, vous devez :

  1. installer et configurer le protocole réseau Kerberos sur votre machine de travail ;

  2. configurer le client SSH de façon à utiliser le ticket Kerberos (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.

Veuillez trouver dans cette page les informations nécessaires pour installer Kerberos et configurer votre client SSH sur votre machine de travail.

Installer et configurer Kerberos

Kerberos est un protocole réseau d’authentification qui permet de prouver son identité lors de connexions sécurisées utilisant SSH (le cas des serveurs interactifs du CC-IN2P3).

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.

Obtenir un ticket Kerberos

Supposons que votre identifiant de compte calcul 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.

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 (si <username>@CC.IN2P3.FR est votre Kerberos Default principal) simplement

% kinit -R

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 (en général $HOME/.ssh/config. Selon votre système d’exploitation :

suivez l’exemple ci-dessous :

Host cc
   Hostname                   cca.in2p3.fr
   User                       <username>
   GSSAPIAuthentication       yes
   GSSAPIDelegateCredentials  yes

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.

Attention

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. Veuillez vous référer aux Chartes pour l’usage des ressources.

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 le support utilisateurs.