Accès SSH et shells
Accès aux machines
Jean Zay (frontales)
La connexion à la frontale de Jean Zay se fait par ssh depuis une
machine enregistrée à
l'IDRIS :
ssh mon_login_idris@jean-zay.idris.fr
puis saisissez votre mot de passe, si vous n'avez pas configuré de clef
ssh.
La frontale jean-zay offre les fonctionnalités suivantes :
- connexion interactive,
- compilation pour les autres nœuds du cluster,
- préparation, soumission et suivi des jobs.
Les jobs nécessitant des ressources de calcul doivent être exécutés sur les autres nœuds via le gestionnaire de batch Slurm (soumission batch à partir de la frontale).
Empreintes des clés publiques frontale jean-zay.idris.fr
Lorsque vous vous connectez sur un serveur de l'IDRIS, si l'empreinte (fingerprint) de la clé publique affichée par votre client SSH n'est pas référencée dans cette liste, nous vous remercions de ne pas confirmer la connexion et de prévenir le support de l'IDRIS à l'adresse gestutil@idris.fr.
| Clé | Empreinte MD5 | Empreinte SHA256 |
|---|---|---|
| ECDSA | f8:27:e1:eb:94:ef:bc:ec:5d:aa:93:a8:fe:83:38:31 | vJ+SJBxXvPqnPd3/clChlrHI59a06vZxsxUHrA2jZ+k |
| RSA | 93:9a:ca:9b:bc:fe:45:4d:43:b7:43:7d:82:17:0e:2a | 6O6XttLDI8IUJvQpKHnnqHah8K+KX37RZfblwnixD90 |
| ed25519 | 15:f6:d5:68:9d:de:76:de:65:5a:4f:17:a6:2a:ee:25 | wzxZCto8/HTeYXVmBEQech4gbLcQLNMflJ/BR6+rNuU |
Jean Zay (pré et post-traitement)
La connexion interactive à la frontale de pré et post-traitement se fait
par ssh depuis une machine enregistrée à
l'IDRIS :
ssh mon_login_idris@jean-zay-pp.idris.fr
puis saisissez votre mot de passe, si vous n'avez pas configuré de clef
ssh.
L'offre de pré/post-traitement installée à l'IDRIS se compose de quatre machines HPE équipées chacune de 3 Tio de mémoire, de bi-processeurs Intel Cascade Lake 6132 12-cœurs et d'un GPU Nvidia V100.
La frontale jean-zay-pp offre les fonctionnalités suivantes :
- connexion interactive,
- compilation,
- préparation, soumission et suivi des jobs avec le gestionnaire de batch Slurm.
Pour utiliser les nœuds de pré et post-traitement en batch, il suffit
de spécifier la partition
prepost dans votre fichier de soumission Slurm, que ce soit sur la frontale jean-zay ou jean-zay-pp.
Empreintes des clés publiques frontale jean-zay-pp.idris.fr
Lorsque vous vous connectez sur un serveur de l'IDRIS, si l'empreinte (fingerprint) de la clé publique affichée par votre client SSH n'est pas référencée dans cette liste, nous vous remercions de ne pas confirmer la connexion et de prévenir le support de l'IDRIS à l'adresse gestutil@idris.fr.
| Clé | Empreinte MD5 | Empreinte SHA256 |
|---|---|---|
| ECDSA | e7:db:94:b2:cd:6c:11:88:b4:b6:5f:11:e0:aa:8b:31 | QwXaS3z24cG2F1G0wxM62WrZgggBixyZGWmEu6mU/us |
| RSA | ae:4b:1b:fc:ca:1c:92:e3:44:cc:3e:25:09:78:6b:6f | ELupfP1g7EyAUEGr4shULwu2VxZrzdgcmEZbyWu/P5k |
| ed25519 | dc:d8:01:1c:cd:4b:0c:1a:9d:80:23:51:02:a0:c1:c7 | SyFLswODdPz7w2AOaIiYZwdmlUePEFA9Sx73K/fls5c |
Jean Zay (nœud de calcul)
Uniquement depuis jean-zay et jean-zay-pp, vous pouvez vous connecter en SSH aux seuls nœuds de calcul attribués
à l'un de vos travaux afin de surveiller l'exécution de vos
calculs avec des outils comme top, htop ou nvidia-smi par exemple.
Lorsque l'un de vos travaux est en cours d'exécution, les nœuds de
calcul qui lui ont été attribués sont visibles avec la commande
squeue -j <numero_du_travail> ou squeue -u $USER :
squeue -u $USERJOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)2042259 cpu_p1 mon_travail mon_login R 01:42 10 nœud[1337-1346]
Dans cet exemple, le job n° 2042259 tourne sur 10 nœuds de calcul
nommés respectivement nœud1337, nœud1338, ..., nœud1345 et
nœud1346. Vous pouvez alors vous connecter via ssh à l'un des nœuds
de cette liste (par exemple nœud1337) avec la commande suivante :
ssh nœud1337
Vous serez automatiquement déconnecté du nœud lorsque votre travail se terminera.
Si vous essayez de vous connecter à un nœud sur lequel aucun de vos travaux n'est en cours d'exécution, vous obtiendrez l'erreur suivante :
ssh nœud1400Access denied by pam_slurm_adopt: you have no active jobs on this node
Connexion par clef ssh
Les connexions SSH utilisant une paire de clefs SSH (clé privée / clé publique) sont possibles sur Jean Zay.
Nous envisageons de renforcer notre politique de sécurité concernant les accès à la machine Jean Zay. Par conséquent, nous vous demandons de tester, dès maintenant, l'utilisation des certificats pour vos connexions SSH en lieu et place des paires de clés SSH habituelles (clé privée / clé publique) en respectant les procédures détaillées ci-dessous.
Connexion par clef ssh avec certificat
Dans le but de renforcer la sécurité lors des accès à Jean Zay, nous vous demandons de tester l'utilisation des certificats pour vos connexions SSH en lieu et place des paires de clés SSH habituelles (clé privée / clé publique).
Ce changement n'aura pas d'impact sur les connexions par mot de passe qui resteront toujours possible. Pendant la phase de test, les connexions via les clés SSH classiques restent possibles. La date d'arrêt du support des clés SSH classiques sera annoncée ultérieurement une fois tous les problèmes bloquants résolus.
Merci de nous signaler tous les problèmes que vous pourriez rencontrer avec l'utilisation des certificats qui ne sont pas mentionnés dans la liste des problèmes connus disponible plus bas.
Les nœuds de pré/post-traitement de Jean Zay ne permettent pour l'instant pas l'authentification via les certificats SSH.
Nous détaillons ici les procédures à suivre pour définir vos certificats
via l'outil IDRIS idr_keygen ainsi que leurs mises en œuvre pour les
utiliser.
Notez que vous pouvez définir deux types de certificats :
- l'un (valide 1 an) permettant tous types de connexions
(interactives ou non, en particulier via la commande
ssh) qui doit être protégé par une passphrase, - l'autre (valide 7 jours) permettant uniquement les transferts de
fichiers (commandes
scp,sftp,bbcp,bbftpetrsync) mais ne nécessitant pas de passphrase.
Il existe des problèmes connus que nous sommes en train d'essayer de résoudre :
- Les versions d'OpenSSH antérieures à la version 7.8 (publiée en
août 2018) ne supportent pas les certificats SSH produits par
idr_keygen. - Nos certificats ne semblent pas fonctionner sous macOS.
- Sous Windows, les certificats SSH ne sont supportés qu'à partir de la version 0.78 de Putty (publiée en octobre 2022) et ne seront supportés qu'à partir de la version 6 de WinSCP (pas encore publiée).
- Certains caractères diacritiques (tels que é, è, à, ç, ...) posent
problème :
- si votre passphrase contient un caractère de ce type, votre certificat ne fonctionnera pas
- si votre mot de passe Jean Zay contient un caractère de ce type,
idr_keygenpourrait le refuser même s'il est correct.
L'outil idr_keygen
La commande IDRIS idr_keygen disponible sur Jean Zay, vous permet de générer les deux types de certificats en utilisant les options -t interactive-t transfert-only--type ...-o OUTPUT--output OUTPUT-h--help
idr_keygen --helpusage: idr_keygen [-h] [-t {interactive,transfert-only}] [-o OUTPUT] [-v]
Generates authentication keys for SSH that are signed by a CertificationAuthority. The type of key to be generated is specified with the -t option. Ifinvoked without any arguments, idr_keygen will generate an RSA key for use inSSH protocol 2 interactive connections.
optional arguments: -h, --help show this help message and exit -t {interactive,transfert-only}, --type {interactive,transfert-only} selects SSH certificate type: interactive : for login sessions (ssh) transfert-only : for data transferts (scp, sftp, bbcp, bbftp and rsync) (default: interactive) -o OUTPUT, --output OUTPUT ZIP Downloaded filename and location (default: /path/to/your/home/sshkey.zip) -v, --verbose Increase verbosity output (default: False)
Certificat de type "interactive"
Pour vos connexions via la commande ssh, vous devez générer sur Jean
Zay, un certificat de type interactive que vous devez protéger avec
une passphrase. Ce certificat a une durée de validité de 365 jours
et devra donc être renouvelé une fois par an. Il autorise également les
connexions non-interactives.
Par exemple, pour générer un certificat de type interactive et
l'enregistrer dans le fichier interactive_certif.zip (ici dans le
$HOME de Jean Zay), la commande à utiliser est :
idr_keygen -t interactive -o ~/interactive_certif.zipGenerating SSH signed key (type interactive will be used ; use help option -h to know more)
Please enter the certificate s passphrase: Confirm the certificate s passphrase:
Request server to get your SSH certificate Please enter login_idris s password: Success. /path/to/your/home/interactive_certif.zip was successfully downloaded.
Cette commande vous demande d'entrer :
- une passphrase pour protéger le certificat
- et votre mot de passe sur Jean Zay pour s'assurer que c'est bien vous qui faites cette opération.
La passphrase doit être fournie une seconde fois pour confirmer la première entrée et doit respecter les règles de constitution suivantes :
- Elle doit comporter un minimum de 20 caractères (pas de restriction sur le type de caractères à utiliser).
- Et elle ne doit pas être composée de mots issus de dictionnaires, ni de combinaisons triviales (1234, azerty, ...).
Pour tester une connexion SSH depuis votre machine locale sur Jean Zay via ce certificat, vous devez :
- le copier sur votre machine locale (celle depuis laquelle vous voulez atteindre Jean Zay) le certificat au format zip précédemment généré sur Jean Zay :
scp login_idris@jean-zay.idris.fr:~/interactive_certif.zip ./. login_idris@jean-zay.idris.fr s password:interactive_certif.zip 100% ...
- Puis le décompresser pour obtenir les composantes privée et
publique du certificat qui doivent alors être enregistrées dans votre
répertoire
~/.sshde votre machine locale :
unzip ~/interactive_certif.zip -d ~/.sshArchive: /path/to/your/home/interactive_certif.zipinflating: /path/to/your/home/.ssh/id_ecc_ptyinflating: /path/to/your/home/.ssh/id_ecc_pty.pub
Notez que, contrairement aux clés SSH classiques, il n'est pas
nécessaire d'ajouter la partie publique du certificat (fichier .pub)
dans le fichier ~/.ssh/authorized_keys de Jean Zay.
Si vous utilisiez déjà des clés SSH, pour vous assurez
de réellement tester une connexion SSH sur Jean Zay via le certificat
généré, vous devez renommer sur Jean Zay, votre fichier
~/.ssh/authorized_keys en ~/.ssh/authorized_keys.bk (par exemple)
pour désactiver le support des clés SSH habituelles :
mv ~/.ssh/authorized_keys ~/.ssh/authorized_keys.bk- Vous pouvez alors établir depuis votre machine locale, une connexion
sshvers Jean Zay en utilisant l'identité correspondant à ce certificat (~/.ssh/id_ecc_ptypour cet exemple) via l'option-idessh:
ssh -i ~/.ssh/id_ecc_pty login_idris@jean-zay.idris.frEnter passphrase for key /path/to/your/home/.ssh/id_ecc_pty:...
- Avec ce certificat, vous pouvez activer le transfert de l'affichage
X11 (option
-Xde ssh):ssh -X -i ~/.ssh/id_ecc_pty login_idris@jean-zay.idris.frEnter passphrase for key /path/to/your/home/.ssh/id_ecc_pty:... - si vous n'utilisez pas le ssh-agent sur votre machine locale, la
passphrase protégeant le certificat vous est demandée. Mais vous
pouvez l'ajouter à votre ssh-agent sur votre machine locale pour
ne pas avoir besoin de fournir la passphrase à chaque fois que
vous utilisez ce certificat :
ssh-add ~/.ssh/id_ecc_ptyEnter passphrase for ~/.ssh/id_ecc_pty:Identity added: ~/.ssh/id_ecc_pty (~/.ssh/id_ecc_pty) - il est possible d'indiquer le certificat à utiliser dans votre
fichier de configuration SSH (fichier
~/.ssh/configsur la machine utilisée pour la connexion) :Host jean-zay HostName jean-zay.idris.fr User login_idris CertificateFile /path/to/private/part/id_ecc_pty
Certificat de type "transfert-only"
Pour vos transferts de données, vous pouvez générer sur Jean Zay, un certificat de type transfert-only. Ce certificat ne nécessite pas de passphrase afin de faciliter un usage non-interactif. En contrepartie, il a une durée de validité limitée à 7 jours.
Par exemple, pour générer un certificat de type transfert-only et
l'enregistrer dans le fichier transfert_certif.zip (ici dans le $HOME
de Jean Zay), la commande à utiliser est :
idr_keygen -t transfert-only -o ~/transfert_certif.zipGenerating SSH signed key (type transfert-only will be used ; use help option -h to know more)
Request server to get your SSH certificatePlease enter login_idris s password: Success! /path/to/your/home/transfert_certif.zip was successfully downloaded.Cette commande ne vous demande pas d'entrer une passphrase puisque le certificat de type transfert-only ne requiert pas d'être protégé. Mais votre mot de passe sur Jean Zay est demandé pour s'assurer que c'est bien vous qui faites cette opération.
Pour faire des transferts entre votre machine locale et Jean Zay via ce certificat, vous devez :
- le copier sur votre machine locale (celle depuis laquelle vous voulez atteindre Jean Zay) le certificat au format zip précédemment généré sur Jean Zay :
scp login_idris@jean-zay.idris.fr:~/transfert_certif.zip .login_idris@jean-zay.idris.fr s password:transfert_certif.zip 100% ...
- Puis le décompresser pour obtenir les composantes privée et
publique du certificat qui doivent alors être enregistrées dans votre
répertoire
~/.sshde votre machine locale :
unzip ~/transfert_certif.zip -d ~/.sshArchive: /path/to/your/home/transfert_certif.zipinflating: /path/to/your/home/.ssh/id_ecc_rsyncinflating: /path/to/your/home/.ssh/id_ecc_rsync.pub
Notez que, contrairement aux clés SSH classiques, il n'est pas
nécessaire d'ajouter la partie publique du certificat (fichier .pub)
dans le fichier ~/.ssh/authorized_keys de Jean Zay.
Si vous utilisiez déjà des clés SSH, pour vous assurez
de réellement tester une connexion SSH sur Jean Zay via le certificat
généré, vous devez renommer sur Jean Zay, votre fichier
~/.ssh/authorized_keys en ~/.ssh/authorized_keys.bk pour désactiver
le support des clés SSH habituelles :
mv ~/.ssh/authorized_keys ~/.ssh/authorized_keys.bk- Vous pouvez alors réaliser des échanges de données entre votre machine
locale et Jean Zay en utilisant l'identité correspondant à ce
certificat (
~/.ssh/id_ecc_rsyncpour cet exemple) via l'option-ide scp. Par exemple, la commande suivante, exécutée sur votre machine locale, transfère le fichierlocal_datade votre machine locale dans le répertoire/path/to/.sur Jean Zay :
scp -i ~/.ssh/id_ecc_rsync local_data login_idris@jean-zay.idris.fr:/path/to/.local_data 100% ...
Inversement, la commande suivante, exécutée sur votre machine locale,
transfère le fichier jean-zay_data du répertoire /path/to de Jean
Zay dans le répertoire courant de votre machine locale :
scp -i ~/.ssh/id_ecc_rsync login_idris@jean-zay.idris.fr:/path/to/idris_data ./.idris_data 100% ...
Ce type de certificat n'étant pas protégé par une passphrase, aucun mot de passe n'est demandé lors des transferts.
Expiration du certificat
Actuellement, aucune notification n'est envoyée pour signaler l'expiration des certificats SSH. Pour connaître la date de fin de validité de votre certificat, vous pouvez lancer la commande suivante :
# exemple pour le certificat de type "interactive" ~/.ssh/id_ecc_pty.pubssh-keygen -Lf ~/.ssh/id_ecc_pty.pub
Celle-ci retournera des informations au format suivant, où vous
trouverez la date de validité du certificat dans la ligne Valid:...:
id_ecc_pty.pub: Type: Public key: Signing CA: Key ID: Serial: Valid: from 2023-05-31T10:12:10 to 2024-05-30T10:12:40 Principals: Critical Options: (none) Extensions:
Gestion de son environnement
Votre espace $HOME est commun à toutes les frontales de Jean-Zay. Par
conséquent, chaque modification de vos fichiers d'environnement
personnels s'applique automatiquement sur toutes les machines.
Quels sont les shells disponibles sur les machines de l'IDRIS ?
Le Bourne Again shell (bash) est le seul interpréteur de commandes
supporté comme shell de login sur les machines de l'IDRIS :
l'IDRIS ne garantit pas que l'environnement utilisateur par défaut
soit correctement défini avec les autres shells. Le bash est une
évolution importante du Bourne shell (ancien sh) avec des
fonctionnalités avancées. Cependant, d'autres interpréteurs (ksh,
tcsh, csh) sont aussi installés sur les machines pour permettre
l'exécution de scripts utilisant ces shells.
Quels sont les fichiers d'environnement invoqués lors du lancement d'une session login en bash ?
Le fichier .bash_profile, s'il existe dans votre $HOME, est exécuté au
login une seule fois pendant une session. Sinon c'est le fichier
.profile qui est exécuté, s'il existe. C'est dans un de ces fichiers
que l'on place les variables d'environnement, les programmes à lancer
à la connexion.
La définition des alias, des fonctions personnelles et
le chargement de modules sont à mettre dans le fichier .bashrc qui,
lui, est exécuté au lancement de chaque sous-shell.
Il est préférable de n'utiliser qu'un seul fichier d'environnement :
le .bash_profile ou .profile.
L'écrasement de la variable PATH conduit toujours à
des catastrophes, c'est pourquoi il est toujours conseillé de conserver
le PATH fourni par la machine. Si vous souhaitez ajouter un répertoire
de recherche pour l'exécution de commandes locales lors de toutes vos
futures sessions, il faut ajouter la ligne suivante dans votre
.bash_profile ou .profile :
export PATH=$PATH:repertoire_a_ajouterComment faire pour avoir un environnement convivial en bash ?
Suivant le type d'éditeur que vous appréciez, le bash vous propose 2
modes d'édition à l'aide de la commande set :
set -o emacs # pour être en mode emacsset -o vi # pour être en mode vi