SSH Access¶
To use the cluster you need to ask for the creation of a user account to an
administrator. Once you have an account, you can connect easily using ssh
.
Straight to the Goal¶
Info
This section summarizes the main information to connect to Dalek. Keep in mind that the step by step procedure is available in the section just below.
To facilitate the ssh
usage, you can copy-paste the following lines into your
$HOME/.ssh/config
file and replace [USER_DALEK]
with your Dalek login
and [USER_LIP6]
with your LIP6 login:
# the 4 following lines prevent automatic ssh deconnections
Host *
ServerAliveInterval 120
ServerAliveCountMax 5
TCPKeepAlive no
Host proxy.lip6 # ------------------------------------------ proxy (LIP6 proxy)
User [USER_LIP6]
HostName ssh1.dalek.proj.lip6.fr
# if you are a LIP6 member you should comment the previous line and
# uncomment the next line
# HostName ducas.lip6.fr
# wired LIP6 net wireless LIP6 net
Match host *.dalek.lip6 !localnetwork 132.227.102.0/24,132.227.92.0/24
ProxyJump proxy.lip6
Host *dalek.lip6
User [USER_DALEK]
RequestTTY force
HostName front.dalek.proj.lip6.fr
Host *dalek.lip6.ssh
User [USER_DALEK]
RequestTTY force
ProxyJump front.dalek.lip6
# =============================================================================
Host front.dalek.lip6 # -------------------------------------- Dalek (frontend)
HostName front.dalek.proj.lip6.fr
# =============================================================================
# az4-n4090 partition ---------------------------------------------------------
Host az4-n4090-0.dalek.lip6 # ------------------------------ az4-n4090-0 (node)
RemoteCommand srun -p az4-n4090 -w az4-n4090-0 --exclusive --pty bash -i && bash -i
Host az4-n4090-1.dalek.lip6 # ------------------------------ az4-n4090-1 (node)
RemoteCommand srun -p az4-n4090 -w az4-n4090-1 --exclusive --pty bash -i && bash -i
Host az4-n4090-2.dalek.lip6 # ------------------------------ az4-n4090-2 (node)
RemoteCommand srun -p az4-n4090 -w az4-n4090-2 --exclusive --pty bash -i && bash -i
Host az4-n4090-3.dalek.lip6 # ------------------------------ az4-n4090-3 (node)
RemoteCommand srun -p az4-n4090 -w az4-n4090-3 --exclusive --pty bash -i && bash -i
# =============================================================================
# az4-a7900 partition ---------------------------------------------------------
Host az4-a7900-0.dalek.lip6 # ------------------------------ az4-a7900-0 (node)
RemoteCommand srun -p az4-a7900 -w az4-a7900-0 --exclusive --pty bash -i && bash -i
Host az4-a7900-1.dalek.lip6 # ------------------------------ az4-a7900-1 (node)
RemoteCommand srun -p az4-a7900 -w az4-a7900-1 --exclusive --pty bash -i && bash -i
Host az4-a7900-2.dalek.lip6 # ------------------------------ az4-a7900-2 (node)
RemoteCommand srun -p az4-a7900 -w az4-a7900-2 --exclusive --pty bash -i && bash -i
Host az4-a7900-3.dalek.lip6 # ------------------------------ az4-a7900-3 (node)
RemoteCommand srun -p az4-a7900 -w az4-a7900-3 --exclusive --pty bash -i && bash -i
# =============================================================================
# az5-a890m partition ---------------------------------------------------------
Host az5-a890m-0.dalek.lip6 # ------------------------------ az5-a890m-0 (node)
RemoteCommand srun -p az5-a890m -w az5-a890m-0 --exclusive --pty bash -i && bash -i
Host az5-a890m-1.dalek.lip6 # ------------------------------ az5-a890m-1 (node)
RemoteCommand srun -p az5-a890m -w az5-a890m-1 --exclusive --pty bash -i && bash -i
Host az5-a890m-2.dalek.lip6 # ------------------------------ az5-a890m-2 (node)
RemoteCommand srun -p az5-a890m -w az5-a890m-2 --exclusive --pty bash -i && bash -i
Host az5-a890m-3.dalek.lip6 # ------------------------------ az5-a890m-3 (node)
RemoteCommand srun -p az5-a890m -w az5-a890m-3 --exclusive --pty bash -i && bash -i
# =============================================================================
# iml-ia770 partition ---------------------------------------------------------
Host iml-ia770-0.dalek.lip6 # ------------------------------ iml-ia770-0 (node)
RemoteCommand srun -p iml-ia770 -w iml-ia770-0 --exclusive --pty bash -i && bash -i
Host iml-ia770-1.dalek.lip6 # ------------------------------ iml-ia770-1 (node)
RemoteCommand srun -p iml-ia770 -w iml-ia770-1 --exclusive --pty bash -i && bash -i
Host iml-ia770-2.dalek.lip6 # ------------------------------ iml-ia770-2 (node)
RemoteCommand srun -p iml-ia770 -w iml-ia770-2 --exclusive --pty bash -i && bash -i
Host iml-ia770-3.dalek.lip6 # ------------------------------ iml-ia770-3 (node)
RemoteCommand srun -p iml-ia770 -w iml-ia770-3 --exclusive --pty bash -i && bash -i
# =============================================================================
# Once a node is reserved, open an direct SSH connexion to the required node
# =============================================================================
# az4-n4090 partition ---------------------------------------------------------
Host az4-n4090-0.dalek.lip6.ssh # -------------------------- az4-n4090-0 (node)
HostName az4-n4090-0.dalek
Host az4-n4090-1.dalek.lip6.ssh # -------------------------- az4-n4090-1 (node)
HostName az4-n4090-1.dalek
Host az4-n4090-2.dalek.lip6.ssh # -------------------------- az4-n4090-2 (node)
HostName az4-n4090-2.dalek
Host az4-n4090-3.dalek.lip6.ssh # -------------------------- az4-n4090-3 (node)
HostName az4-n4090-3.dalek
# =============================================================================
# az4-a7900 partition ---------------------------------------------------------
Host az4-a7900-0.dalek.lip6.ssh # -------------------------- az4-a7900-0 (node)
HostName az4-a7900-0.dalek
Host az4-a7900-1.dalek.lip6.ssh # -------------------------- az4-a7900-1 (node)
HostName az4-a7900-1.dalek
Host az4-a7900-2.dalek.lip6.ssh # -------------------------- az4-a7900-2 (node)
HostName az4-a7900-2.dalek
Host az4-a7900-3.dalek.lip6.ssh # -------------------------- az4-a7900-3 (node)
HostName az4-a7900-3.dalek
# =============================================================================
# az5-a890m partition ---------------------------------------------------------
Host az5-a890m-0.dalek.lip6.ssh # -------------------------- az5-a890m-0 (node)
HostName az5-a890m-0.dalek
Host az5-a890m-1.dalek.lip6.ssh # -------------------------- az5-a890m-1 (node)
HostName az5-a890m-1.dalek
Host az5-a890m-2.dalek.lip6.ssh # -------------------------- az5-a890m-2 (node)
HostName az5-a890m-2.dalek
Host az5-a890m-3.dalek.lip6.ssh # -------------------------- az5-a890m-3 (node)
HostName az5-a890m-3.dalek
# =============================================================================
# iml-ia770 partition ---------------------------------------------------------
Host iml-ia770-0.dalek.lip6.ssh # -------------------------- iml-ia770-0 (node)
HostName iml-ia770-0.dalek
Host iml-ia770-1.dalek.lip6.ssh # -------------------------- iml-ia770-1 (node)
HostName iml-ia770-1.dalek
Host iml-ia770-2.dalek.lip6.ssh # -------------------------- iml-ia770-2 (node)
HostName iml-ia770-2.dalek
Host iml-ia770-3.dalek.lip6.ssh # -------------------------- iml-ia770-3 (node)
HostName iml-ia770-3.dalek
Once it is done, you can simply connect to the frontend using:
Or, to a node directly (here az4-n4090-0
):
Info
The first login to a node can take some time because the previous command
will wake up the node before to allocate it to you. Generally it takes
around 30 seconds and can take up to 3 minutes if the node is
poweroff
.
Danger
For now it is still possible to directly connect (SSH) to a compute node without running a SLURM job, BUT this is strongly discouraged because:
- SLURM will poweroff automatically the node if no SLURM job is running on it.
- We plan to disable direct SSH connection in the future to prevent users to connect to nodes that have not been allocated for them.
Step by Step Procedure¶
This section explains, step by step, how to connect to the cluster and how to setup a friendly environment. Still, it supposes that you are familiar with the command line.
To connect to Dalek, you first need to connect to a gateway
(ssh1.dalek.proj.lip6.fr
). In the following subsections we suppose that two
accounts have been created for you:
- For the gateway and the placeholder will be
[USER_LIP6]
- For the Dalek cluster and the placeholder will be
[USER_DALEK]
[USER_LIP6]
and [USER_DALEK]
likely to be the same string but keep in mind
that they are still different user accounts.
With these two previous user accounts, two passwords will be given to you:
[PASSWD_LIP6]
and [PASSWD_DALEK]
, you will have to change them at your first
connection on the gateway and on the Dalek frontend.
Warning
If you don't know your [USER_LIP6]
and [USER_DALEK]
accounts already,
you cannot connect to the cluster. Please contact an administrator to ask
for accounts creation.
Step 1 - Connect to the gateway and change your password¶
To connect to the gateway you can do:
This will ask you to enter your password. Type[PASSWD_LIP6]
and, the first
thing to do once you've logged on to the gateway is to set a new password.
To do this, simply type:
Next, we strongly recommend you to add your SSH public key to the gateway.
You can then copy the output of the cat
command to your clipboard and connect
to the gateway:
ssh [USER_LIP6]@ssh1.dalek.proj.lip6.fr
mkdir ~/.ssh
chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys
echo "PASTE YOUR PUBLIC KEY HERE" >> ~/.ssh/authorized_keys
exit
Now, if you redo :
It shouldn't ask you for a password any more, great you've passed step 1 :-)!Step 2 - Connect to Dalek manually via the gateway¶
We're now going to connect to Dalek via the gateway, but manually (we'll automate this later to make it less tedious). From your laptop, do:
You are now on the gateway and we are going to "jump" on Dalek frontend node by doing: Although the username may be the same for Dalek, it's a different account. So you'll need to type in a password again ([PASSWD_DALEK]
). Once you've entered
the password correctly, you'll be taken to the Dalek frontend.
The first thing to do is to change your password! You can use the same password as on the gateway, or another one if you like - as long as you can remember it ;-). Change your password:
Then we strongly recommend you to also add your public key to the Dalek frontend by doing:
mkdir ~/.ssh
chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys
echo "PASTE YOUR PUBLIC KEY HERE" >> ~/.ssh/authorized_keys
Then type exit
twice to disconnect 1) from the Dalek frontend and 2) from the
gateway:
._.)/\(._.
Step 3 - Automated connection to Dalek frontend and to Dalek compute nodes¶
As you may have noticed, it's quite cumbersome to connect to Dalek because you have to bounce to the gateway first. We're going to automate this to make it more user-friendly.
On your local account, if you don't have a ~/.ssh/config
file, create it:
Then copy the contents of the following config
script:
# the 4 following lines prevent automatic ssh deconnections
Host *
ServerAliveInterval 120
ServerAliveCountMax 5
TCPKeepAlive no
Host proxy.lip6 # ------------------------------------------ proxy (LIP6 proxy)
User [USER_LIP6]
HostName ssh1.dalek.proj.lip6.fr
# if you are a LIP6 member you should comment the previous line and
# uncomment the next line
# HostName ducas.lip6.fr
# wired LIP6 net wireless LIP6 net
Match host *.dalek.lip6 !localnetwork 132.227.102.0/24,132.227.92.0/24
ProxyJump proxy.lip6
Host *dalek.lip6
User [USER_DALEK]
RequestTTY force
HostName front.dalek.proj.lip6.fr
Host *dalek.lip6.ssh
User [USER_DALEK]
RequestTTY force
ProxyJump front.dalek.lip6
# =============================================================================
Host front.dalek.lip6 # -------------------------------------- Dalek (frontend)
HostName front.dalek.proj.lip6.fr
# =============================================================================
# az4-n4090 partition ---------------------------------------------------------
Host az4-n4090-0.dalek.lip6 # ------------------------------ az4-n4090-0 (node)
RemoteCommand srun -p az4-n4090 -w az4-n4090-0 --exclusive --pty bash -i && bash -i
Host az4-n4090-1.dalek.lip6 # ------------------------------ az4-n4090-1 (node)
RemoteCommand srun -p az4-n4090 -w az4-n4090-1 --exclusive --pty bash -i && bash -i
Host az4-n4090-2.dalek.lip6 # ------------------------------ az4-n4090-2 (node)
RemoteCommand srun -p az4-n4090 -w az4-n4090-2 --exclusive --pty bash -i && bash -i
Host az4-n4090-3.dalek.lip6 # ------------------------------ az4-n4090-3 (node)
RemoteCommand srun -p az4-n4090 -w az4-n4090-3 --exclusive --pty bash -i && bash -i
# =============================================================================
# az4-a7900 partition ---------------------------------------------------------
Host az4-a7900-0.dalek.lip6 # ------------------------------ az4-a7900-0 (node)
RemoteCommand srun -p az4-a7900 -w az4-a7900-0 --exclusive --pty bash -i && bash -i
Host az4-a7900-1.dalek.lip6 # ------------------------------ az4-a7900-1 (node)
RemoteCommand srun -p az4-a7900 -w az4-a7900-1 --exclusive --pty bash -i && bash -i
Host az4-a7900-2.dalek.lip6 # ------------------------------ az4-a7900-2 (node)
RemoteCommand srun -p az4-a7900 -w az4-a7900-2 --exclusive --pty bash -i && bash -i
Host az4-a7900-3.dalek.lip6 # ------------------------------ az4-a7900-3 (node)
RemoteCommand srun -p az4-a7900 -w az4-a7900-3 --exclusive --pty bash -i && bash -i
# =============================================================================
# az5-a890m partition ---------------------------------------------------------
Host az5-a890m-0.dalek.lip6 # ------------------------------ az5-a890m-0 (node)
RemoteCommand srun -p az5-a890m -w az5-a890m-0 --exclusive --pty bash -i && bash -i
Host az5-a890m-1.dalek.lip6 # ------------------------------ az5-a890m-1 (node)
RemoteCommand srun -p az5-a890m -w az5-a890m-1 --exclusive --pty bash -i && bash -i
Host az5-a890m-2.dalek.lip6 # ------------------------------ az5-a890m-2 (node)
RemoteCommand srun -p az5-a890m -w az5-a890m-2 --exclusive --pty bash -i && bash -i
Host az5-a890m-3.dalek.lip6 # ------------------------------ az5-a890m-3 (node)
RemoteCommand srun -p az5-a890m -w az5-a890m-3 --exclusive --pty bash -i && bash -i
# =============================================================================
# iml-ia770 partition ---------------------------------------------------------
Host iml-ia770-0.dalek.lip6 # ------------------------------ iml-ia770-0 (node)
RemoteCommand srun -p iml-ia770 -w iml-ia770-0 --exclusive --pty bash -i && bash -i
Host iml-ia770-1.dalek.lip6 # ------------------------------ iml-ia770-1 (node)
RemoteCommand srun -p iml-ia770 -w iml-ia770-1 --exclusive --pty bash -i && bash -i
Host iml-ia770-2.dalek.lip6 # ------------------------------ iml-ia770-2 (node)
RemoteCommand srun -p iml-ia770 -w iml-ia770-2 --exclusive --pty bash -i && bash -i
Host iml-ia770-3.dalek.lip6 # ------------------------------ iml-ia770-3 (node)
RemoteCommand srun -p iml-ia770 -w iml-ia770-3 --exclusive --pty bash -i && bash -i
# =============================================================================
# Once a node is reserved, open an direct SSH connexion to the required node
# =============================================================================
# az4-n4090 partition ---------------------------------------------------------
Host az4-n4090-0.dalek.lip6.ssh # -------------------------- az4-n4090-0 (node)
HostName az4-n4090-0.dalek
Host az4-n4090-1.dalek.lip6.ssh # -------------------------- az4-n4090-1 (node)
HostName az4-n4090-1.dalek
Host az4-n4090-2.dalek.lip6.ssh # -------------------------- az4-n4090-2 (node)
HostName az4-n4090-2.dalek
Host az4-n4090-3.dalek.lip6.ssh # -------------------------- az4-n4090-3 (node)
HostName az4-n4090-3.dalek
# =============================================================================
# az4-a7900 partition ---------------------------------------------------------
Host az4-a7900-0.dalek.lip6.ssh # -------------------------- az4-a7900-0 (node)
HostName az4-a7900-0.dalek
Host az4-a7900-1.dalek.lip6.ssh # -------------------------- az4-a7900-1 (node)
HostName az4-a7900-1.dalek
Host az4-a7900-2.dalek.lip6.ssh # -------------------------- az4-a7900-2 (node)
HostName az4-a7900-2.dalek
Host az4-a7900-3.dalek.lip6.ssh # -------------------------- az4-a7900-3 (node)
HostName az4-a7900-3.dalek
# =============================================================================
# az5-a890m partition ---------------------------------------------------------
Host az5-a890m-0.dalek.lip6.ssh # -------------------------- az5-a890m-0 (node)
HostName az5-a890m-0.dalek
Host az5-a890m-1.dalek.lip6.ssh # -------------------------- az5-a890m-1 (node)
HostName az5-a890m-1.dalek
Host az5-a890m-2.dalek.lip6.ssh # -------------------------- az5-a890m-2 (node)
HostName az5-a890m-2.dalek
Host az5-a890m-3.dalek.lip6.ssh # -------------------------- az5-a890m-3 (node)
HostName az5-a890m-3.dalek
# =============================================================================
# iml-ia770 partition ---------------------------------------------------------
Host iml-ia770-0.dalek.lip6.ssh # -------------------------- iml-ia770-0 (node)
HostName iml-ia770-0.dalek
Host iml-ia770-1.dalek.lip6.ssh # -------------------------- iml-ia770-1 (node)
HostName iml-ia770-1.dalek
Host iml-ia770-2.dalek.lip6.ssh # -------------------------- iml-ia770-2 (node)
HostName iml-ia770-2.dalek
Host iml-ia770-3.dalek.lip6.ssh # -------------------------- iml-ia770-3 (node)
HostName iml-ia770-3.dalek
Remember to replace [USER_LIP6]
and [USER_DALEK]
with your given usernames.
Info
If you are a LIP6 member, in the ~/.ssh/config
file, comment out the line:
Save the ~/.ssh/config
file.
You can now connect to the Dalek frontend by:
It's so much easier!You can also connect to any of the Dalek compute nodes. For example, if you want
to connect to the az4-a7900-2
node, simply do:
az4-a7900-2
. This may take some time, depending on the
sleep mode the node is in (between 30 sec if suspend
and 2 minutes if
hibernate
or poweroff
).