Frage

Gibt es eine Möglichkeit, ein Passwort übergeben automatisch ssh. Ich möchte automatisch an einen Server ssh ohne mit Public-Key-Authentifizierung oder Skripte erwarten, von irgendwie ssh bekommen das Passwort von stdin oder einer Datei zu lesen.

Der Grund, dass es so sein muss, ist, dass Ich mag würde meine Dateien auf einen Server mit rsync / ssh sichern als cron-Job ausgeführt wird. Dieser Server besteigt mein Home-Verzeichnis nach es authentifiziert mich, so Public-Key-Authentifizierung mit nicht funktioniert, da ~ / .ssh nicht verfügbar ist, bis die Anmeldung erfolgreich ist. erwarten (1) ist nicht in Frage, weil ich möchte, dass es als cron-Job laufen, und da Cron-Jobs unter einem Terminal die Kombination nicht laufen von erwarten / ssh funktioniert einfach nicht. Ich habe keine Root-Zugriff auf den Server haben, und es wäre schwierig, die Administratoren zu erhalten, um Änderungen vorzunehmen, um die Art und Weise Dinge dort arbeiten.

War es hilfreich?

Lösung

Mit sshpass.

Wenn zum Beispiel Passwort ist in password.txt Datei:

sshpass -fpassword.txt ssh username@hostname

(aus der Antwort auf eine ähnliche Frage )

Andere Tipps

  

erwarten indiskutabel ist, weil ich es als cron-Job ausgeführt werden soll,   und da Cron-Jobs nicht unter einem Terminal die Kombination laufen erwarten / ssh   nur nicht funktioniert

Sie können Skripts ausführen von cron erwarten, zumindest können Sie mit Bibliotheken wie „pexpect“ für Python erwarten. Ich dies nur getestet, um zu bestätigen, einen pexpect scp / ssh-Skript von cron ausgeführt wird, und ich konnte erfolgreich eine Datei von einem Python-Skript scp in cron ausgeführt wird.

Beispielcode:

#!/usr/bin/python

import pexpect

FILE="/path/to/file"
REMOTE_FILE=""
USER="user"
HOST="example.com"
PASS="mypass"
COMMAND="scp -oPubKeyAuthentication=no %s %s@%s:%s" % (FILE, USER, HOST, REMOTE_FILE)

child = pexpect.spawn(COMMAND)
child.expect('password:')
child.sendline(PASS)
child.expect(pexpect.EOF)
print child.before

Anstatt vorbei Ihr Passwort ein öffentliches / privates Schlüsselsystem verwenden. Fügen Sie den öffentlichen Schlüssel für eine Maschine zur autorisierten Schlüssel-Liste auf allen Maschinen, die Sie eine Verbindung herstellen möchten. Mit dieser Methode SSH verwenden, können die Schlüssel automatisch validieren und kein Kennwort erforderlich ist.

Sie können Anweisungen finden Sie hier: http://linuxproblem.org/art_9.html

Da ich gerade gelesen, die Frage genauer, könnte man sich nach einem anderen SSH-Client aussehen soll, die ohne Interaktion mit dem Benutzer-Passwort-Authentifizierung unterstützt. Ich schnelle Google-Suche angedeutet, dass sie existieren ( http: / /www.derkeiler.com/Newsgroups/comp.security.ssh/2004-12/0134.html )

Related Stackoverflow Fragen:

Diese Diskussion Gespräche über das, was Sie zu tun versuchen:

http://cygwin.com/ml/cygwin/2004-02 /msg01449.html

Wenn Sie nicht der Administrator haben ein lokales Verzeichnis erstellen für Sie, dann wird dies nicht funktionieren.

SSH benötigt einen „Sprung des Glaubens“ Manipulation der anfänglichen Handshake gegen Zukunft zu sichern. (Sie vertrauen zunächst den Schlüssel der Server gibt Ihnen)

Ein derzeit verfügbare, aber nicht gut bekannte Ansatz ist SSH-SRP zu verwenden. Dies nutzt die gegenseitige Passwort Wissen sowohl Sie authentifiziert und Sitzungsverschlüsselungsschlüssel erforderlich bieten, um sicher Ihre SSH-Sitzung zu verschlüsseln.

Es ist viel sicherer als SSH anfängliche „vertraut mir“ und erfordert keine langfristige Speicherung von Schlüsseln.

Erwarten Sie nicht verwenden, pexpect oder dergleichen in einem Passwort zu füttern. Wenn Sie das tun, hat Ihr Passwort irgendwo in Klartext sein, was eigentlich sein kann, weniger sicherer als ein passwordless öffentliches / privates Schlüsselpaar verwendet. Und es ist mehr Arbeit!

Lesen Sie diese Seite von „SSH: The Definitive Guide“ für eine Diskussion über Ihre Möglichkeiten: http://www.snailbook.com/faq/no-passphrase.auto. html

Sie haben, wie Authentifizierung über öffentliche Schlüssel funktioniert falsch verstanden. Sie brauchen keinen Zugriff auf Ihr Remote-Home-Verzeichnis, einfach ausgedrückt den lokalen öffentlichen Schlüssel in der Fernbedienung authorized_keys Datei. Haben Sie eine Google um, gibt es viele Anleitungen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top