38,760
edits
(Updating to match new version of source page) |
(Updating to match new version of source page) |
||
Line 1: | Line 1: | ||
<languages /> | <languages /> | ||
<div class="mw-translate-fuzzy"> | |||
Les flux de travail qui établissent sans intervention humaine des connexions à nos grappes ne peuvent pas utiliser un deuxième facteur. Avec l'authentification multifacteur obligatoire, vous devez demander l'accès à un des nœuds spéciaux qui sont réservés pour les flux automatisés. Un deuxième facteur ne sera pas requis, mais sachez que les fonctionnalités de ces nœuds sont limitées par rapport à celles des nœuds de connexion réguliers en termes de type d'authentification requise et aussi des types d'actions à exécuter. | Les flux de travail qui établissent sans intervention humaine des connexions à nos grappes ne peuvent pas utiliser un deuxième facteur. Avec l'authentification multifacteur obligatoire, vous devez demander l'accès à un des nœuds spéciaux qui sont réservés pour les flux automatisés. Un deuxième facteur ne sera pas requis, mais sachez que les fonctionnalités de ces nœuds sont limitées par rapport à celles des nœuds de connexion réguliers en termes de type d'authentification requise et aussi des types d'actions à exécuter. | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
= Mesures de sécurité accrues = | = Mesures de sécurité accrues = | ||
== Accès sur demande seulement == | == Accès sur demande seulement == | ||
Pour avoir accès aux nœuds spéciaux d'automatisation, écrivez au [[Technical support/fr|soutien technique]]. Décrivez le type d'automatisation, listez les commandes qui seront exécutées ainsi que les outils ou les bibliothèques pour gérer l'automatisation. | Pour avoir accès aux nœuds spéciaux d'automatisation, écrivez au [[Technical support/fr|soutien technique]]. Décrivez le type d'automatisation, listez les commandes qui seront exécutées ainsi que les outils ou les bibliothèques pour gérer l'automatisation. | ||
</div> | |||
<div class="mw-translate-fuzzy"> | |||
== Accès via certaines clés SSH avec contraintes == | == Accès via certaines clés SSH avec contraintes == | ||
L'accès aux nœuds d'automatisation se fait uniquement via les [[SSH_Keys#Using_CCDB|clés SSH téléversées dans CCDB]]. Les clés inscrites dans un fichier <i>.ssh/authorized_keys</i> ne sont pas acceptées. De plus, les clés SSH <b>doivent respecter</b> les contraintes suivantes. | L'accès aux nœuds d'automatisation se fait uniquement via les [[SSH_Keys#Using_CCDB|clés SSH téléversées dans CCDB]]. Les clés inscrites dans un fichier <i>.ssh/authorized_keys</i> ne sont pas acceptées. De plus, les clés SSH <b>doivent respecter</b> les contraintes suivantes. | ||
</div> | |||
=== <code>restrict</code> === | === <code>restrict</code> === | ||
Cette contrainte désactive la redirection de port (<i>port forwarding</i>), la redirection d'agent (<i>agent forwarding</i>) et la redirection X11. Le pseudo télétype (PTY) est aussi désactivé, puisqu'il bloquerait la plupart des flux interactifs. Nous posons ces conditions parce que les nœuds spéciaux ne doivent pas être utilisés pour les processus interactifs ou de longue durée; dans ces cas, il faut utiliser les nœuds réguliers. | Cette contrainte désactive la redirection de port (<i>port forwarding</i>), la redirection d'agent (<i>agent forwarding</i>) et la redirection X11. Le pseudo télétype (PTY) est aussi désactivé, puisqu'il bloquerait la plupart des flux interactifs. Nous posons ces conditions parce que les nœuds spéciaux ne doivent pas être utilisés pour les processus interactifs ou de longue durée; dans ces cas, il faut utiliser les nœuds réguliers. | ||
<div class="mw-translate-fuzzy"> | |||
=== <code>from="pattern-list"</code> === | === <code>from="pattern-list"</code> === | ||
Cette contrainte fait en sorte que la clé ne peut être utilisée qu'à partir d'adresses IP qui respectent le <i>pattern</i> et non par d'autres ordinateurs. La liste des <i>patterns</i> doit être uniquement composée d'adresses IP qui spécifient la classe du réseau, le réseau et le sous-réseau, soit les trois premiers éléments de l'adresse. Par exemple, <code>x.y.*.*</code> ne serait pas acceptée, mais <code>x.y.z.*</code> le serait. Prenez note que l'adresse IP doit être une adresse <b>publique</b>; ainsi, <code>10.0.0.0 – 10.255.255.255</code>, <code>172.16.0.0 – 172.31.255.255</code> et <code>192.168.0.0 – 192.168.255.255</code> seraient incorrectes. Pour connaître votre adresse IP publique, allez sur le site [https://whatismyipaddress.com/ What Is My IP Address?] ou lancez la commande <code>curl ifconfig.me</code> de l'interpréteur (<i>shell</i>). | Cette contrainte fait en sorte que la clé ne peut être utilisée qu'à partir d'adresses IP qui respectent le <i>pattern</i> et non par d'autres ordinateurs. La liste des <i>patterns</i> doit être uniquement composée d'adresses IP qui spécifient la classe du réseau, le réseau et le sous-réseau, soit les trois premiers éléments de l'adresse. Par exemple, <code>x.y.*.*</code> ne serait pas acceptée, mais <code>x.y.z.*</code> le serait. Prenez note que l'adresse IP doit être une adresse <b>publique</b>; ainsi, <code>10.0.0.0 – 10.255.255.255</code>, <code>172.16.0.0 – 172.31.255.255</code> et <code>192.168.0.0 – 192.168.255.255</code> seraient incorrectes. Pour connaître votre adresse IP publique, allez sur le site [https://whatismyipaddress.com/ What Is My IP Address?] ou lancez la commande <code>curl ifconfig.me</code> de l'interpréteur (<i>shell</i>). | ||
</div> | |||
=== <code>command="COMMAND"</code> === | === <code>command="COMMAND"</code> === | ||
Line 78: | Line 86: | ||
<div lang="en" dir="ltr" class="mw-content-ltr"> | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
When connecting to a | When connecting to a automation node the SSH client on your computer may choose to use the '''IPv6 addressing''' over the older '''IPv4'''. | ||
This seems to be more probably in Windows environment. | This seems to be more probably in Windows environment. | ||
If this is the case you have to make sure that the IP address mask you put in the <code>restrict,from=</code> field of the key | If this is the case you have to make sure that the IP address mask you put in the <code>restrict,from=</code> field of the key | ||
Line 94: | Line 102: | ||
<div lang="en" dir="ltr" class="mw-content-ltr"> | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
The possible problem is that if you put the IPv4 address mask, '''199.241.166.*''' into the CCDB SSH key, and | The possible problem is that if you put the IPv4 address mask, '''199.241.166.*''' into the CCDB SSH key, and | ||
your SSH client will be connecting the the | your SSH client will be connecting the the automation node using IPv6 address, the source address will not match the mask in the key | ||
and the key will not be accepted by the | and the key will not be accepted by the automation node. | ||
</div> | </div> | ||
Line 101: | Line 109: | ||
<div lang="en" dir="ltr" class="mw-content-ltr"> | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
If you are having difficulties to make the SSH connection to | If you are having difficulties to make the SSH connection to an automation node work, | ||
try this test command: | |||
ssh -i ~/.ssh/automation_key -vvv username@robot.graham.alliancecan.ca "ls -l" | ssh -i ~/.ssh/automation_key -vvv username@robot.graham.alliancecan.ca "ls -l" | ||
</div> | </div> | ||
<div lang="en" dir="ltr" class="mw-content-ltr"> | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
This | This tries to connect to the automation node at Graham and execute the <code>ls -l</code> command | ||
using the <code>~/.ssh/automation_key</code> SSH key. | using the <code>~/.ssh/automation_key</code> SSH key. | ||
Then it prints the list of files in your home directory on Graham to screen. | Then it prints the list of files in your home directory on Graham to screen. | ||
Line 113: | Line 121: | ||
<div lang="en" dir="ltr" class="mw-content-ltr"> | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
This command will produce a lot of debug output due to the <code>-vvv</code> option ( | This command will produce a lot of debug output due to the <code>-vvv</code> option ("Very Very Verbose"). | ||
Look for the '''Connecting to...''' message there. | Look for the '''Connecting to...''' message there. | ||
If it says something like this: | If it says something like this: | ||
Line 120: | Line 128: | ||
<div lang="en" dir="ltr" class="mw-content-ltr"> | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
it means | it means that IPv4 is being used. | ||
If the message is similar to | If the message is similar to | ||
debug1: Connecting to robot.graham.alliancecan.ca [2620:123:7002:4::5] port 22. | debug1: Connecting to robot.graham.alliancecan.ca [2620:123:7002:4::5] port 22. | ||
Line 136: | Line 144: | ||
<div lang="en" dir="ltr" class="mw-content-ltr"> | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
* You can try using an '''IP address instead of the name''' to point to the | * You can try using an '''IP address instead of the name''' to point to the automation node. Using Graham example, try using the | ||
: <code>ssh -i ~/.ssh/automation_key -vvv username@199.241.166.5 "ls -l"</code> | : <code>ssh -i ~/.ssh/automation_key -vvv username@199.241.166.5 "ls -l"</code> | ||
: instead, to force SSH to use the IPv4 addresses. | : instead, to force SSH to use the IPv4 addresses. | ||
Line 152: | Line 160: | ||
<div lang="en" dir="ltr" class="mw-content-ltr"> | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
If you are using the [https://www.paramiko.org/index.html Paramiko Python module] to automate your workflow, this is how you can make it work with the | If you are using the [https://www.paramiko.org/index.html Paramiko Python module] to automate your workflow, this is how you can make it work with the automation nodes: | ||
<source lang=python> | <source lang=python> | ||
# ==================================================================================================== | # ==================================================================================================== | ||
Line 185: | Line 193: | ||
# ==================================================================================================== | # ==================================================================================================== | ||
</source> | </source> | ||
This code connects to the | This code connects to the automation node on '''Graham''' using an key specified in CCDB and | ||
executes the <code>ls -l</code> command to get the list of files. | executes the <code>ls -l</code> command to get the list of files. | ||
Then prints the list to the screen. | Then prints the list to the screen. |