Connexion

Dans un terminal, exécuter la commande suivante:

ssh user@host

Par défaut le port 22 est utilisé


Se connecter sur un port particulier:

ssh user@host -p port

Créer des raccourcis pour vous connecter plus facilement à différents hosts:

Créer un fichier de config ~/.ssh/config et gérer vos config comme ceci:

Host hostname1
    HostName 192.168.0.10
    User    olivier
    Port    1234

Host hostname2
    PubkeyAuthentication yes
    IdentityFile ~/.ssh/server_vps1

Ensuite, il vous suffit d’utiliser les commandes suivantes pour vous connecter à vos différents hosts:

ssh hostname1
ssh hostname2

Clé SSH

Ajouter votre clé publique sur un serveur distant:

ssh-keygen -t rsa
cat id_rsa.pub | ssh user@host 'cat >> .ssh/authorized_keys'
ssh user@host

Remote Commands

Il est possible d’exécuter des commandes à distance. Par exemple:

ssh user@host "ls"

Le stdin et stdout sera local


Gérer plusieurs config pour le même serveur

Host option1.host
    HostName host
    User     user1

Host option2.host
    HostName host
    User     user2

Puis pour vous connecter:

ssh option1.host
ssh option2.host

Configurer Github avec protocol SSH

Host repo1.github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/repo1_rsa

Host repo2.github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/repo2_rsa

Puis git clone repo1.github.com


Copier des fichier over SSH avec SCP

scp mon_image.png olivier@remoteserver:/media/data/mon_image.png

# ou dans l'autre sens
scp olivier@remoteserver:/media/data/mon_image.png mon_image.png

# Si votre fichier contient des espaces
file="foo bar/baz"
file=${file// /\\ }
scp vps:"$file" .

Le paramètre port est -P et pas -p contrairement à SSH


Copier votre clé publique SSH sur une machine distante

ssh-copy-id user@remoteserver

Alternative:

cat ~/.ssh/id_rsa.pub | ssh remoteserver 'cat >> .ssh/authorized_keys'

Exécuter une commande à distance

ssh remoteserver "cat /var/log/nginx/access.log" | grep "string_to_find"

| grep ... est exécuté localement


Copier des fichiers à distance avec rsync

rsync -azcrv --progress /home/olivier/data remoteserver:backup/

-z permet d’avoir la compression gzip
-a permet d’être en mode archive; ce qui revient à copier recursivement des fichiers -c check checksum. Si le contenu du fichier est différent, le fichier est recopié -r recursif -v verbose


SSH sur une instance EC2

chmod 400 my-ec2-ssh-key.pem
ssh -i ~/.ssh/my-ec2-key.pem ubuntu@my-ec2-public

Mount remote SSH location comme dossier local avec SSHFS

# apt install sshfs # sur linux
# brew install sshfs # sur OSX
mkdir /tmp/data
sshfs user@remoteserver:/media/data /tmp/data/

# Umount with: 
## On OSX
sudo diskutil umount force /tmp/data

## On Linux
killall sshfs
sudo umount -l /tmp/data

Jump box

ssh -J host1,host2,host3 [email protected]