| SSH (Secure Shell) ist ein Protokoll zur sicheren Kommunikation zwischen 2 Partnern (Server, Client) | Über SSH wird hauptsächlich Text übertragen, durch Verschlüsselung allerdings weitgehend sicher gegen Abhören. |
Server
|
Dienste im Hintergrund |
| Konsole | Kurze Vorstellung der mit SSH zu steuernden Konsolen |
| Server-Client | Auftragnehmer und Auftraggeber |
| SSH-Grundlage | Auf SSH aufsetzende Dienste: SFTP, SCP, Tunnel, ... |
| Voraussetzungen | Server, Client, Netzwerk, Zugangsrechte, ... |
| OpenSSH | Der meist-verwendete SSH-Server auf Linux |
| WinSSHD | Ein SSH-Server für Windows |
| ssh | Standard Linux Konsolen-Programm ssh als SSH-Client |
| PuTTY | Standard Windows SSH-Client-Programm |
| X11 | Grafische Fensteuerung von Linux Programmen oder Desktop |
| Links |
Ausgewählte
|
Konsolen-Programme |
|
|
SSH dient in erster Linie zur Fern-Steuerung von Konsolen. Man kann diesen Dienst nur dann sinnvoll verwnden, wenn man mindestens über Grundkenntnisse der jeweiligen Konsolen-Programme verfügt. |
Eine Konsole bietet die Möglichkeit, Anweisungen in Klartext einzugeben. Die damit gestarteten Programme verwenden die Konsole meist auch zur Ausgabe der Ergebnisse, natürlich ebenfalls als Text. |
Linux-Shell• Linux bietet - wie auf diesem System üblich - gleich mehrere Shell-Konsolen-Programme, die man sogar miteinander kombinieren kann. Die meist-verwendete Shell-Konsole ist die Bash.• Konsolen-Programme werden vorwiegend zur Verwaltung eingesetzt. Die technischen Möglichkeiten der Linux Konsolen-Programme gehen weit über jene der Windows-Konsole hinaus. • Script-Programme in der Programmiersprache → Perl werden häufig zur Ergänzung der Linux Konsolen-Programme eingesetzt. ► Die Fern-Steuerung von Linux-PC, insbesondere von Linux-Server-PC mit SSH ist üblich und häufig. Man kann über eine SSH-Konsole alle Linux-Shell Befehle erteilen, alle Perl CLI-Programme verwenden und sogar Fenster-Programme oder einen kompletten Linux-Desktop mit SSH steuern. |
Windows-CMD-Konsole• Das Programm cmd.exe ist (fast) das einzige Windows Konsolen-Programm. Es stammt noch aus der IT-Urzeit ('MS-DOS'), wurde seither kaum verbessert und eher notdürftig mit 'Eingabeaufforderung' übersetzt.• Das Programm-Paket → Cygwin portiert zahlreiche Linux-Shell-Programme auf Windows-Systeme. • Die Programmiersprache → Perl kann die veraltete Windows-Konsole mit den Möglichkeiten einer modernen Programmiersprache ergänzen. ► Mit SSH kann man jeden Windows-PC, insbesondere aber jeden Windows-Server-PC über seine Konsole fern-steuern. Diese Möglichkeit ist praktisch, wird jedoch nur selten eingesetzt. |
Binäre ProgrammeDie wichtigsten Konsolen-Programme (Core) jedes Betriebssystems sind meist in der Programmiersprache C++ hergestellt. Sie sind in Maschinensprache übersetzt und arbeiten daher besonders schnell. Allerdings sind diese Binär-Dateien (z.B. *.exe ) für Menschen nicht lesbar.Diese → Core-Programme bilden die 'Grundausrüstung' jedes Betriebssystems. Sie werden nur selten verändert und überdauern meist viele Versionen der jeweiligen Betriebssysteme. Microsoft bevorzugt binäre Programme, u.a. weil sie von nicht autorisierten Personen nur mit sehr hohem Aufwand geändert werden können. |
Script-Programmesind Text-Dateien, in denen Anweisungen der jeweiligen Programmiersprache enthalten sind. Die Dateien (z.B. *.cmd ) sind für Menschen lesbar und werden bei jeder einzelnen Ausführung in Maschinensprache überstzt.Das ist zwar langsamer, die Texte lassen sich jedoch mit wenig Aufwand ändern. Mit den flexiblen Script-Programmen werden viele Aufgaben an die jeweiligen Verhältnisse (z.B. Betriebssystem-Versionen) angepasst. Die Texte von Script-Programmen lassen sich insbesondere auch von anderen Programmen herstellen oder verändern. Auf Linux werden besonders viele Script-Programme eingesetzt. Das erleichtert die Zusammenarbeit der EntwicklerInnen und bewährt sich insbesondere für OpenSource Produkte. |
▼ Wenig KomfortKonsolen-Programme bieten sehr wenig Komfort und erfordern weit mehr Fachkenntnisse als übliche AnwenderInnen-Programme, die in grafischen Fenstern mit der Maus bedient werden. Deshalb ist die Anwendung meist auf IT-Gurus (AdministratorInnen) beschränkt. |
▲ Wenige DatenKonsolen-Programme benötigen wesentlich weniger Daten zur Ausführung. Sie werden schon mit wenigen Buchstaben (=Bytes) gestartet und liefern meist nur wenig Text als Ergebnis. Daher sind zur Fern-Bedienung einer Konsole nur sehr wenige Daten zu transportieren. |
Server - Client |
|
SSH-ServerEin Server bietet Dienstleistungen an. Das Angebot richtet sich an alle über das Netzwerk erreichbaren Clients: Das sind normalerweise alle anderen PC (oder andere Geräte) im lokalen Netzwerk (LAN), je nach Konfiguration auch alle an das Internet angeschlossnen Computer.
Ein SSH-Server erlaubt die Fernsteuerung jenes Server-PC, auf welchem das
Server-Programm läuft.
● Alle gängigen Linux-Betriebssysteme bieten einen SSH-Server. Dieser ist in Server-Versionen schon betriebsfertig installiert, und lässt sich in Desktop-Versionen (Arbeits-PC) mit Mausklick installieren. Auf Linux wird fast nur der bewährte OpenSSH Server verwendet. • Windows-Systeme werden nur selten mit einem SSH-Server ausgerüstet. Immerhin gibt es auch für diese Systeme einige freie SSH-Server-Programme, z.B. WinSSHD ● Auf Windows sind die Konsolen-Programme meist für alle User zugänglich. Auf Linux ist eine strenge Trennung üblich: Harmlose Programme zur Verwaltung des eigenen User-Bereichs sind allgemein verwendbar, heikle Programme sind dem Linux-Administrator root vorbehalten. |
SSH-ClientEin Client handelt als Auftrag-Geber. Die Aufträge können an alle passenden Server gerichtet werden, welche den gleichen → Port (22) zur Kommunikation verwenden und das gleiche Protokoll verstehen.
Ein SSH-Client kann jeden erreichbaren SSH-Server steuern. Die Verbindung
kann über das lokale Netzwerk oder über das Internet erfolgen.
Zu Beginn muss sich ein/e SSH-AnwenderIn autorisieren (Name, Passwort). Alle Daten der SSH-Verbindung werden verschlüsselt übertragen. Man kann sie zwar abhören, die Decodierunmg ist jedoch mit 'normalen' Methoden nicht möglich. Mit großem Aufwand (Geheimdienste) ist die Decodierung allerdings kein Problem. • Auf Linux kann man die immer verfügbare Shell-Konsole als SSH-Client verwenden. Das ist so einfach und effizient, dass kaum andere SSH-Client-Programme eingesetzt werden. • Auf Windows muss man zur Fernsteuerung ein SSH Client Programm installieren. Meist-verwendet ist das bewährte Programm PuTTY, zu dem es mittlerweile auch einige Zusatz-Produkte gibt. PuTTY muss man nicht installieren, das Programm lässt sich auch portabel auf USB-Stick verwenden. |
Auf SSH aufgesetzte Dienste |
|
|
SSH hat sich zum sicheren Transport von Daten so gut bewährt, dass sich
einige andere Dienste zu diesem Zweck auf SSH stützen. In diesem Fall wird eine SSH-Verbindung eingerichtet, jedoch nicht vom menschlichen User als Konsole verwendet, sondern von einem Programm zum Transport von Daten. |
● Wenn ein Dienst das SSH-Protokoll verwendet, dann muss dafür kein eigener → Port am Firewall geöffnet werden: Es genügt die meist eingerichtete Freigabe des Standard SSH-Ports 22. |
SFTP (Secure File Transport Protocol)bietet die Möglichkeit, beliebige Dateien verschlüsselt mit SSH zu übertragen.Beispiel: Das Programm FileZilla ist kostenfrei für alle gängigen Betriebssysteme verfügbar und lässt sich sowohl installieren als auch portabel auf USB-Stick verwenden. FileZilla bietet sowohl normalen (nicht verschlüsselten) Daten-Transport mit FTP als auch Verschlüsselung mit SFTP. |
SCP (Secure Copy)bietet die Möglichkeit, beliebige Dateien verschlüsselt mit SSH zu übertragen. SCP wird heute meist durch SFTP ersetzt.Beispiel: Das kostenfreie Windows-Programm WinSCP kann man installieren oder portabel auf USB-Stick verwenden. |
X11 (X-Window System)wird auf Linux-Systemen zur grafischen Darstellung von Dsktop- und Fenster-Programmen verwendet.Die X11-Befehle erfolgen in Klartext und lassen sich mit SSH verschlüsselt übertragen. Das bietet die Möglichkeit, Linux-(Fenster)-Programme oder den gesamten Linux-Desktop rasch und sicher über das Netzwerk zu steuern. Allerdings muss der Linux-Server diese Art der Fernsteuerung ausdrücklich zulassen. Auf Linux sind dazu keine Zusatz-Programme erforderlich. Mit dem Windows-Programm Xming kann man jeden dafür eingerichteten Linux-Server bequem und sicher fernsteuern. |
Datenbank-ServerDie meisten → Datenbank-Server akzeptiern aus Sicherheits-Gründen nur Aufträge vom eigenen Server-PC, d.h. von der Standard-Adresse localhostDas ist kein Widerspruch zu einer sinnvollen Verwendung, denn das gesamte User-Interface für übliche Datenbank-Server wird normalerweise von einem → Webserver am gleichen (eigenen) PC verwaltet. ● Wenn man einen Datenbank-Server zur Administration mit Konsolen-Befehlen fernsteuern will (z.B. mit dem DB-Client-Programm mysql, dann lehnt dieser die Verbindung aus Sicherheits-Gründen ab, und zwar selbst dann, wenn der Firewall diese Verbindung (Port 3306) erlaubt. ● SSH bietet eine Lösung: Man richtet eine Verbindung zum Server-PC ein und startet in dieser SSH-Konsole das DB-Client-Programm mysql Dieses Programm läuft nun am Server-PC (!) und wird daher vom Datenbank-Server zugelassen. |
TunnelIm Prinzip kann man jede Verbindung über SSH leiten, wenn ein beliebiges Server-Client-Paar sich über diesen Transport einigt. Die Einrichtung solcher privater Tunnel vom eigenen PC durch das Internet zu einem anderen PC erfordert fortgeschrittene Kenntnisse. Damit kann man allerdings meist auch 'paranoid' eingestellte Router und Firewalls überwinden. |
SSHFSDieses System wird selten eingesetzt und erlaubt die gesicherte Übertragung eines gesamten entfernten Dateisystems (→ FileServer). |
|
|
IETF-Standards (Definition der mit SSH verwendeten Standard-Protokolle):RFC 4250- 4256, RFC 4419, RFC 4432, RFC 4742- 4745, RFC 4819, SSH Status, |
Wikipedia:
SSH,
SCP,
Secure FTP,
SFTP,
SSHFS,
Tunnel,
X11,
(HTTPS),
|
Linux-Software:Filezilla, OpenSSH, SSHFS, |
Windows-Software:Cygwin, Filezilla, PuTTY, WinSCP, WinSSHD, Xming, |