Les instructions suivantes indiquent comment automatiser la connection à une machine distante.
La connection se fait depuis une machine cliente (le client) vers une machine distante (le serveur).
Nous allons :
Cette partie est à faire sur le serveur dans le cas où celui-ci est en interface graphique ou que le serveur SSH n’est pas installé.
sudo apt-get update
$ apt-cache search ssh | grep server
openssh-server - Serveur Secure Shell (SSH), pour un accès sécurisé à partir de machines distantes
sudo apt-get install openssh-server
Le client SSH nommé Putty peut être téléchargé depuis ce lien
Le client git
pour Windows intègre un client
ssh
.
Il est disponible en téléchargeant la version Windows depuis la page de téléchargement de Git-Bash.
Pour se connecter à la machine, depuis la ligne de commande git-bash, entrez la commande suivante:
ssh <utilisateur>@<ip-de-la-machine>
Remplacer:
Dans le Windows Store, installer Ubuntu. Une fois installé, utiliser la commande ssh donnée au paragraphe précédent.
Cette création se fait sur le client.
En utilisant PuttyGen, vous pouvez générer une clef SSH
Pour cela, cliquer sur le bouton Generate
puis déplacer
la souris pendant quelques secondes jusqu’à ce que la barre de
progression soit complétée.
Une fois cela fait:
Save private key
dans un emplacement de votre disquessh-rsa
et jusqu’en
bas de la zone de sélection qui peut dépasser la zone visible)Sur le client git-bash
la commande à
utiliser est la suivante pour une clé ED25519:
$ ssh-keygen -t ed25519
La commande affiche:
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/lauhub/.ssh/id_rsa):
Ne rien saisir (laisser la valeur par défaut) pour la question
Enter file in which to save the key
et appuyez sur la
touche Entrée
.
Ensuite, choisir une passphrase:
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/lauhub/.ssh/id_ed25519.
Your public key has been saved in /Users/lauhub/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:qnMr1UW+zi3msGd/2UWfkqfq/ZkIi6mZzqeDLGFghh8 commentaire
The key's randomart image is:
+--[ED25519 128]--+
| |
| . |
|. o |
|.+E o .|
|o. .. .S. . ..o|
| .o ... . oo o|
| . o.o oo o +o.|
| .o+o.o+X =.+ +|
| o+oO*Bo*O+.+ |
+----[SHA256]-----+
Vous obtenez deux fichiers:
~/.ssh/id_ed25519
~/.ssh/id_ed25519.pub
Comme indiqué par ces deux messages d’avertissement:
Your identification has been saved in /Users/lauhub/.ssh/id_ed25519.
Your public key has been saved in /Users/lauhub/.ssh/id_ed25519.pub.
D’autres algorithmes de chiffrement existent. Voici ces algorithmes par ordre décroissant de sécurité
Pour une clé RSA, on utilise la commande suivante :
$ ssh-keygen
Les autres étapes sont identiques par rapport à la clé ED25519
Le niveau de sécurité de l’algorithme RSA est moins bon que l’algorithme ED25519.
Il est donc préférable d’utiliser ce dernier aujourd’hui.
Le niveau de sécurité de cet algorithme est acceptable.
$ ssh-keygen -t ecdsa
Les autres étapes sont identiques par rapport à la clé ED25519
Suivez les instructions du paragraphe Installation d’une clef publique
La clef publique est la serrure qui permettra de se connecter à un serveur en utilisant la clef privée qui lui est associée.
Lancer la commande :
ssh-copy-id utilisateur@ip-ou-adresse-serveur
Pour copier la clef manuellement
Récupérez le contenu de la clef publique et copiez le:
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/tAFES1cFMs7O4mVJql7C4aLW/67F6gDyXiE2JOcQIk8+WeqSyMAegOHw0OsdhnAQdf5iDPI19UQgD+kES6gHG7ZBLg+sw3v0yloAf4W1HBdHVj75HTvx0i84d7WH0Q1RuBTgq52ni7IfmvZfhHaMaRHkRcY45cfX+BY2vh4y6BwYF0bmQWOlJUJgpMaJx9lZ2ByedCBlbnYRcdcKBASSHrL7TWR7twJyF321+B6W03BIlvwF8RupROVMBSn+56BIQ27HR4DKe/VL4FOpGAF4LM9vLEoG/9J3kuMWhwk44B3ZW7GTKAvFgmFTT7YH/gXwK4+lppJuGhPMqYLQSyzV commentaire
Copiez ce contenu (y compris ssh-rsa
et
commentaire
).
Ensuite:
mkdir -p ~/.ssh
cd ~/.ssh
authorized_keys
:
nano authorized_keys
Connexion au serveur
Dans le menu connexion, il faut définir la clef à utiliser:
Private key file for authentication
Connectez-vous directement:
$ ssh user@nom_ou_adresse_serveur
La passphrase vous est demandée. Entrez-la.
Vous êtes maintenant connecté au serveur.
Vous pouvez maintenant vous déconnecter pour configurer l’agent (voir le paragraphe correspondant ci-dessous)
Déconnectez vous du serveur pour réaliser les opérations suivantes.
L’agent permet de conserver en mémoire vive la clé privée déverrouillée :
Ce tutoriel indique comment configurer Pageant
(l’agent
Putty de gestion des passphrases): putty_conf
Dans ce qui suit, si vous utilisez PuTTY ou que vous tentez de coller avec la souris dans Vim, celui-ci refusera de coller le contenu de votre presse-papier.
Dans Vim pour désactiver la souris temporairement, appuyez d’abord sur la touche : puis saisir la commande:
set mouse-=a
La page suivante donne plus d’instructions pour désactiver la souris de manière permanente dans Vim: Disable vim automatic visual mode using mouse | Varesano.net
Le fichier à éditer est le fichier .bashrc
Sur le client, créer le fichier .bash_profile
:
touch .bash_profile
Selon votre distribution, le fichier à modifier peut être différent.
Ce peut être:
.bash_profile
.bashrc
Éditer le fichier souhaité (.bash_profile
ou
.bashrc
ou …) et ajoutez les lignes suivantes à la fin du
fichier :
SSH_ENV="$HOME/.ssh/environment"
function start_agent {
echo "Initialising new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add;
}
# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
#ps ${SSH_AGENT_PID} doesn't work under cywgin
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
Dans le cas de dossier HOME partagé entre plusieurs serveurs, mettre ceci à la place de la première ligne:
SSH_ENV="$HOME/.ssh/environment_$HOSTNAME"
Sous MacOS, l’agent est démarré par défaut. Pour ajouter une clé, voir cette page et cette page
Pour charger la configuration nouvellement éditée, exécuter la commande suivante (cette opération s’appelle sourcer le fichier édité) :
# Fichier .bash_profile
. .bash_profile
# Fichier .bashrc
. .bashrc
Voir help source
pour plus d’information sur cette
dernière opération.
Se déconnecter du terminal et le relancer pour vérifier si l’agent
ssh est fonctionnel (il ne devrait pas vous demander la
passphrase
à nouveau si vous vous connectez à un serveur
via ssh).
En cas de non fonctionnement, voir: https://github.com/gnhuy91/til/issues/26
Si jamais la clef n’a pas été déverrouillée au démarrage de l’agent, taper la commande suivante:
start_agent
Puis relancer les vérifications.
Sur le client, créer le fichier nommé ~/.ssh/config
Editer ce fichier selon le modèle suivant:
Host aliasversleserveur
User utilisateurserveur
Hostname adresseip_ou_adressereseau
Exécuter la commande suivante:
ssh aliasversleserveur
Host *
AddKeysToAgent yes
ServerAliveInterval 300
ServerAliveCountMax 2
IdentitiesOnly yes
IdentityFile ~/.ssh/id_ed25519
Host aliasversleserveur
User utilisateurserveur
Hostname adresseip_ou_adressereseau
Parfois, le serveur SSH continue à demander le mot de passe.
Dans ce cas, vérifier les permissions:
~
: ils doivent interdire l’écriture aux
autres utilisateurs (go-w
).ssh
: il ne doit être lisible que par
l’utilisateur propriétaire (700
)Références: