DE1-SoC: Using SSH keys

The standard Linux SD-Card images that you can get for the DE1-SoC board from the Terasic website have the SSH daemon enabled by default. Through this SSH connection it is possible to log in from a remote terminal or upload files SCP. However, by default you always have to enter a password. This short guide will show how to configure the systems to use SSH keys so no passwords are needed anymore. Furthermore, we will assign a static IP to the board.

This guide is not really specific to the DE1-SoC board. The same steps can be used on any Linux running an SSH server.

Static IP

Before we start on setting up the SSH keys we want to assign a static IP to the DE1-SoC. This way we don’t have to look up it’s IP every time the IP changes.
Assigning a static IP is just a matter of altering the configuration in /etc/network/interface. The DE1-SoC is connected via the ethernet jack to the network. However, the default configuration file also contains configurations for other interfaces such as a second ethernet interface and a WiFi card. We can throw out all configurations but the one for the lo and the eth0 interfaces.
The following configuration file sets the IP of the DE1-SoC to 192.168.1.100:

# Internal loopback interface
auto lo
iface lo inet loopback
 
# Wired or wireless interfaces
auto eth0
iface eth0 inet static
        address 192.168.1.100
        netmask 255.255.255.0
        network 192.168.1.0
        gateway 192.168.1.1

Make sure that you choose the IP range suited to your network configuration.

Setting up the SSH keys

The following guide assumes that your host (desktop computer) is a Unix machine. However, everything works perfectly fine within a Cygwin environment on Windows.

Generating keys

First we have to generate an RSA public and private key pair on our host computer. This is done by using the ssh-keygen program:

ssh-keygen -t rsa

The program will ask for both a key location and a passphrase. Leaving the key location to default and not setting any passphrase will simplify later usage.
You also want to make sure that permissions of the SSH keys are set so only your user can access them. This can be done by applying chmod 600 on both the public and the private file.

Uploading the key

The next step is to upload the generated public key to the DE1-SoC. This is done using SCP:

scp ~/.ssh/id_rsa.pub root@192.168.1.100:/home/root

Adding the key

Once the public key is uploaded to the DE1-SoC it is time to log in with through a remote terminal. First, we have to add the key to the autorized_keys file so the SSH server will know our key:

cat id_rsa.pub >> ~/.ssh/authorized_keys

The key has now been added to the SSH configuration and you can remove the uploaded key file from the DE1-SoC.

The last step is to tell the SSH server to use key files. This is done by adding the following entry to /etc/ssh/sshd_config:

EnableSSHKeysign yes

Connecting

Now we are ready to try out the new setup. When connecting via SSH the -2 parameter needs to be passed:

ssh -2 root@192.168.1.100

When using SCP, passing -i will tell SCP to look for the key files. When the keys are not in the standard location the path to the public key needs to be passed after this parameter:

scp -i file.txt root@192.168.1.100:/home/root

Leave a Comment

Your email address will not be published.