Skip to content

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:

~/.ssh/config
# 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:

ssh front.dalek.lip6

Or, to a node directly (here az4-n4090-0):

ssh az4-n4090-0.dalek.lip6

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:

  1. SLURM will poweroff automatically the node if no SLURM job is running on it.
  2. 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:

  1. For the gateway and the placeholder will be [USER_LIP6]
  2. 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:

ssh [USER_LIP6]@ssh1.dalek.proj.lip6.fr
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:
passwd
Next, we strongly recommend you to add your SSH public key to the gateway.

To get your public key, from your local account (not on the gateway) do:

cat ~/.ssh/id_*.pub

If you don't already have a pair of public/private keys, from your laptop local account, generate one by typing:

ssh-keygen
Then press the [Enter] key until the previous command is completed.

To get your public key, from your local account (not on the gateway) do:

cat ~/.ssh/id_*.pub

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 :

ssh [USER_LIP6]@ssh1.dalek.proj.lip6.fr
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:

ssh [USER_LIP6]@ssh1.dalek.proj.lip6.fr
You are now on the gateway and we are going to "jump" on Dalek frontend node by doing:
ssh [USER_DALEK]@front.dalek.proj.lip6.fr
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:

passwd

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:

exit
exit
You're back on your laptop ._.)/\(._.

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:

touch ~/.ssh/config

Then copy the contents of the following config script:

~/.ssh/config
# 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:

# HostName ssh1.dalek.proj.lip6.fr
and uncomment the line:
HostName ducas.lip6.fr

Save the ~/.ssh/config file.

You can now connect to the Dalek frontend by:

ssh front.dalek.lip6
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:

ssh az4-a7900-2.dalek.lip6
The previous command will connect to the frontend and then launch the SLURM reservation of node 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).