La connexion unique SSH est généralement réalisée avec une authentification à clé publique et un agent d'authentification. Vous pouvez facilement ajouter votre clé de machine virtuelle de test à un agent d'authentification existant (voir l'exemple ci-dessous). D'autres méthodes telles que gssapi / kerberos existent mais sont plus complexes.
sshpass
Dans les situations où password
la seule méthode d'authentification disponible est disponible, sshpass peut être utilisé pour entrer automatiquement le mot de passe. Portez une attention particulière à la section CONSIDÉRATIONS DE SÉCURITÉ de la page de manuel . Dans les trois options, le mot de passe est visible ou stocké en texte brut à un moment donné :
Tube anonyme (recommandé par sshpass)
# Create a pipe
PIPE=$(mktemp -u)
mkfifo -m 600 $PIPE
# Attach it to file descriptior 3
exec 3<>$PIPE
# Delete the directory entry
rm $PIPE
# Write your password in the pipe
echo 'my_secret_password' >&3
# Connect with sshpass -d
sshpass -d3 ssh user@host
# Close the pipe when done
exec 3>&-
C'est assez lourd en bash, sans doute plus facile avec les langages de programmation. Un autre processus pourrait être associé à votre pipe / fd avant que le mot de passe ne soit écrit. La fenêtre d'opportunité est assez courte et limitée à vos processus ou à votre racine.
Variable d'environnement
# Set your password in an environment variable
export SSHPASS='my_secret_password'
# Connect with sshpass -e
sshpass -e ssh user@host
Vous et root pouvez lire les variables d'environnement de votre processus (c'est-à-dire votre mot de passe) pendant que sshpass est en cours d'exécution ( cat /proc/<pid>/environ | tr '\0' '\n' | grep ^SSHPASS=
). La fenêtre d'opportunité est beaucoup plus longue mais reste limitée à vos propres processus ou racine, pas aux autres utilisateurs.
Argument de ligne de commande (le moins sécurisé)
sshpass -p my_secret_password ssh user@host
Ceci est pratique mais moins sécurisé que décrit dans la page de manuel. Les arguments de ligne de commande sont visibles pour tous les utilisateurs (par exemple ps -ef | grep sshpass
). sshpass tente de cacher l'argument, mais il existe toujours une fenêtre dans laquelle tous les utilisateurs peuvent voir votre mot de passe passé par argument.
Note latérale
Définissez votre variable bash HISTCONTROL sur ignorespace
ou ignoreboth
et préfixez vos commandes sensibles avec un espace. Ils ne seront pas sauvés dans l'histoire.
Authentification par clé publique SSH
# Generate a key pair
# Do NOT leave the passphrase empty
ssh-keygen
# Copy it to the remote host (added to .ssh/authorized_keys)
ssh-copy-id user@host
La phrase secrète est très importante. Quiconque obtiendra le fichier de clé privée ne pourra pas l'utiliser sans la phrase secrète.
Configurez l'agent d'authentification SSH
# Start the agent
eval `ssh-agent`
# Add the identity (private key) to the agent
ssh-add /path/to/private-key
# Enter key passphrase (one time only, while the agent is running)
Connecter comme d'habitude
ssh user@host
L'avantage est que votre clé privée est cryptée et qu'il vous suffit d'entrer sa phrase secrète une seule fois (via une méthode de saisie plus sûre également).