sequenceDiagram
participant client as Client:<br>Laptop
participant remote as Remote:<br>Server
client->>remote: ssh account@host
Note over remote: account:~/.ssh/authorized_keys
par SSH Established
client->>remote: $ <commands>
client->>remote: $ exit
remote->>client: Connection Closed
end
SSH
Overview
SSH is a protocol to connect to a remote system. Once a connection is made, you can execute commands to manage the remote system.
The local computer is also referred to as the client, the remote system as the host.
It is recommended to use keys to authenticate connections between the client and the host. There are 2 keys:
| Key | File | Example |
|---|---|---|
| Private | * |
id_rsa |
| Public | *.pub |
id_rsa.pub |
The client generates both of the keys. The public key is copied onto the host and stored under the home directory of a user account at ~/.ssh/authorized_keys.
The private key is never be shared!
Once configured, you can run ssh account@host on the client to connect to the host, where account is a username account on the host and host is an ip address or FQDN.
Generating Keys
ssh-keygenDisable Password Authentication
If you have a working key-based authentication set up, it is recommended to disable password authentication on the remote host system.
sudo nano /etc/ssh/sshd_configSearch for PasswordAuthentication and set it to no. Uncomment if necessary.
sshd_config
PasswordAuthentication noRestart the ssh daemon.
sudo service ssh restartClient Side Configuration
Aliases
Instead of running ssh demo@192.168.1.1 to connect to a remote system, you can create alias.
Edit/Create the config file at ./.ssh/config:
./.ssh/config
Host test
HostName 192.168.1.1
User demoNow you can type ssh test to establish the SSH connection.