Secure ShellDémarrer avec Secure Shell


Remarques

SSH (Secure Shell) est un protocole cryptographique pour la communication point à point sur le réseau non sécurisé (Internet). Il rend obsolètes les anciens protocoles utilisés dans le rlogin ( rlogin , rsh , telnet ).

Il est généralement utilisé pour se connecter à des serveurs distants, à des machines virtuelles ou à des conteneurs dans un centre de données ou dans votre cloud privé (moteur de calcul Google, AWS, ...). Mais il est également couramment utilisé en conjonction avec git pour accéder et mettre à jour votre référentiel de manière sécurisée et facile à l'aide de clés publiques plutôt que de mots de passe.

Il devrait également mentionner tous les sujets importants dans ssh, et établir un lien avec les sujets connexes. La documentation de ssh étant nouvelle, vous devrez peut-être créer des versions initiales de ces rubriques connexes. FAIRE

Versions

Version Notes de version Date de sortie
OpenSSH 7.3p1 Dernière version 2016-08-01
OpenSSH 7.2p2 2016-03-09
OpenSSH 7.1p2 2016-01-14
OpenSSH 7.1 2015-08-21
OpenSSH 7.0 2015-11-08
OpenSSH 6.9 2015-07-01
OpenSSH 6.8 2015-03-18

Ajout de votre clé publique à la liste des clés autorisées de l'utilisateur du serveur

Pour que ssh se ssh à un serveur, la clé publique de votre identité doit être ajoutée à la liste des clés approuvées. Le plus souvent, cela se fait par utilisateur:

ssh-copy-id -i ~/.ssh/<identity>.pub <user>@<hostname>
 

Ce qui peut aussi être fait manuellement:

cat ~/.ssh/<identity>.pub | ssh <user>@<hostname> 'cat >> ~/.ssh/authorized_keys'
 

Après avoir fait cela, vous devriez pouvoir vous connecter sans avoir à fournir le mot de passe de l'utilisateur lorsque vous transmettez le fichier d'identité à l'appel ssh .

Fichier de configuration

Les fichiers de configuration OpenSSH sont utilisés pour la configuration qui doit être appliquée chaque fois que le client ssh est exécuté. La plupart des options de ligne de commande sont possibles dans les fichiers de configuration.

OpenSSH utilise la configuration des sources suivantes dans l'ordre:

  1. Options de ligne de commande
  2. Fichier de configuration de l'utilisateur ~/.ssh/config
  3. Fichier de configuration système /etc/ssh/ssh_config

Les options de configuration sont répertoriées une par une dans les fichiers de configuration.

# This is a comment.

# Parameter can be specified like this, separated with white space.
StrictHostKeyChecking ask

# Or parameter key and value may be separated with white space and =.  
ForwardX11 = yes

# The parameter value can be quoted if it contains white space.    
IdentityFile "/file system/path with/white space"
 

La liste complète des paramètres de configuration possibles est disponible ici .

L'une des fonctionnalités les plus utiles du fichier de configuration est qu'il peut être divisé en fonction du nom d'hôte ou de l'adresse. De cette façon, vous pouvez avoir différentes configurations pour différents hôtes.

# Based on host name.    

Host host1.domain.com
    User user1

Host host2.domain.com
    User user2

# Or wildcard matching name or ip.

Host *elastic-cloud.com 10.201.4.?
    User user3
 

Connexion depuis un script en utilisant un mot de passe

Lorsque vous avez vraiment besoin de scripter la connexion ssh , transférer le mot de passe dans la commande ssh ne fonctionne pas ( echo passw0rd | ssh host ). C'est parce que le mot de passe n'est pas lu depuis l'entrée standard, mais directement depuis TTY (téléscripteur, téléscripteur, télétype pour des raisons historiques).

Mais il existe sshpass outil sshpass qui fonctionne autour de ce problème. Il peut lire le mot de passe du paramètre, du fichier ou de la variable d'environnement. Mais notez qu'aucune de ces options ne répond aux exigences de sécurité pour un mot de passe!

$ sshpass -p passw0rd ssh host
$ sshpass -f /secret/filename ssh host
$ SSHPASS=passw0rd sshpass -e ssh host
 

Les options de ligne de commande peuvent être vues par d'autres utilisateurs sous ps (pendant l'exécution, elles sont masquées, mais pas pendant le démarrage et vous ne pouvez pas vous y fier):

... 23624  6216 pts/5    Ss   Aug30   0:00  \_ /bin/bash
... 12812  1988 pts/5    S+   08:50   0:00  |   \_ sshpass -p passw0rd ssh host
... 45008  5796 pts/15   Ss+  08:50   0:00  |       \_ ssh host
 

Notez que les variables environemnet d'un processus sont également accessibles par d'autres processus sur le système utilisant le /proc/PID/environ .

Enfin, stocker le mot de passe dans le fichier peut sembler être la meilleure idée possible, mais utiliser les clés comme décrit dans les autres exemples est la meilleure manière d’utiliser ssh .

Créer votre clé SSH

Vous pouvez créer votre clé ssh en utilisant ssh-keygen, c'est un programme qui fait partie de l'installation de ssh. Pour cela, il suffit de l'exécuter et de suivre les instructions à l'écran.

Voici un exemple:

$ ssh-keygen
Generating public/private rsa key pair.
 

Le répertoire par défaut où votre paire de clés ssh sera enregistrée se trouve dans le dossier .ssh de votre répertoire de base (vous pouvez le modifier en spécifiant un chemin valide) et le nom par défaut de la paire de clés est id_rsa pour la clé privée et id_rsa.pub pour la clé publique:

Enter file in which to save the key (/home/nasreddine/.ssh/id_rsa): /home/my_folder/my_ssh_key
 

Vous pouvez protéger votre clé SSH contre toute utilisation non autorisée en saisissant un mot de passe. Ceci est facultatif mais il est recommandé d'utiliser une phrase de passe. Notez que, comme pour tout autre programme de commande, lors de la saisie de votre phrase secrète, elle n’affiche rien à l’écran, mais elle est enregistrée:

Enter passphrase (empty for no passphrase):
Enter same passphrase again:
 

Une fois que vous avez entré votre phrase secrète, ssh-keygen générera une clé et l'enregistrera dans le chemin que vous avez choisi:

Your identification has been saved in /home/my_folder/my_ssh_key.
Your public key has been saved in /home/my_folder/my_ssh_key.pub.
 

Avaient fini. Maintenant, notre clé ssh est prête à être utilisée.

entrer la description de l'image ici

Comment SSH dans une machine

Pour vous connecter à un compte d'utilisateur sur une machine avec SSH, vous pouvez utiliser la commande ssh username@ip_address . Il vous demandera un mot de passe. Si vous tapez le mot de passe correct, vous serez connecté au shell de cet utilisateur sur cette machine. Sinon, il vous demandera à nouveau le mot de passe.

Par exemple

root@dev10:~# ssh root@10.11.50.3
root@10.11.50.3's password: 
Welcome to Ubuntu 16.04 LTS (GNU/Linux 4.4.0-31-generic x86_64)
    
Last login: Fri Jul 22 18:33:27 2016 from 10.11.50.10
root@dev2:~# 
 

Si vous souhaitez utiliser une clé ssh spécifique pour vous connecter à une machine, utilisez le nom d'utilisateur ssh -i /path/to/ssh_secret_key username@host

Lorsque vous vous connectez à une machine pour la première fois, il vous sera demandé de vérifier l' empreinte de la machine cible. Il s’agit d’un mécanisme de sécurité permettant d’éviter une attaque de type « man-in-the-middle» . Vous pouvez voir l'empreinte de la machine cible en émettant cette commande sur la machine cible.

ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ecdsa_key.pub
 

Vous pouvez taper "oui" si les deux sont identiques. Il procédera à l'invite de mot de passe.

Exemple:

root@dev10:~# ssh root@10.11.50.3
The authenticity of host '10.11.50.3 (10.11.50.3)' can't be established.
ECDSA key fingerprint is dd:a3:de:cd:5b:01:cd:0b:b6:bc:b3:09:c2:c8:1a:68.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.11.50.3' (ECDSA) to the list of known hosts.
root@10.11.50.3's password: 

Last login: Fri Jul 22 17:45:09 2016 from 10.11.1.71
root@dev2:~# 
 

Installation ou configuration

Version gratuite de l'implémentation du protocole SSH, OpenSSH est disponible dans toutes les distributions Linux. Il se compose des packages serveur et client.

Installation

Sur Linux basé sur Debian, vous pouvez installer openssh utilisant

# apt-get install openssh-server openssh-client
 

Sur RHEL / CentOS, vous devez utiliser yum :

# yum install openssh-server openssh-clients
 

Fedora actuel utilise dnf au lieu de yum .

Sur Arch Linux, utilisez pacman:

# pacman -S openssh
 

Sur OSX, le openssh devrait déjà être installé.

Si vous souhaitez utiliser une version plus récente, vous devez installer le openssh de brew:

# brew install openssh --with-brewed-openssl --with-keychain-support
 

Instructions TODO pour Windows

Installer

Le client openssh ne nécessite aucune configuration particulière et est prêt à être utilisé juste après l’installation. Vous pouvez essayer d'exécuter ssh remote , où la remote est l'hôte distant exécutant le serveur ssh .

Le serveur openssh est généralement démarré après l'installation et la configuration par défaut est appliquée. Sinon, vous pouvez le démarrer sur des systèmes basés sur systemd en utilisant

Sur Linux basé sur Debian avec systemd:

# systemctl start ssh
 

Sur RHEL / CentOS / Fedora et Arch Linux:

# systemctl start sshd
 

Ou sur des systèmes novateurs utilisant

# service sshd start
 

Configuration

Le fichier openssh des fichiers de configuration sous /etc/ssh/ . Le client lit également la configuration du client dans ~/.ssh/config . Le serveur utilise un fichier sshd_config , qui contient la plupart des valeurs par défaut et contient des paires clé-valeur simples. Exemple:

Protocol 2
PasswordAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY
X11Forwarding yes
Subsystem    sftp    /usr/libexec/openssh/sftp-server
 

Agent SSH

Si vous avez défini une longue phrase secrète et que vous ne souhaitez pas continuer à la saisir chaque fois que vous souhaitez vous connecter au serveur, vous pouvez utiliser SSH-Agent pour stocker votre phrase secrète lorsque vous êtes connecté à votre ordinateur.

Démarrez l'agent ssh en arrière-plan:

eval "$(ssh-agent -s)"
# Agent pid 59566
 

Et ajoutez votre clé au ssh-agent, vous serez invité à saisir votre phrase secrète:

ssh-add ~/.ssh/matrix.ac
# Enter passphrase for /home/osaka/.ssh/matrix.ac: 
# Identity added: /home/osaka/.ssh/matrix.ac (/home/osaka/.ssh/matrix.ac)
 

Terminé. Connectez-vous maintenant avec ssh user@matrix.ac et vous ne devriez pas avoir à saisir votre phrase secrète. Vous pouvez étendre cela en utilisant des programmes tels que gnome-keyring / seahorse, keychain et autres gestionnaires de clés.