it-swarm.com.de

SSH ohne Passwort mit nicht standardmäßiger Position der Identitätsdatei

Als Teil eines Startskripts muss ich automatisch mehrere Gnome-Terminal-Fenster öffnen, von denen eines automatisch sendet:

ssh [email protected]

Die Einschränkung dabei ist, dass ich immer noch ein Passwort eingeben muss, um die SSH-Verbindung herzustellen.

Ich möchte, dass mein Skript den Befehl initiiert und die Verbindung herstellt. Insofern habe ich versucht, den Anweisungen in der akzeptierten Antwort zu folgen hier .

Von dem System, von dem aus ich eine Verbindung herstellen möchte, lief ich:

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

Anschließend wurde ich aufgefordert, eine Passphrase einzugeben. Ich ließ dieses Feld leer, da ich mir nicht sicher war, wofür es sein würde, und ging daher davon aus, dass für das Festlegen eines Felds bei jeder Verwendung dieses Felds das Entsperren des Felds mit der angegebenen Passphrase erforderlich sein würde.

In Fortsetzung der oben verlinkten Anweisungen lief ich dann und erhielt die folgenden:

ssh-copy-id [email protected]
ERROR: No identities found

Eine Schnellsuche ergab, dass ich den Speicherort des Schlüssels angeben musste, da er sich nicht am Standardspeicherort befand. Daher habe ich Folgendes behoben:

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

Nachdem Sie nach dem Kennwort des Servers gefragt wurden, wurde der Schlüssel erfolgreich hinzugefügt. Beim Versuch, mich mit "ssh user @ IP" anzumelden, wurde ich dennoch zur Eingabe des Kennworts aufgefordert.

Soweit mir bekannt ist, habe ich die verknüpften Anweisungen korrekt befolgt, sodass entweder etwas fehlt oder eine vorhandene Konfiguration mich daran hindert, dies zum Laufen zu bringen.

Beide Systeme verwenden 18.04 und openssh.

15
hiigaran

Es schlägt aus demselben Grund fehl, aus dem ssh-copy-id das erste Mal fehlgeschlagen ist - d. H., Weil Sie einen nicht standardmäßigen Speicherort für die Identitätsdatei ausgewählt haben.

Sie können das Problem auf die gleiche Weise beheben, indem Sie -i /home/user/ssh/keys/server1key zu Ihrem ssh -Befehl hinzufügen. Beachten Sie, dass die Clientseite den Speicherort der Schlüsseldatei privat benötigt.

Aus 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.

Alternativ möchten Sie möglicherweise einen ~/.ssh/config -Dateieintrag für den Host gemäß den Anweisungen von erstellen

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

Ein weiterer Grund, warum ssh-copy-id fehlschlägt, ist, dass der Schlüssel nicht zum ssh-Agenten hinzugefügt wurde.

Überprüfen Sie zunächst, ob ssh-agemt ausgeführt wird, und starten Sie es

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

Wenn Sie eine Prozess-ID erhalten, können Sie Ihren Schlüssel hinzufügen

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

Mit -k fügen Sie den Schlüssel zum Schlüsselbund hinzu

Überprüfen Sie mit, ob Schlüssel hinzugefügt wurden

$ ssh-add -l

Ssh-copy-id sollte jetzt funktionieren.

2
Martijn