SSH Aufsetzen (für Anfänger)

SSH Aufsetzen (für Anfänger)
Copyright © 2006 by Glenn Murray
For original English text, go to: http://inside.mines.edu
Translated by M.Dmitrieva

Letzte Änderung $Date: 2011.01.23 02.25 Uhr.06 $, $Revision: 1,18 $.

Das ist eine minimale Anweisung einen Anfänger mit ssh2 auf die Beine zu bringen, insbesondere die Clientversion OpenSSH, das auf dem Linux Distribution oder auf Windows via Cygwin kommt. Ich habe eine Abteilung umgefasst, für Ihre Hilfe mit den Maschinen in Verbindung zu stehen, die OpenSSH nicht ausführen, aber einige kommerziellen ssh. Da fasst sowohl Linux als auch Windows um, widerspiegelt die Neigung des Autors und nimmt eine Befehl-Linienannäherung: es nimmt einige Kenntnisse von tippenden Dingen an einem Befehl (z.B., der “CD”-Befehl) an. Wenn Sie mit dieser Sorte des Dings nicht vertraut sind, werden Sie Hilfe suchen müssen. Wenn Sie nach mehr “Windowy”-Hilfe suchen, gibt es viel darüber im Web, z.B., siehe die CvsGui Seite.

Wenn Sie ssh Cielnts aktivieren wollen, um Ihrem Computer in Verbindung zu stehen (d. h., machen Sie ihn einen ssh Server, dann auf Linux ist das gewöhnlich gerade eine Sache, das ssh Server-Paket zu installieren, das “sshd” oder “Ssh-Server” genannt werden kann. Auf Cygwin wird es etwas mehr beteiligt, und Sie sollten das Web befragen.

Bemerken Sie diese Erklärungen beziehen sich auf Ihr “Benutzer-” Verzeichnis (geschrieben “Home” oder “~”). Bei UNIX Maschinen (einschließlich Linux) ist das Verzeichnis, darin man bei Anmeldung aufsetzt, und wo Sie Ihre Dateien behalten; diese Position wird im Umgebungsvariable “HOME” versorgt. Bemerken Sie “HOME” der Name der Variable ist, und dass $HOME der Wert ist, z.B. der HOMEs Wert “C:\nifty” sein kann. Das echte HOME für den Windows-Benutzer Nifty ist die vorhandene Mappe “Dokumente und Settings\Nifty”, aber Cygwin und anderer UNIX bezogene Anwendungen haben sich sind mit Pathnames nicht notwendigerweise glücklich, die Formblätter einschließen, so können Sie Ihr eigenes HOME-Verzeichnis für Cygwin schaffen wollen, wie unten beschrieben wird.

Nur Windows

SSH kann Ihnen authentifizierte und verschlüsselte Verbindungen für die Entfernung von Computern geben. Wenn Sie Schlüssel aufstellen, können Sie diese Verbindungen ohne Kennwörter machen. Die Cygwin Installation ist ziemlich leicht, aber das Benutzerverhältnis und das öffentliche/private Kerngeschäft auf Cygwin ist etwas Schmerzerlich; es ist dabei den “Anfänger”-Umschlag zu stoßen, aber ist machbar. Wenn Sie nicht dagegen sind, Kennwörter mit jeder Verbindung zu tippen, können Sie ganzes Windows HOME-Geschäft unten nach der Installation und Ausführen Cygwin auslassen. Wenn aus irgendeinem Grund Sie Cygwin auf Windows nicht installieren möchten, können Sie das als Putty betrachten. Ich fasse nicht um, wie man Putty hier verwenden soll.

Die Cygwin Installation auf Windows: Das ist ziemlich aufrichtig. Laden Sie die Cygwin Installation Wizard setup.exe von der Cygwin Seite herunter und klicken Sie darauf doppel. Die meisten Voreinstellungen im Wizard sind fein. Wählen Sie einen Platz für die Cygwin Installation aus, (empfohlen: C:\cygwin) und wählen einen Platz für die Installationsdateien zu stellen (Ich verwende C:\cygwin\installation-files\) aus. Wählen Sie einen ftp oder http Seite von der Liste und dann prüfen Sie die zusätzlichen Pakete nach, die Sie installiert werden wollen. Sie müssen mindestens das ssh Paket von der Net-Abteilung auswählen (und das cvs Paket von Devel, wenn Sie darüber wissen, dass Sie cvs brauchen werden); diese werden standardmäßig nicht ausgewählt. Sie brauchen keine Quellen.

Das Cygwin Ausführen auf Windows: Sie fangen mit einer Cygwin Konsole an (den ich ein “Terminal” ebenso nennen kann) aus dem Startmenü, und tippen Sie die Befehle in diesem Fenster. (Wenn sich die Schale im Benutzersverzeichnis nicht öffnet, siehe unten). Der ls Befehl verzeichnet Dateien und Mappen (“Verzeichnisse” im UNIX Kauderwelsch). Der CD-Befehl gibt Ihnen die Möglichkeit die Verzeichnisse zu ändern, "cd.." versetzt Ihnen ein Verzeichnis. Die Cygwin-Konsole entspricht einem regelmäßigen UNIX Terminal und kann beim Systemstart mit. bash_profile angepasst werden und. bashrc-Dateien in Ihrem HOME Verzeichnis. Suchen Sie nach mehr von UNIX für Anfänger im Web. Sie können die (knappe) Dokumentation für jeden Befehl sehen, indem Sie den "man"-Befehl, zum Beispiel, "man ls" oder "man ssh-keygen" verwenden.

Übrigens kommt Cygwin mit einem kleinen Programm, um ssh für Sie aufzustellen. Der Befehl ist ssh-user-config, der Schlüssel und ein.ssh Verzeichnis in Ihrem HOME-Verzeichnis schaffen wird. Jedoch wird es kein Nichtstandart-HOME-Verzeichnis bilden, noch Ihren/etc/passwd/file befestigen, noch den öffentlichen Schlüssel auf den entfernten Computer stellen, von denen alle notwendig sein können und unten beschrieben werden. Ich habe es nie verwendet.

Eine Proper Cygwin Installation wird im Installationsverzeichnis eine Mappe “home” mit einem Unterordner mit demselben Namen wie Ihr Benutzername haben, aber in der Vergangenheit wurde das manchmal für mich nicht geschehen. Wenn eine dieser Mappen vermisst wird, siehe die Fehlerbeseitigungsabteilung unten. Bemerken Sie, dass Ihr Benutzerverzeichnis in Cygwin “/home” nicht sein muss (meiniges ist nicht), Sie können es überall stellen, z.B., C:\nifty. (Ich tue das, so dass mein Benutzerverzeichnis C:\nifty oben der C ist: Laufwerk-Baum statt in C:\cygwin\home\nifty). Um das zu tun, benennen Sie das vorhandene C:\cygwin\home\nifty Verzeichnis zu niftyTMP um, bilden das C:\nifty Verzeichnis, öffnen Sie eine Cygwin Konsole und ausführen

        $ cd /home
        $ ln -s /cygdrive/c/nifty nifty
	$ mv niftyTMP/*.* nifty
	$ rmdir niftyTMP

Der “In”-Befehl macht eine symbolische Verbindung wie eine Windows-Verknüpfung von Cygwin /home/nifty bis Ihren C:\nifty. Bemerken “/cygdrive/c/nifty” ist die Cygwin Weise von Vorbringen “C:\nifty”. Wenn Ihr HOME auf einem anderen Laufwerk ist, machen D: verwenden Sie das cygwin Präfix /cygdrive/d. Die folgenden zwei Befehle werden alle Dateien von niftyTMP bis C:\nifty bewegen und niftyTMP löschen.

Das Setzen der HOME-Umgebungsvariable auf Windows: Für Win2K/XP rechtsklicken auf “My Computer”, klicken auf “Advanced” und “Environment variables”. Fügen Sie ein persönliches Umgebungsvariable-HOME mit dem Wert, z.B., C:\cygwin\home\nifty hinzu (oder wenn Sie die verbindenden Geschäfte oben C:\nifty gemacht haben). Sie sollten eventuell nicht neu booten, kaufen, Sie müssen sich erneut einloggen, damit die Änderungen wirksam werden.

Für Win9x/Me müssen Sie eine Linie in Ihrem autoexec.bat Datei stellen (gewöhnlich C:\autoexec.bat), das es einstellt, z.B.,

set HOME=C:\cygwin\home\nifty

oder wenn Sie die Verbindung haben, wie oben beschrieben wird,

set HOME=C:\nifty,/code>

und der Neustart. Bearbeiten Sie unbedingt autoexec.bat mit einem Textaufbereiter (wie Notepad) und nicht ein Textverarbeitungsprogramm (wie Word). Sie können der Wert der Umgebungsvariable von der Befehlszeile mit dem Befehl "echo $HOME" in Cygwin sehen, oder "echo %HOME %" in DOS. Ihre Linux Umgebungsvariablen werden in Ihrem ~/.bashrc und ~/.bash_profile Dateien eingesetzt.

Übrigens sind Umgebungsvariablen für eine Vielfalt von Programmen nützlich; das ist wie Sie CVS_RSH, ANT_HOME, JAVA_HOME und JIKESPATH setzen würden, wenn Sie ein javanischer Programmierer wären, verwenden CVS mit SSH. Wenn Sie nach Cygwin verfügbare Befehle aus DOS Prompt suchten, dann würden Sie “; C:\cygwin\bin” zu Ihrer PATH-Variable anfügen.

Fehlerbehebung: Das Bilden eines fehlenden Cygwins Benutzerverzeichnis: Die Cygwin Installationsmappe enthält Mappen “usr” und “bin”. Wenn es vermisst wird, fügen Sie eine genannte Mappe “home” hinzu, und in dieser Mappe fügen eine Mappe mit einem Namen hinzu, normalerweise Ihr Benutzername, z.B., “nifty”. Das wird die Mappe sein, wo ssh.exe nach der.ssh Mappe suchen wird, die Ihre Schlüssel enthält. (Cygwin denkt, dass Ihr Haus ist, wo die Linie in/etc/passwd zeigt es gibt da, siehe unten).

Fehlerbehebung: Die Überprüfung des Hause in der/etc/passwd Datei auf Windows: In Ihrem Cygwin Wurzel Installation Ordner (C: \ cygwin) gibt es ein Verzeichnis etc / mit eine Datei “passwd” (wenn diese Datei fehlt kann es mit dem cygwin Befehl “makepasswd” erstellt werden). Die Linien in dieser Datei enthalten durch Doppelpunkte getrennte Felder (:). In einer neuen Cygwin Installation wird die letzte Linie für Ihren Cygwin Benutzernamen sein. Das letzte Feld wird “/bin/bash” sein. Stellen Sie sicher, dass das vorletzte Feld in der Linie für Ihren Benutzernamen “/home/nifty” ist (es ist in Ordnung, wenn “nifty” ein Link als oben ist). Verwenden Sie Windows “C:\” Notation nicht. Bearbeiten Sie unbedingt die/etc/passwd Datei mit einem Textaufbereiter (wie Notepad oder Wordpad) und nicht ein Textverarbeitungsprogramm (wie Word).

a name=”ShellNotHome”>Fehlerbehebung: Wenn sich die Cygwin Schale im $HOME nicht öffnet: Auf einigen meiner Installationen hat sich die Cygwin-Schale des Heftigen Schlags im $HOME nicht geöffnet, aber in /usr/bin (das Prompt war “/usr/bin $”, nicht, z.B., “nifty/ $”). Siehe das Fehlerbehebungszeichen oben.

Linux und Windows

OpenSSH zu OpenSSH (ssh2)

Überprüfen Sie, dass ssh überhaupt funktioniert: SSH kann telnet sogar ohne Schlüssel ersetzen. Nehmen Sie an, dass Sie mit dem entfernten Computer remote.edu in Verbindung stehen. als Benutzer “dude”. Ausführen

$ ssh dude@remote.edu

und ssh wird Sie fragen, ob Sie sich in Zusammenhang halten wollen, tippen “ja”, und dann es nach Ihren Kennwort bitten und eine Schale im Benutzerverzeichnis des Kerls auf remote.edu gerade wie telnet öffnen sollte. Wenn das scheitert, gibt es ein Problem irgendwo. Stellen Sie sicher, dass ssh auf Ihrem Ende installiert wird, und stellen Sie auch sicher, dass die remote.edu ssh Verbindungen akzeptiert. Wenn nicht, dann vergeuden Sie Ihre Zeit.

Sobald ssh funktioniert, werden wir die Schlüssel aufstellen, so dass es nicht mehr notwendig sein wird, Kennwörter zu senden. Wenn Sie über die Theorie davon neugierig sind, dann lesen über “public key cryptography”.

Bilden Ihren Schlüssel: Sie müssen private und öffentliche ssh Schlüssel bilden und sie im richtigen Platz mit der richtigen Erlaubnis stellen. In Ihrem Benutzerverzeichnis bilden eine Mappe.ssh ($ mkdir.ssh), wenn es niemanden gibt. Bemerken Sie, dass Windows es schwierig für Sie machen kann, eine Datei zu bilden, die damit anfängt, wenn Sie versuchen, es mit ihren Werkzeugen zu tun; z.B. Windows Explorer. Dann schaffen Sie die Schlüssel mit dem Befehl

$ ssh-keygen -t dsa

Das ssh-keygen Programm wird um einen passphrase bitten, nur Schlagen “Enter” Schlüssel, wenn aus irgendeinem Grund Sie nicht wissen, dass Sie einen passphrase wollen. Das bildet die Schlüssel id_dsa und id_dsa.pub und stellt sie in.ssh/. Der private Schlüssel id_dsa muss nur durch Sie lesbar sein; ändern Sie seine Erlaubnis damit

$ chmod 600.ssh/id_dsa

Stellen Sie den öffentlichen Schlüssel auf den entfernten Computer: In dieser Abteilung nehmen wir an, dass der entfernte Computer auch OpenSSH führt. Irgendwie müssen Sie den .ssh/id_dsa.pub Schlüssel auf den entfernten Computer bekommen, ob durch die E-Mail, ftp, es auf einem Floppy Disc (sneakernet) usw. tragend; die coole Weise das zu tun, soll scp verwenden, der zusammen mit ssh installiert wurde. Nehmen Sie an, dass der entfernte Computer remote.edu ist, und Ihren Account ist “dude”. Um die Datei für die Entfernung zu kopieren, ausführen

$ scp .ssh/id_dsa.pub dude@remote.edu:

Vergessen Sie den schleifenden Doppelpunkt nicht. Sie werden um das Kerls Kennwort durch Remote gebeten, bevor das Kopieren anfängt. Die Datei wird zum Benutzerverzeichnis des Kerls durch Remote kopiert.

Installieren Sie den öffentlichen Schlüssel auf dem Remote-Computer: (Wir treten an, dass der entfernte Computer OpenSSH auf Linux oder UNIX ausführt! ), Sobald id_dsa.pub sich auf dem entfernten Computer befindet, melden Sie sich in den entfernten Computer an (Sie können ssh bei der Anmeldung mit Ihrem Kennwort verwenden, wie oben beschrieben). Aus Ihrem Benutzerverzeichnis (wo Sie Ihren neuangekommene ist id_dsa.pub sehen sollten), bilden eine.ssh Mappe, wenn kein gibt es. Dann hängen Sie Ihren id_dsa.pub bei einer Datei in.ssh an, mit

$ cat id_dsa.pub >> .ssh/authorized_keys

Das wird die Datei authorized_keys bilden, wenn kein gibt es. Der id_dsa.pub Schlüssel kann vom Benutzerverzeichnis des Remote-Computers entfernt werden, wenn Sie mögen. Die .ssh Mappe auf dem Remote-Computer muss die richtige Erlaubnis haben, Sie können sie damit setzen

Überprüfen die Password-less Verbindung: Jetzt den Befehl

.$ ssh dude@remote.edu

sollte Ihnen eine Password-less Verbindung zu remote.edu geben. Ebenfalls scp sollte Passwortfrei sein.

Übrigens alle Befehle Sie führen durch die erste Anmeldung in den Remote-Computer aus, können entfernt mit ssh einzeln gemacht werden. Zum Beispiel können Sie "$ ssh dude@remote.edu ls"  ausführen und eine Auflistung Ihrer Benutzerverzeichnisdateien durch den entfernten Computer bekommen. Siehe die Dokumentation für Details.

OpenSSH zu Commercial SSH

Das ähnelt mit der oben geschriebenen Verbindung, und nur einige Unterschiede werden hier beschrieben. Wenn Sie nicht dagegen sind, Kennwörter zu verwenden, können Sie ssh und scp wie oben beschreibend verwenden. Über Passwort-less Verbindungen weiterlesen.

Änderungen bei den Schlüsseln: Der OpenSSH’s ssh-keygen Befehl hat die Optionen “-i”, um kommerzielle Schlüssel und “-e” zu importieren, um sie zu exportieren. Wenn Sie Ihres Schlüssels mit OpenSSH gebildet haben, dann sollten Sie im Stande sein, den Schlüssel id_dsa.pub zu einer kommerziellen Version zu exportieren, und das auf die entfernte Maschine statt der Version von OpenSSH zu stellen.

Wenn “-e” für Sie nicht funktioniert (und das funktionierte für mich auch nicht), können Sie kommerzielle Schlüssel auf der Remote-Maschine mit ssh-keygen2 erzeugen, und dann bei Ihrer lokalen Maschine verwenden OpenSSH’s ssh-keygen mit der “-i” Fahne, um einen neuen privaten Schlüssel id_dsa zu schaffen (Das funktionierte für mich, oder war das vice-versa? ).

Die Installation des kommerziellen öffentlichen Schlüssels: Das ist ähnlich wie die oben OpenSSH Installation, abgesehen von geringen Unterschieden. Das Verzeichnis auf der Remote-Maschine wird .ssh2 genannt, und der öffentliche Schlüsseldateiname (nicht die Datei selbst) wird an .ssh2/authorization angehangen. Die öffentliche Schlüsseldatei selbst kann in .ssh2/versorgt werden. Aus dem Benutzerverzeichnis:

        $ mv id_dsa.pub .ssh2
        $ echo "id_dsa.pub" | cat - >> .ssh2/authorization

SSH Tunnelling

Wir werden uns direkt aus dem Anfänger-Zeug in den ssh Tunnelling jetzt bewegen. Die Idee besteht darin, verbinden zu einem Remote-Computer via einen Zwischencomputer, alle mit ssh. Diese Situation entsteht bei der Organisationen, die einen Computer mit dem Internet gegenübersteht, aber Sie wollen zu einem anderen Computer hinter dem internetgegenüberstehenden Computer in Verbindung stehen. Natürlich der Zwischencomputer und der Remote-Computer müssen ssh Verbindungen akzeptieren. Ich werde annehmen, dass Sie “dude” sind, befinden sich an “localhost”, mit dem Account “intdude” auf dem Zwischencomputer “intermediate.edu”, und der Account “remotedude” bei dem entfernten Computer “remote.edu”. Ich werde weiter annehmen, dass Sie der ssh Schlüssel für den Zugang zu intermediate.edu aufgestellt haben.

Grundlegender SSH Tunnellling

Bei localhost, in einem Terminal, ausführen

 $ ssh -L 2022:remote.edu:22 intdude@intermediate.edu

Das bildet “ssh Tunnel”, beginnend bei localhost:2022 durch intermediate.edu (der den Default ssh Port 22 enthält) zum remot.edu:22. Als ein Nebenprodukt gibt es Ihnen eine Schale bei intermediate.edu. Die Idee besteht darin, dass Sie ssh verwenden können, um zu remote.edu von localhost durch den Tunnel in Verbindung zu stehen.

Lassen Sie dieses Terminal geöffnet, und in einem anderen Terminal ausführen

 $ ssh -l remotedude -p 2022 localhost

Wenn Sie Ihren id_dsa.pub Schlüssel in remote.edu.ssh/authorized_keys nicht haben, dann bekommen Sie:

 remotedude@localhost's password:

Gehen Sie herein das remotedude Kennwort, und Sie werden eine Schale remote.edu anhaben. Natürlich, wenn Sie den ssh Schlüssel aufgestellt haben, um von intermediate.edu bis remote.edu in Verbindung zu stehen, dann werden Sie keine Kennwörter überhaupt brauchen.

Sie können dasselbe Schlüsselpaar für beide ssh Verbindungen verwenden, aber vielleicht wollen Sie das nicht; zum Beispiel können Sie ein privates/öffentliches Paar für Ihre Computer bei der Arbeit und ein anderes Paar für Ihre Computer zuhause verwenden wollen. In diesem Fall braucht der Arbeitscomputer nur den öffentliche ida_dsa.pub Schlüssel von Ihrem Hauspaar.

Bemerkung: Es ist nicht ziemlich intuitiv “localhost” in Ihren Befehlen verwenden und dazu “remote.edu” zu deuten. Sie können das ändern, so dass “ssh remotedude@remote.edu” durch das HostKeyAlias Hinzufügen zu Ihrer config Datei funktioniert, wie unten beschrieben.

CVS Tunnel remote.edu

Kredit: Ich habe darüber an http://www.informatik.hu-berlin.de/~vitt/doc/ssh/ erfahren.

Nehmen Sie an, dass Sie das Modul mycvsmodule durch remote.edu überprüfen wollen, das die CVS-Wurzel “/cvsroot” enthält. Schaffen Sie damit oder tragen Sie zu Ihrem localhost ~/.ssh/config bei legen die folgende Strophe ab (bemerken Sie die optionale Wildcard “*”):

      Host remote*
      HostName localhost
      Port 2022
      User remotedude
      HostKeyAlias remote
      CheckHostIP no
      ForwardAgent yes

Dann (nachdem Sie den Tunnel in einem anderen Terminal mit “ssh-L” Befehl aufgestellt haben, wie oben beschrieben) führt etwas aus, wie

 $ cvs -d:ext:remote.edu:/cvsroot co mycvsmodule

das “mycvsmodule” Modul überprüfen wird. Sie können jetzt CD ins mycvsmodule/directory stellen, wo CVS-Befehle funktionieren werden (solange den Tunnel geöffnet ist).

Browser-Tunnel remote.edu

Tunnelling kann in Situationen helfen, wo Sie die Webseiten von einer Seite hinter einer Firewall zugreifen wollen. Wenn remote.edu einen Webserver ausführt, dann kann darauf über ssh durch intermediate.edu zugegriffen werden. Nehmen Sie an, gibt es eine Seite bei der Sie aus der Firewall http://remote.edu/mypage.html zugreifen können. Das Annehmen Sie haben ssh aufgestellt, wie oben beschrieben, von außerhalb der Firewall Sie können einen Tunnel aufstellen:

 $ ssh -L 2022:remote.edu:80 intdude@intermediate.edu

und dann durchsuchen nach http://localhost:2022/mypage.html.