{"id":8535,"date":"2024-11-12T14:26:08","date_gmt":"2024-11-12T19:26:08","guid":{"rendered":"https:\/\/carleton.ca\/scs\/?p=8535"},"modified":"2024-11-12T14:26:08","modified_gmt":"2024-11-12T19:26:08","slug":"using-ssh-keys-to-support-multi-node-compute-tools","status":"publish","type":"post","link":"https:\/\/carleton.ca\/scs\/2024\/using-ssh-keys-to-support-multi-node-compute-tools\/","title":{"rendered":"Using SSH Keys to Support Multi-node Compute Tools &#038; Scripts"},"content":{"rendered":"<p><a href=\"#setup-compute-nodes\">Step 1: Set up Multiple Compute Nodes<\/a><br \/>\n<a href=\"#hostname-compute-nodes\">Step 2: Update hostname of the compute nodes<\/a><br \/>\n<a href=\"#setup-ssh-environment\">Step 3: Set up the SSH Keys and Environment<\/a><br \/>\n<a href=\"#replicate-ssh-environment\">Step 4: Replicate the SSH Environment<\/a><br \/>\n<a href=\"#replicate-hosts-file\">Step 5: Replicate \/etc\/hosts file<\/a><br \/>\n<a href=\"#test-passwordless-ssh-connections\">Step 6: Test Your Passwordless SSH Connections!<\/a><br \/>\n<a href=\"#multi-node-graphical-overview\">Graphic: Set up of SSH Enabled Multi-node Compute Environment<\/a><br \/>\n<a href=\"#copy-files-between-nodes\">Copy Files Between Remote Nodes<\/a><\/p>\n<p>This guide will take you through the steps of setting up a multi-node compute environment that uses ssh keys to support scripts and computing tools that communicate and move data between the compute nodes.<\/p>\n<p>You can learn more general information about passwordless ssh login here:<br \/>\n<a href=\"https:\/\/carleton.ca\/scs\/2019\/passwordless-ssh-with-key-pairs\/\">Passwordless SSH With Key Pairs<\/a><\/p>\n<h2 id=\"setup-compute-nodes\">Step 1: Set up Multiple Compute Nodes<\/h2>\n<p>For this example, we will set up the following nodes (instances) on:<\/p>\n<ul>\n<li><strong><span style=\"color: #ff0000;\">primary-node<\/span><\/strong> &#8211; main control node for your multi-node environment; this node will typically have an OpenStack <strong>floating IP address<\/strong> assigned so that you can access the environment from the Carleton network (either an on-campus computer or your home device using VPN).<\/li>\n<li><strong><span style=\"color: #0077cc;\">node-1<\/span>, <span style=\"color: #0077cc;\">node-2<\/span>, <span style=\"color: #0077cc;\">node-3<\/span>, <span style=\"color: #0077cc;\">&#8230;<\/span>, <span style=\"color: #0077cc;\">node-n<\/span><\/strong> &#8211; compute nodes (as many as required)<\/li>\n<\/ul>\n<p>Instructions for setting up nodes (instances), assigning floating IPs, and connecting to instances can be found here: <a href=\"https:\/\/carleton.ca\/scs\/tech-support\/scs-open-stack\/openstack-technical-support\/openstack-step-by-step-guide\/\">OpenStack Step-by-Step Guide<\/a><\/p>\n<h2 id=\"hostname-compute-nodes\">Step 2: Update hostnames of the compute nodes<\/h2>\n<p>In this step, you will need to edit two system files: <code>\/etc\/hostname<\/code> and <code>\/etc\/hosts<\/code>. To do so, you will need to open them with <strong>root<\/strong> privileges by prefixing your command with the <strong>sudo<\/strong> command. For example, you can use the simple <em>nano<\/em> editor to edit one of the files like so:<br \/>\n<code>sudo nano \/etc\/hostname<\/code> <em>&#8211; sudo checks that your user is authorized to run commands as root and will prompt for your password<\/em><\/p>\n<ul>\n<li>On the <strong><span style=\"color: #ff0000;\">primary-node<\/span><\/strong> and <strong><span style=\"color: #0077cc;\">node-1<\/span> -&gt; <span style=\"color: #0077cc;\">node-n<\/span><\/strong>, edit the <code>\/etc\/hostname<\/code> files to have a suitable name for each host. After a reboot, this will be reflected in the system name that appears on the console, the shell and the desktop. <em>This is helpful for making sure you do not make changes to the wrong system!<\/em><\/li>\n<li>On the <strong><span style=\"color: #ff0000;\">primary-node<\/span><\/strong>, edit the <code>\/etc\/hosts<\/code> file to include <strong><code> IP  HOSTNAME <\/code><\/strong> records.<br \/>\nFor example:<br \/>\n<code>192.168.5.123 primary-node<\/code><br \/>\n<code>192.168.5.179 node-1<\/code><br \/>\n<code>192.168.5.65  node-2<\/code><br \/>\n<code>192.168.5.221 node-3<\/code><br \/>\n<em>NOTE 1: You will need to find the IP address of your nodes from either the OpenStack interface or running the commands <code>ipconfig<\/code> or <code>ip addr<\/code> on the node itself<\/em><br \/>\n<em>NOTE 2: On the SCS OpenStack, the IP address will ALWAYS start with <strong>192.168.x.x<\/strong><\/em><\/li>\n<\/ul>\n<h2 id=\"setup-ssh-environment\">Step 3: Set up the SSH Keys and Environment<\/h2>\n<p>Setting up a passwordless ssh key environment will allow your scripts or compute tools to communicate and move data between all of your compute nodes. This tutorial will not go into all the background about ssh key pairs, but you can learn more about that in this guide: <a href=\"https:\/\/carleton.ca\/scs\/2019\/passwordless-ssh-with-key-pairs\/\">Passwordless SSH With Key Pairs<\/a>.<\/p>\n<p><strong>Steps for setting up the ssh key pair environment:<\/strong><\/p>\n<ol>\n<li><strong>Login to the <span style=\"color: #ff0000;\">primary-node<\/span><\/strong> as the user that will be running the scripts or compute tools and run a terminal or shell (<em>student<\/em> user works fine on most of our images)<\/li>\n<li><strong>Create an SSH public\/private key pair:<\/strong><br \/>\n<code>ssh-keygen<\/code><br \/>\nDo NOT enter the a filename (leave the default <code>\/home\/student\/.ssh\/id_rsa<\/code>)<br \/>\nDo NOT enter a passphrase (leave it blank)<br \/>\nThis will create the public and private keys:<br \/>\n<code>~\/.ssh\/id_rsa<\/code> <em>&#8211; private key<\/em><br \/>\n<code>~\/.ssh\/id_rsa.pub<\/code> <em>&#8211; public key<\/em><\/li>\n<li><strong>Copy the user&#8217;s public to that user&#8217;s account on every node (including the <span style=\"color: #ff0000;\">primary-node<\/span> itself):<\/strong><br \/>\nThis is done using the <code>ssh-copy-id<\/code> command. You will need to say <em>yes<\/em> when prompted to verify the host-key (if this is the first time you are connecting to that node). You will also be prompted to enter the password for the user&#8217;s account<br \/>\n<code>ssh-copy-id node-1<\/code><br \/>\n<code>ssh-copy-id node-2<\/code><br \/>\n<code>ssh-copy-id node-3<\/code><br \/>\n<code>...<\/code><br \/>\n<code>ssh-copy-id node-n<\/code><br \/>\n<code>ssh-copy-id primary-node<\/code> <em>&#8211; This will ensure that the <code>~\/.ssh\/known_hosts<\/code> file has the host key for EVERY <strong><span style=\"color: #0077cc;\">node<\/span><\/strong> AND the <strong><span style=\"color: #ff0000;\">primary-node<\/span><\/strong>. It will also add the user&#8217;s public key to the <code>~\/.ssh\/authorized_keys<\/code> file on the <strong><span style=\"color: #ff0000;\">primary-node<\/span><\/strong>, meaning the private key can ALSO unlock the <strong><span style=\"color: #ff0000;\">primary-node<\/span><\/strong>, in addition to <strong><span style=\"color: #0077cc;\">node-1<\/span> -&gt; <span style=\"color: #0077cc;\">node-n<\/span><\/strong><\/em><\/li>\n<\/ol>\n<p><strong>SSH public and private key (key pair) and environment files are now set up<\/strong><br \/>\nAfter completing the above steps, all four <code>~\/.ssh\/<\/code> files should be configured:<br \/>\n<code>~\/.ssh\/id_rsa<\/code> <em>&#8211; private key<\/em><br \/>\n<code>~\/.ssh\/id_rsa.pub<\/code> <em>&#8211; public key<\/em><br \/>\n<code>~\/.ssh\/authorized_keys<\/code> <em>&#8211; includes the public key (It will be identical to the <code>id_rsa.pub<\/code> file if no other keys were set up previously)<\/em><br \/>\n<code>~\/.ssh\/known_hosts<\/code> <em>&#8211; includes the host keys for EVERY host (<strong><span style=\"color: #ff0000;\">primary-node<\/span><\/strong> and <strong><span style=\"color: #0077cc;\">node-1<\/span> -&gt; <span style=\"color: #0077cc;\">node-n<\/span><\/strong>)<\/em><\/p>\n<h2 id=\"replicate-ssh-environment\">Step 4: Replicate the SSH Environment<\/h2>\n<p>The SSH public and private keys and the environment files can now be <strong><span style=\"color: #00aa33;\">COPIED<\/span><\/strong> from <strong><span style=\"color: #ff0000;\">primary-node<\/span><\/strong> to each of <strong><span style=\"color: #0077cc;\">node-1<\/span> -&gt; <span style=\"color: #0077cc;\">node-n<\/span><\/strong><br \/>\n<code>scp ~\/.ssh\/* node-1:~\/.ssh\/<\/code><br \/>\n<code>scp ~\/.ssh\/* node-2:~\/.ssh\/<\/code><br \/>\n<code>scp ~\/.ssh\/* node-3:~\/.ssh\/<\/code><br \/>\n<code>...<\/code><br \/>\n<code>scp ~\/.ssh\/* node-n:~\/.ssh\/<\/code><\/p>\n<h2 id=\"replicate-hosts-file\">Step 5: Replicate \/etc\/hosts file<\/h2>\n<p>To make it easier to move between the <strong><span style=\"color: #ff0000;\">primary-node<\/span><\/strong> and <strong><span style=\"color: #0077cc;\">node-1<\/span> -&gt; <span style=\"color: #0077cc;\">node-n<\/span><\/strong>, <strong><span style=\"color: #00aa33;\">COPY<\/span><\/strong> the <code>\/etc\/hosts<\/code> file to each node.<br \/>\n<strong>NOTE:<\/strong> Because <code>\/etc\/hosts<\/code> is a system file, you will need to first copy the file to each node, then ssh onto the node and use <em>sudo<\/em> to copy the file to that system&#8217;s <code>\/etc\/hosts<\/code><\/p>\n<p><strong><span style=\"color: #00aa33;\">Copy<\/span> the <code>\/etc\/hosts<\/code> file to each node (repeat the below steps for each of <span style=\"color: #0077cc;\">node-1<\/span> -&gt; <span style=\"color: #0077cc;\">node-n<\/span>:<\/strong>)<\/p>\n<ol>\n<li>Copy the <code>\/etc\/hosts<\/code> file from the <strong><span style=\"color: #ff0000;\">primary-node<\/span><\/strong> to <strong><span style=\"color: #0077cc;\">node-1<\/span><\/strong>:<br \/>\n<code>scp \/etc\/hosts node-1:~\/ <\/code><\/li>\n<li>SSH to <strong><span style=\"color: #0077cc;\">node-1<\/span><\/strong>:<br \/>\n<code>ssh node-1<\/code><\/li>\n<li>Move the <code>hosts<\/code> file you just copied to overwrite the system <code>\/etc\/hosts<\/code> file:<br \/>\n<code>sudo mv ~\/hosts \/etc\/hosts<\/code><br \/>\n<em>As was the case earlier in this guide, when you edit (or in this case, overwrite) a system file such as <code>\/etc\/hosts<\/code>, you need to prepend your command with the <code>sudo<\/code> command<\/em><\/li>\n<\/ol>\n<h2 id=\"test-passwordless-ssh-connections\">Step 6: Test Your Passwordless SSH Connections!<\/h2>\n<p>You should now be able to ssh between all of your nodes without using a password.<\/p>\n<ul>\n<li><strong>Test from the <span style=\"color: #ff0000;\">primary-node<\/span>:<\/strong><br \/>\n<code>ssh node-1<\/code><br \/>\n<code>ssh node-2<\/code><br \/>\n<code>ssh node-3<\/code><br \/>\n<code>...<\/code><br \/>\n<code>ssh node-n<\/code><br \/>\n<code>ssh primary-node<\/code><\/li>\n<li><strong>Test from at least one of the nodes, such as <span style=\"color: #0077cc;\">node-1<\/span>:<\/strong><br \/>\n<code>ssh primary-node<\/code><br \/>\n<code>ssh node-1<\/code><br \/>\n<code>ssh node-2<\/code><br \/>\n<code>...<\/code><br \/>\n<code>ssh node-n<\/code><br \/>\n<em>NOTE: Ideally test all of the systems, but if you have a LOT of them, a few random tests should be sufficient<\/em><br \/>\n<em>NOTE: Some tools and scripts only require that you can ssh from the <strong><span style=\"color: #ff0000;\">primary-node<\/span><\/strong> to <strong><span style=\"color: #0077cc;\">node-1<\/span> -&gt; <span style=\"color: #0077cc;\">node-n<\/span><\/strong>, so you would not need to do this step.<\/em><\/li>\n<\/ul>\n<h2 id=\"multi-node-graphical-overview\">Graphic: Set up of SSH Enabled Multi-node Compute Environment<\/h2>\n<p><strong>Graphical overview of setting up a multi-node compute environment, using ssh keys for inter-node connections:<\/strong><br \/>\n<img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/carleton.ca\/scs\/wp-content\/uploads\/SSH-KeyPair-Multi-Node-Setup-1-1.png\" alt=\"\" width=\"738\" height=\"391\" class=\"alignleft size-full wp-image-17375\" srcset=\"https:\/\/carleton.ca\/scs\/wp-content\/uploads\/SSH-KeyPair-Multi-Node-Setup-1-1.png 738w, https:\/\/carleton.ca\/scs\/wp-content\/uploads\/SSH-KeyPair-Multi-Node-Setup-1-1-240x127.png 240w, https:\/\/carleton.ca\/scs\/wp-content\/uploads\/SSH-KeyPair-Multi-Node-Setup-1-1-400x212.png 400w, https:\/\/carleton.ca\/scs\/wp-content\/uploads\/SSH-KeyPair-Multi-Node-Setup-1-1-160x85.png 160w, https:\/\/carleton.ca\/scs\/wp-content\/uploads\/SSH-KeyPair-Multi-Node-Setup-1-1-360x191.png 360w\" sizes=\"(max-width: 738px) 100vw, 738px\" \/><\/p>\n<h2 id=\"copy-files-between-nodes\">Copy Files Between Remote Nodes<\/h2>\n<p>Once you have the ability to ssh between computers, either using passwords or the ssh keys as setup above, it is easy to copy files the computers.  If you do have ssh keys setup allowing you to ssh with no password, then these tools will not prompt for a password.  Here are a few example tools:<\/p>\n<ul>\n<li><strong>Copy files with <em>rsync<\/em>:<\/strong> <code>rsync options source_path destination_path<\/code><br \/>\n    <code>rsync -r -v ~\/Downloads student@node1:~\/Downloads<\/code><\/p>\n<ul>\n<li><code> -r <\/code> &#8211; tells rsync to copy files recursively (all sub-files and folders)<\/li>\n<li><code> -v <\/code> &#8211; tells rsync to show the files as they are copied<\/li>\n<li><code> ~\/Downloads <\/code> &#8211; tells rsync to copy the files in the user&#8217;s <em>Downloads<\/em> folder<\/li>\n<li><code> student@node1:~\/Downloads<\/code> &#8211; tells rsync to copy the files to the remote server <em>node1<\/em> using the <em>student<\/em> user account, and copy the files into the student user&#8217;s <em>Downloads<\/em> directory<\/li>\n<\/ul>\n<p>    <strong>rsync<\/strong> is a powerful tool as you can specify various options that control what is copied.  For example, it will not &#8220;sync&#8221; files that are already up-to-date on the destination node.\n    <\/li>\n<li><strong>Copy files with <em>scp<\/em>:<\/strong> <code>scp options source_path destination_path<\/code><br \/>\n    <code>scp -r -v ~\/Downloads student@node1:~\/Downloads<\/code><\/p>\n<ul>\n<li><code> -r <\/code> &#8211; tells rsync to copy files recursively (all sub-files and folders)<\/li>\n<li><code> -v <\/code> &#8211; tells rsync to show the files as they are copied<\/li>\n<li><code> ~\/Downloads <\/code> &#8211; tells scp to copy the files in the user&#8217;s <em>Downloads<\/em> folder<\/li>\n<li><code> student@node1:~\/Downloads<\/code> &#8211; tells rsync to copy the files to the remote server <em>node1<\/em> using the <em>student<\/em> user account, and copy the files into the student user&#8217;s <em>Downloads<\/em> directory<\/li>\n<\/ul>\n<p>    <strong>scp<\/strong> is not &#8220;tunable&#8221; to precisely control what files are copied.  It also does not check if a file is already up-to-date as the destination.\n    <\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Step 1: Set up Multiple Compute Nodes Step 2: Update hostname of the compute nodes Step 3: Set up the SSH Keys and Environment Step 4: Replicate the SSH Environment Step 5: Replicate \/etc\/hosts file Step 6: Test Your Passwordless SSH Connections! Graphic: Set up of SSH Enabled Multi-node Compute Environment Copy Files Between Remote [&hellip;]<\/p>\n","protected":false},"author":15,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_relevanssi_hide_post":"","_relevanssi_hide_content":"","_relevanssi_pin_for_all":"","_relevanssi_pin_keywords":"","_relevanssi_unpin_keywords":"","_relevanssi_related_keywords":"","_relevanssi_related_include_ids":"","_relevanssi_related_exclude_ids":"","_relevanssi_related_no_append":"","_relevanssi_related_not_related":"","_relevanssi_related_posts":"","_relevanssi_noindex_reason":"","_mi_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[61,58,57],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Using SSH Keys to Support Multi-node Compute Tools &amp; Scripts - School of Computer Science<\/title>\n<meta name=\"description\" content=\"Step 1: Set up Multiple Compute Nodes Step 2: Update hostname of the compute nodes Step 3: Set up the SSH Keys and Environment Step 4: Replicate the SSH\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/carleton.ca\/scs\/2024\/using-ssh-keys-to-support-multi-node-compute-tools\/\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"andrewpullin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/carleton.ca\/scs\/2024\/using-ssh-keys-to-support-multi-node-compute-tools\/\",\"url\":\"https:\/\/carleton.ca\/scs\/2024\/using-ssh-keys-to-support-multi-node-compute-tools\/\",\"name\":\"Using SSH Keys to Support Multi-node Compute Tools & Scripts - School of Computer Science\",\"isPartOf\":{\"@id\":\"https:\/\/carleton.ca\/scs\/#website\"},\"datePublished\":\"2024-11-12T19:26:08+00:00\",\"dateModified\":\"2024-11-12T19:26:08+00:00\",\"author\":{\"@id\":\"https:\/\/carleton.ca\/scs\/#\/schema\/person\/165b37967ff02be20bc30ba4ef56e96d\"},\"description\":\"Step 1: Set up Multiple Compute Nodes Step 2: Update hostname of the compute nodes Step 3: Set up the SSH Keys and Environment Step 4: Replicate the SSH\",\"breadcrumb\":{\"@id\":\"https:\/\/carleton.ca\/scs\/2024\/using-ssh-keys-to-support-multi-node-compute-tools\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/carleton.ca\/scs\/2024\/using-ssh-keys-to-support-multi-node-compute-tools\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/carleton.ca\/scs\/2024\/using-ssh-keys-to-support-multi-node-compute-tools\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/carleton.ca\/scs\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Technical Support\",\"item\":\"https:\/\/carleton.ca\/scs\/category\/technicalsupport\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Openstack\",\"item\":\"https:\/\/carleton.ca\/scs\/category\/technicalsupport\/openstack-support\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Using SSH Keys to Support Multi-node Compute Tools &#038; Scripts\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/carleton.ca\/scs\/#website\",\"url\":\"https:\/\/carleton.ca\/scs\/\",\"name\":\"School of Computer Science\",\"description\":\"Carleton University\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/carleton.ca\/scs\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/carleton.ca\/scs\/#\/schema\/person\/165b37967ff02be20bc30ba4ef56e96d\",\"name\":\"andrewpullin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/carleton.ca\/scs\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f7e292566dc80625455ee84f24686363?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f7e292566dc80625455ee84f24686363?s=96&d=mm&r=g\",\"caption\":\"andrewpullin\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Using SSH Keys to Support Multi-node Compute Tools & Scripts - School of Computer Science","description":"Step 1: Set up Multiple Compute Nodes Step 2: Update hostname of the compute nodes Step 3: Set up the SSH Keys and Environment Step 4: Replicate the SSH","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/carleton.ca\/scs\/2024\/using-ssh-keys-to-support-multi-node-compute-tools\/","twitter_misc":{"Written by":"andrewpullin","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/carleton.ca\/scs\/2024\/using-ssh-keys-to-support-multi-node-compute-tools\/","url":"https:\/\/carleton.ca\/scs\/2024\/using-ssh-keys-to-support-multi-node-compute-tools\/","name":"Using SSH Keys to Support Multi-node Compute Tools & Scripts - School of Computer Science","isPartOf":{"@id":"https:\/\/carleton.ca\/scs\/#website"},"datePublished":"2024-11-12T19:26:08+00:00","dateModified":"2024-11-12T19:26:08+00:00","author":{"@id":"https:\/\/carleton.ca\/scs\/#\/schema\/person\/165b37967ff02be20bc30ba4ef56e96d"},"description":"Step 1: Set up Multiple Compute Nodes Step 2: Update hostname of the compute nodes Step 3: Set up the SSH Keys and Environment Step 4: Replicate the SSH","breadcrumb":{"@id":"https:\/\/carleton.ca\/scs\/2024\/using-ssh-keys-to-support-multi-node-compute-tools\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/carleton.ca\/scs\/2024\/using-ssh-keys-to-support-multi-node-compute-tools\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/carleton.ca\/scs\/2024\/using-ssh-keys-to-support-multi-node-compute-tools\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/carleton.ca\/scs\/"},{"@type":"ListItem","position":2,"name":"Technical Support","item":"https:\/\/carleton.ca\/scs\/category\/technicalsupport\/"},{"@type":"ListItem","position":3,"name":"Openstack","item":"https:\/\/carleton.ca\/scs\/category\/technicalsupport\/openstack-support\/"},{"@type":"ListItem","position":4,"name":"Using SSH Keys to Support Multi-node Compute Tools &#038; Scripts"}]},{"@type":"WebSite","@id":"https:\/\/carleton.ca\/scs\/#website","url":"https:\/\/carleton.ca\/scs\/","name":"School of Computer Science","description":"Carleton University","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/carleton.ca\/scs\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/carleton.ca\/scs\/#\/schema\/person\/165b37967ff02be20bc30ba4ef56e96d","name":"andrewpullin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/carleton.ca\/scs\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/f7e292566dc80625455ee84f24686363?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f7e292566dc80625455ee84f24686363?s=96&d=mm&r=g","caption":"andrewpullin"}}]}},"acf":{"Post Thumbnail Icon":"","Post Thumbnail":false},"_links":{"self":[{"href":"https:\/\/carleton.ca\/scs\/wp-json\/wp\/v2\/posts\/8535"}],"collection":[{"href":"https:\/\/carleton.ca\/scs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/carleton.ca\/scs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/carleton.ca\/scs\/wp-json\/wp\/v2\/users\/15"}],"replies":[{"embeddable":true,"href":"https:\/\/carleton.ca\/scs\/wp-json\/wp\/v2\/comments?post=8535"}],"version-history":[{"count":4,"href":"https:\/\/carleton.ca\/scs\/wp-json\/wp\/v2\/posts\/8535\/revisions"}],"predecessor-version":[{"id":17376,"href":"https:\/\/carleton.ca\/scs\/wp-json\/wp\/v2\/posts\/8535\/revisions\/17376"}],"wp:attachment":[{"href":"https:\/\/carleton.ca\/scs\/wp-json\/wp\/v2\/media?parent=8535"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/carleton.ca\/scs\/wp-json\/wp\/v2\/categories?post=8535"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/carleton.ca\/scs\/wp-json\/wp\/v2\/tags?post=8535"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}