J'ai actuellement deux machines distantes auxquelles je me connecte. D'une part, j'utilise une clé privée avec phrase secrète, et une autre, j'utilise un mot de passe root.
Maintenant, lorsque je veux me connecter à la machine avec une authentification par mot de passe root, ssh me demande tout d’abord de saisir la phrase secrète de la machine, quelle clé privée se trouve dans mon répertoire ~/.ssh, puis de saisir le mot de passe de la machine à laquelle j suis connectign avec le mot de passe root.
Existe-t-il un moyen de sauvegarder des sessions et des options de connexion, par exemple comme dans Putty?
Vous pouvez utiliser un fichier ssh-config par utilisateur situé dans
~/.ssh/config
ou un système global dans
/etc/ssh/ssh_config
qui stocke les paramètres de base pour chaque connexion.
Exemple:
Host example_Host
User foo
HostName example.com
IdentityFile ~/.ssh/foo.key
Port 23421
Ayant ceci en place, appelant
ssh example_Host
ouvrira une connexion ssh à example.com sur le port 23421, en utilisant les utilisateurs foo et foo.key pour l'authentification.
Pour une explication détaillée, consultez la page de manuel de ssh:
man ssh
N'oubliez pas de définir les autorisations appropriées sur le fichier de configuration:
chmod 600 ~/.ssh/config
Il y a ~/.ssh/config
comme indiqué dans les pages de manuel pour ssh
. Il est bien décrit ici et dans man ssh_config
et également à plusieurs reprises sur askubuntu.
TL; DR:
# to preserve connections:
ControlMaster auto
ControlPath ~/.ssh/controlmasters/%r@%h:%p
ControlPersist 20m
# to provide correct keys, users, IPs and use aliases
Host yourHost
Hostname IPaddress
User user1
IdentityFile ~/.ssh/id_ecdsa
Host yourSecondHost
Hostname IP2
User user2
IdentityFile ~/.ssh/id_rsa
Si vous ne voulez pas écrire de phrases secrètes, il existe ssh-agent
, où vous pouvez ajouter les clés de votre session:
eval `ssh-agent`
ssh-add ~/.ssh/id_ecdsa
# insert passphrase once
ssh yourHost
# will ask only for password
# next ssh connections will not ask for