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 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 , die Anweisungen zu befolgen , wie in der akzeptierte Antwort skizziert 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 nahm an, dass für die Einstellung eines Felds bei jeder Verwendung dieses Felds das Entsperren des Felds mit der angegebenen Passphrase erforderlich ist.
In Fortsetzung der oben verlinkten Anweisungen lief ich dann und erhielt die folgenden:
ssh-copy-id user@IP
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.
quelle
Antworten:
Es scheitert aus dem gleichen Grund
ssh-copy-id
fehl, aus dem es beim ersten Mal fehlgeschlagen ist, dh, Sie haben einen nicht standardmäßigen Speicherort für die Identitätsdatei ausgewählt.Sie können es auf die gleiche Weise beheben, indem Sie
-i /home/user/ssh/keys/server1key
Ihremssh
Befehl Folgendes hinzufügen : Beachten Sie, dass die Clientseite den Speicherort der privaten Schlüsseldatei benötigt.Von
man ssh
Alternativ können Sie einen
~/.ssh/config
Dateieintrag für den Host nach dem Muster von erstellenquelle
~/.ssh/config
, ansonsten verwendet OpenSSH den systemweiten Standard/etc/ssh/ssh_config
. Für den Fall, dass jemand es hilfreich findet, habe ich vor einiger Zeit eine vorgefertigte ssh_config auf meinen GitHub hochgeladen, als Ausgangspunkt für Benutzer, die möglicherweise keine Zeit haben, die ssh_config-Manpage~/.ssh/config
überschreiben die globalen Wertessh_config
, aber nur die Datei deaktiviert die systemweite Konfiguration nicht.Ein weiterer Grund dafür
ssh-copy-id
fehlschlägt, ist, dass der Schlüssel nicht zum SSH-Agenten hinzugefügt wurde.Überprüfen Sie zuerst und starten Sie, ob ausgeführt
ssh-agent
wird:Wenn Sie eine Prozess-ID erhalten, können Sie Ihren Schlüssel hinzufügen:
Mit
-k
fügen Sie den Schlüssel zum Schlüsselbund hinzu.Überprüfen Sie, ob Schlüssel hinzugefügt wurden mit:
ssh-copy-id
sollte jetzt arbeiten.quelle
Ich hoffe, das funktioniert für Sie. "Sshpass -p yourpassword" wird sich automatisch beim Remote-Host anmelden.
[root @ localhost .ssh] # sshpass -p password123 ssh -l root localhost
quelle
Führen Sie einfach 2 Befehle aus:
Lange Antwort:
Und dann:
quelle