Ich habe versucht, ein Shell-Skript zu schreiben, das die automatische Anmeldung an einem SSH-Server mit dem im Skript angegebenen Kennwort ermöglicht. Ich habe folgenden Code geschrieben:
set timeout 30
/usr/bin/ssh -p 8484 [email protected]
expect
{
"[email protected]'s password"
{
send "password\r"
}
}
Dieser Code wird nicht ordnungsgemäß ausgeführt, fordert jedoch zur Eingabe des Kennworts auf. Kann mir bitte jemand bei der Lösung helfen?
Antworten:
Ich habe einmal ein
expect
Skript geschrieben, um mich bei einem SSH-Server anzumelden (wie in Ihrem Fall), und mein Skript sah ungefähr so aus:Ich denke, vielleicht
interact
fehlt das in deinem Drehbuch.quelle
cd
undls
und den Inhalt der Datei als auch lesen. Ist es möglich, nach der Interaktion zu tun? Bitte antworten Siels
Befehl nach dem Login senden . Führen Sie beispielsweise nach dem Senden des Kennworts einenexpect
Befehl mit dem Eingabeaufforderungstext aus (um sicherzustellen, dass Sie angemeldet sind)send "ls\r"
. All dies geht vorinteract
.file_list
nach dem Beenden von der lokalen EingabeaufforderungDu machst es falsch. Sie möchten ein passwortloses SSH-Schlüsselpaar generieren und dann (sofern der Server die RSA-Schlüsselauthentifizierung unterstützt) einsteigen, ohne ein Passwort für alle eingeben zu müssen. Dies ist ein Sicherheitsrisiko, wenn Ihr privater Schlüssel an einem Ort aufbewahrt wird, an dem er gestohlen werden könnte.
Folge diesen Schritten:
mkdir -p ~/.ssh
cd ~/.ssh
ssh-keygen -type dsa -i mysshkeys
In Ihrem
~/.ssh
Verzeichnis befinden sich nun zwei Dateienmysshkey.pub
undmysshkey
.mysshkey.pub
Ist Ihr öffentlicher Schlüssel, kann dieser sicher auf Remote-Servern abgelegt werden.mysshkey
Ist Ihr privater, kennwortloser Schlüssel, ist es nicht sicher, ihn auf Remote-Servern abzulegen (oder an einem Ort, an dem jemand anderes eine Kopie erhalten könnte).Auf dem Server, in den Sie SSH möchten:
mkdir -p ~/.ssh
mysshkey.pub
in~/.ssh/authorized_keys
~/.ssh/authorized_keys
heißtchmod
‚d600
Um es nun auf Ihrem lokalen Computer in Aktion zu setzen, führen Sie den folgenden Befehl aus:
Und Sie werden angemeldet, ohne zur Eingabe eines Passworts aufgefordert zu werden.
Dies ist eine sehr bevorzugte Methode zur Verwaltung automatisierter Anmeldungen, da Sie Ihr Kennwort nicht an mehreren Stellen fest codieren müssen, die aktualisiert werden müssen, wenn Sie es jemals ändern.
quelle
Auf Debian-basierten Distributionen bietet das
sshpass
Paket eine einfachere Möglichkeit, das zu tun, was Sie wollen. Das Paket ist für viele andere beliebte Distributionen verfügbar. Sie müssen es zuerst einrichten:Rufen Sie dann den SSH-Befehl über ein Skript wie das folgende auf:
Dies bietet mehr Flexibilität, z. B. wenn Sie ein anderes Gebietsschema verwenden oder das Kennwort ändern müssen, als wenn Sie Lösungen verwenden
expect
.quelle
Installieren Sie zuerst den sshPass
sudo apt-get install sshpass
Erstellen Sie dann einen Alias in der .bashrc-Datei als
Laden Sie nun Ihre geänderte .bashrc-Datei von neu
source ~/.bashrc
Sie sind jetzt fertig.
Jetzt können Sie das ssh mit dem oben erstellten Alias
sshLogin
im Terminal ausführen .quelle
Sie können dies verwenden:
quelle
Alles was Sie brauchen, um einen Hash-Schlüssel zu erstellen und auf Ihrem PC zu speichern
Tipp einfach
dann eintreten
Dann normal einloggen mit
Jetzt brauchen Sie kein Passwort
quelle
ssh-copy-id
Befehl hin, den sonst niemand erwähnte. Ich stimme dem zu.SSH Passwordless Login mit SSH Keygen in 5 einfachen Schritten :
Umgebungssetup:
Schritt 1: Authentifizierung von SSH-Kegen-Schlüsseln unter - (192.168.0.12)
Melden Sie sich zuerst mit einem Benutzer beim Server 192.168.0.12 an und generieren Sie mit dem folgenden Befehl ein Paar öffentlicher Schlüssel.
Schritt 2: Erstellen eines SSH-Verzeichnisses unter - 192.168.0.11
Verwenden Sie SSH vom Server 192.168.0.12, um eine Verbindung zum Server 192.168.0.11 herzustellen, und erstellen Sie das SSH-Verzeichnis unter diesem Server mithilfe des folgenden Befehls.
Schritt 3: Hochladen von generierten öffentlichen Schlüsseln auf - 192.168.0.11
Verwenden Sie SSH vom Server 192.168.0.12 und laden Sie den neu generierten öffentlichen Schlüssel (id_rsa.pub) auf den Server 192.168.0.11 im Benutzerverzeichnis
.ssh
als Dateinamen authorized_keys hoch .Schritt 4: Festlegen von Berechtigungen für - 192.168.0.11
Aufgrund unterschiedlicher SSH-Versionen auf Servern müssen Berechtigungen für
.ssh
Verzeichnis undauthorized_keys
Datei festgelegt werden.Schritt 5: Login von 192.168.0.12 auf 192.168.0.11 Server ohne Passwort
Ab sofort können wir uns als Sheena User vom Server 192.168.0.12 als tecmint User ohne Passwort bei 192.168.0.11 einloggen.
quelle
chmod 700 id_rsa
im Verzeichnis .ssh in der lokalen (Client, dh 192.168.0.12 in Ihrem Beispiel) Server: Problem gelöstWie bereits in anderen Antworten beschrieben, verwende ich es auch,
sshpass
aber ich kombiniere es mit demread
Befehl, um mein Passwort in einer temporären Umgebungsvariablen zu speichern. Auf diese Weise wird mein Passwort niemals in Klartext geschrieben. Hier ist der einzeilige Befehl, den ich verwende:Danach müssen Sie Ihr Passwort eingeben (nichts erscheint auf dem Bildschirm) und dann die Eingabetaste drücken, um die Verbindung zu öffnen.
quelle
Ich habe das kürzlich gemacht, das kann dir helfen:
Wenn dies nicht funktioniert, müssen Sie Schlüssel auf dem anderen Computer generieren, mit dem Sie eine Verbindung herstellen möchten
Es generiert private und öffentliche Schlüssel und fragt Sie nach einem Speicherort. Leer lassen. Es speichert die Schlüssel im .ssh-Ordner. Standardmäßig werden Sie nach einer Passphrase gefragt Name des öffentlichen Schlüssels für 'authorized_keys'
Dadurch wird der Benutzer zur Liste hinzugefügt. Wechseln Sie in das Ausgangsverzeichnis, geben Sie die Berechtigung und starten Sie die sshd-Dienste neu
Jetzt müssen Sie den privaten Schlüssel auf das System an der Stelle verschieben, an der Sie den Befehl ssh ausführen möchten. Anschließend können Sie eine Verbindung mit herstellen
Wenn auch das nicht funktioniert, gehen Sie in / etc / ssh und öffnen Sie sshd_config mit dem vim-Editor. Prüfen Sie, ob pubkeyAuthenticatoin auf yes eingestellt ist oder nicht. Wenn dies nicht der Fall ist, starten Sie die sshd-Dienste neu und probieren Sie es aus, es wird definitiv funktionieren .
quelle
Das erste Argument ist der Hostname und das zweite das Passwort.
Ausführung: ./script.expect
quelle