Difference between revisions of "Use SSH to remotely access a device"
Line 75: | Line 75: | ||
Create the file: | Create the file: | ||
<syntaxhighlight lang="bash" | <syntaxhighlight lang="bash"> | ||
touch ~/.ssh/config | touch ~/.ssh/config | ||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 18:50, 14 November 2021
SSH: Secure Shell is an encrypted protocol for a remote shell login. See wikipedia:Secure shell
Ways to SSH
Using a terminal, you may SSH through:
- a local network, by targeting a local IP address
- a public network, by targeting a public IP address
- generating and authorising matching public and private keys
SSH over local IP
To find the IP address of a computer on the local network, such as a Raspberry Pi, boot it and connect it to a screen. Type the command:
ifconfig
If connected over wifi, you should look for the IP listed next to wlan0
In this instance it is 192.168.1.101
inet 192.168.1.101
Now, on another machine you can remotely SSH to a user account on the Raspberry Pi (one that you know the password of).
In this instance, we SSH to the Pi user account on the Raspberry Pi by typing:
ssh pi@192.168.1.101
The first time you do this, an ECDSA key fingerprint is created on your machine, and 192.168.1.101 (ECDSA) is added to a list of known hosts in the file
~/.ssh/known_hosts
It will ask you for a password (most often you won't see what you write, so type carefully), and if it is correct you can access the device.
You are still using the local network, but you (and others who SSH to other accounts on the same network) can now control the Raspberry Pi remotely.
SSH over public IP
Using a public IP address is much the same as a local IP address; however:
- to access it you have to use the Internet which means going "outside" your local area network. This can be confusing when you are self-hosting a service on a machine that is sitting right next to you physically, but has an IP address located on the wide area network.
You can always SSH by entering the public IP address and the correct user credentials each time, however if it is something you have to do often it may be more convenient to generate public and private key pairs using Open SSH.
Generating SSH key pairs
Creating, using and managing ssh keys
SSH configuration file
The SSH configuration file makes it a lot simpler to ssh
scp
or sshfs
. It is especially convenient when you have keys for different servers. It helps you to keep them organised and to ssh
into servers with easy to remember shortcuts.
Rather than typing
scp myfile username@host:/path/to/copy/file/to
We can simply do with
scp myfile hostname:/path/to/copy/file/to
Location of the .ssh directory
On Linux-based distributions: /home/<your username>/.ssh
On MacOS: Users/<your username>/.ssh
Create ssh configuration file ~/.ssh/config/
Create the file:
touch ~/.ssh/config
Open the file in your favourite text editor and insert:
Host hostname // name for the shortcut you use to ssh into the server
User usename // ssh user
Hostname 192.168.10.20 // hostname of the server
Port 22
Identityfile ~/.ssh/id_rsa // change and make sure this is the path to the location of your keys
Serveraliveinterval 30
Now you can use the short cut to ssh
, scp
, sshfs
to that and any other host in in .ssh/config
using only
ssh username@hostname
or even
ssh hostname