web-dev-qa-db-fra.com

SSH sans mot de passe avec emplacement de fichier d'identité autre que celui par défaut

Dans le cadre d’un script de démarrage, je dois ouvrir automatiquement plusieurs fenêtres gnome-terminal, l’un de ces terminaux envoyant automatiquement:

ssh [email protected]

La limitation avec ceci est que je dois toujours taper un mot de passe pour établir la connexion SSH.

Ce que je veux faire, c'est que mon script lance la commande et complète la connexion. Dans cette mesure, j'ai tenté de suivre les instructions décrites dans la réponse acceptée ici .

À partir du système à partir duquel je souhaite me connecter, j'ai exécuté:

ssh-keygen
Enter file in which to save the key: /home/user/ssh/keys/server1key

Cela m'a ensuite incité à entrer une phrase secrète. Je laissais ce champ vide, je ne savais pas trop à quoi il servirait. Je pensais donc que pour en régler un, il faudrait le déverrouiller avec la phrase secrète à chaque fois que je l'utilisais.

En continuant avec les instructions liées ci-dessus, j'ai ensuite couru et reçu les informations suivantes:

ssh-copy-id user@IP
ERROR: No identities found

Une recherche rapide a révélé que je devais spécifier l'emplacement de la clé, car ce n'était pas dans l'emplacement de sauvegarde par défaut. J'ai donc corrigé cela:

ssh-copy-id -i /home/user/ssh/keys/server1key.pub [email protected]

Après avoir demandé le mot de passe du serveur, la clé a été ajoutée avec succès. Cependant, lors de la tentative de connexion avec "ssh user @ IP", le mot de passe m'a toujours été demandé.

Autant que je sache, j'ai correctement suivi les instructions liées. Par conséquent, quelque chose me manque ou une configuration existante m'empêche de le faire fonctionner?

Les deux systèmes utilisent 18.04 et openssh.

15
hiigaran

Il échoue pour la même raison que ssh-copy-id a échoué pour la première fois, c’est-à-dire parce que vous avez choisi un emplacement autre que celui par défaut pour le fichier d’identité.

Vous pouvez le résoudre de la même manière en ajoutant -i /home/user/ssh/keys/server1key à votre commande ssh - notez que le côté client a besoin de l'emplacement du fichier de clé private.

De man ssh

 -i identity_file
         Selects a file from which the identity (private key) for public
         key authentication is read.  The default is ~/.ssh/identity for
         protocol version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa,
         ~/.ssh/id_ed25519 and ~/.ssh/id_rsa for protocol version 2.

Vous pouvez également créer une entrée de fichier ~/.ssh/config pour l’hôte suivant les lignes suivantes:

Host            somename
Hostname        192.168.1.3
User            user
IdentityFile    /home/user/ssh/keys/server1key
34
steeldriver

Une autre raison de l'échec de ssh-copy-id est que la clé n'est pas ajoutée à l'agent ssh.

Commencez par vérifier et démarrer si ssh-agemt est en cours d'exécution

$ eval "$(ssh-agent -s)"

Si vous obtenez un identifiant de processus, vous pouvez ajouter votre clé

$ ssh-add -k /home/user/ssh/keys/server1key

Avec -k vous ajoutez la clé au trousseau

Vérifiez si les clés sont ajoutées avec

$ ssh-add -l

Ssh-copy-id devrait fonctionner maintenant.

2
Martijn