6 Stimmen

JSch: Wie man mit ssh-Schlüsseln auf einen Server zugreift

Ich möchte von einem anderen SSH-Server aus auf einen Server zugreifen. Der Gateway-Server erfordert einen Benutzernamen und ein Kennwort, und ich kann dies tun. Ich verwende einen Tunnel, um auf den nächsten Server zu gelangen, aber dieser erfordert nur einen ssh-Schlüssel. Ich habe den Schlüssel über PuTTY generiert, also existiert er für meinen Benutzernamen, aber ich bin nicht sicher, wie ich ihn für mein Java-Programm abrufen kann. Ist es eine Konfiguration? z.B. setConfig("userauth.publickey", "com.jcraft.jsch.UserAuthPublicKey") dann wie verwende ich das oder etwas anderes? Die Dokumentation scheint spärlich zu sein und ich bin für jede Hilfe dankbar. Alles, was ich versucht habe, gibt mir eine Fehlermeldung: "Auth fail", wenn ich diese Sitzung verbinde

Gracias.

Die von mir verwendete Tunnelmethode ist: http://sourceforge.net/apps/mediawiki/jsch/index.php?title=ProxySSH also vielen Dank an den Verfasser des Artikels!

Ich möchte von meinem Android-Telefon aus auf einem Server meiner Schule lesen und schreiben.

10voto

Paŭlo Ebermann Punkte 70779

Zum Aktivieren Public-Key-Authentifizierung verwenden, müssen Sie eine der JSch.addIdentity Methoden.

Diese benötigen den öffentlichen und den privaten Schlüssel im OpenSSH-Schlüsselformat - stellen Sie also sicher, dass Sie sie von PuTTY in diesem Format exportieren. (JSch versteht das native Format von PuTTY nicht, obwohl Sie einen Adapter schreiben könnten, der die Identity-Schnittstelle implementiert und sie selbst parst).

Die zu JSch hinzugefügten Identitäten sind global, nicht pro Sitzung. Dies ist normalerweise kein Problem, da JSch alle Authentifizierungsmethoden, die sowohl von ihm selbst als auch vom Server unterstützt werden, der Reihe nach ausprobiert, und die Authentifizierung mit öffentlichen Schlüsseln erfolgt normalerweise vor der Passwortauthentifizierung.

Alle Authentifizierungsmethoden benötigen einen Benutzernamen (normalerweise der Name des Kontos, bei dem man sich anmelden möchte).

Bei der Public-Key-Authentifizierung muss der öffentliche Schlüssel dem Server vorher irgendwie zur Verfügung stehen. Für den sshd von OpenSSH sollte der öffentliche Schlüssel in ~/.ssh/authorized_keys . (Wenn Sie nur einen öffentlichen Schlüssel haben, kopieren Sie ihn einfach in diese Datei, wenn Sie mehrere haben (von denen jeder erlaubt ist), sollte jeder in einer Zeile stehen).

Es sollte also nach dem Einstellen der Identität sofort funktionieren.

Wenn Sie sicherstellen möchten, dass die erste Sitzung die Passwortauthentifizierung und die zweite (getunnelte) Sitzung den öffentlichen Schlüssel verwendet, können Sie die Konfiguration pro Sitzung verwenden und die globale Konfiguration außer Kraft setzen:

tunnelSession.setConfig("PreferredAuthentications", "password");

innerSession.setConfig("PreferredAuthentications", "publickey");

(Es handelt sich um kommagetrennte Listen mit jeweils einem Element).

Das ProxySSH-Beispiel stammt von mir (mit etwas Hilfe des JSch-Autors Atsuhiko Yamanaka). Ich sollte diese Information vielleicht der Wiki-Seite hinzufügen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X