Wiki-Quellcode von Ssh

Version 2.1 von wikibot am 2023/02/05 20:30

Zeige letzte Bearbeiter
1 = SSH Zugriff =
2
3
4
5 {{toc/}}
6
7
8
9 ----
10
11
12
13 {{html wiki="true"}}
14 <a name='Fingerprints'></a>
15 {{/html}}
16
17
18 = 0. Fingerprints =
19
20 Ein Schlüsselfingerprint bei SSH ist ein Hash aus dem Public Key des Hosts und dient der Verifikation und Identifikation des Servers. Damit kann zum Beispiel überprüft werden, ob sich ein Host ändert (z.B. wenn der DNS Server gehackt wurde und lxhalle.in.tum.de auf einmal auf einen bösen Server weisen würde).
21
22 Die ECDSA Keys wurden aus Sicherheitsgründen deaktiviert.
23
24 == lxhalle.in.tum.de ==
25
26 In der folgenden Tabelle sind die Fingerprints für **lxhalle.in.tum.de** aufgelistet.
27 |= lxhalle|= MD5-Fingerprint|= SHA256-Fingerprint
28 | Ed25519 | ##MD5:f8:73:a4:f9:47:8e:a2:ba:11:59:19:35:bf:d6:c7:c4## | SHA256:dSj0mkyuOXEdpKGGJmXkvhDnvbjGmGCYQXA0pV8Pe4s
29 | RSA | {{html wiki="true"}}
30 <span>MD5:4b:84:7e:c4:cf:b7:ff:fb:eb:d0:0c:7b:c3:97:05:54</br></span>
31 {{/html}} | SHA256:xJrFkhNs9pwibJFZZB5LvcrltWxfAIovk/UjKAXkIW4
32 Diese Fingerprints wurden zuletzt am 04.04.2019 verifiziert.
33
34 == ssh.ma.tum.de ==
35
36 In der folgenden Tabelle sind die Fingerprints für **ssh.ma.tum.de** aufgelistet.
37 |= ssh.ma.tum.de|= MD5-Fingerprint|= SHA256-Fingerprint
38 | Ed25519 | ##MD5:70:5d:b8:5f:51:69:60:07:22:a4:45:65:7b:c5:99:b9## | ##SHA256:EbNhVTkW+74PX0tQNb9bai0HXAVcQLC9lOeS+BgatPM##
39 | RSA | ##MD5:f0:07:65:2b:45:83:19:15:d9:fa:96:e4:5e:bc:8c:43## | ##SHA256:4J5P9HV9KrmMS6aKWYukNjVpaSFBrea2iQvXZOCQ7sQ##
40
41
42
43
44 {{html wiki="true"}}
45 <a name='OpenSSH'></a>
46 {{/html}}
47
48
49 = 1. !OpenSSH =
50
51 [[SSH>>https://www.ssh.com/]] (Secure Shell) ist ein Tool für die sichere Systemverwaltung, Dateiübertragung und andere Kommunikation über das Internet oder ein anderes nicht vertrauenswürdiges Netzwerk. Es verschlüsselt Identitäten, Passwörter und übertragene Daten, damit diese nicht abgehört und gestohlen werden können. [[OpenSSH>>https://www.openssh.com/]] ist eine Open-Source-Implementierung des SSH-Protokolls.
52
53 !OpenSSH liefert folgende Tools mit:
54 * SSH (Secure Shell Client, login auf einem remote System, Aufbau von Tunnel)
55 * SCP (Secure Copy Protocol, cp über einen SSH Tunnel)
56 * SFTP (Secure File Transfer Protocol, ftp über einen SSH Tunnel)
57 * ssh-add, ssh-keysign, ssh-keyscan, ssh-keygen und ssh-agent (Keymanagement)
58 * sshd (SSH Server)
59 * sftp-server (SFTP Server)
60 Auf Linux und !MacOS ist !OpenSSH in der Regel vorinstalliert und es exisitert auch eine Implementierung für Windows, die auf Windows 10 seit dem [[“Windows 10 fall creators update”>>https://github.com/PowerShell/Win32-OpenSSH/wiki/Project-Status]] mitgeliefert wird.
61
62 Unter Programme und Features lässt es sich seitdem aktivieren und seit etwa April 2018 sollte es standardmäßig aktiviert sein, wenn man auf dem aktuellstem Updatestand ist.
63
64
65
66 {{html wiki="true"}}
67 <a name='OpenSSHVerbindung'></a>
68 {{/html}}
69
70
71 == 1.1 SSH Verbindung mit Passwort ==
72
73 Öffnen Sie das Terminal (!MacOS / Linux) oder die !PowerShell (Windows). In diesem kann man nun mit
74 {{{
75 $> ssh RBG-username@hostname
76 }}}
77
78 eine SSH-Verbindung aufbauen.
79
80 Also in unserem Fall z.B
81 {{{
82
83 $> ssh musterma@lxhalle.in.tum.de
84 oder
85 $> ssh musterma@ssh.ma.tum.de
86 }}}
87
88 Falls der Server unbekannt ist, also die Verbindung zum ersten Mal aufgebaut wird oder die _known//hosts// Datei gelöscht wurde, ist eine Bestätigung des Fingerprints des public key des Servers gefragt.
89
90 {{{
91 > The authenticity of host ‘<i>server (serverip)</i>’ can’t be established.
92 > ECDSA key fingerprint is <i>server fingerprint</i>
93 > Are you sure you want to continue connecting (yes/no)?
94 }}}
95
96 Falls der Fingerprint richtig ist, kann die Abfrage bestätigt werden. Nun wird man noch nach seinem Passwort gefragt werden und man sollte am Server
97 eingeloggt sein.
98
99
100
101 {{html wiki="true"}}
102 <a name='OpenSSHKonfiguration'></a>
103 {{/html}}
104
105
106
107
108
109 {{html wiki="true"}}
110 <a name='OpenSSHKey'></a>
111 {{/html}}
112
113
114 == 1.2 SSH-Verbindgung ohne Passwort (!OpenSSH Konfiguration) ==
115
116 Mit der !OpenSSH Konfigurationsdateien lassen sich unter anderem Aliase für SSH Hosts anlegen und Optionen setzen.Mehr Informationen unter https://www.ssh.com/ssh/config/
117
118 Falls die !OpenSSH Konfigurationsdatei noch nicht vorhanden ist, kann man diese einfach mit
119 {{{
120 touch ~/.ssh/config
121 }}}
122
123 erstellen. Danach öffnet man die Konfigurationsdatei (config) mit einem Texteditor z.B. vi oder vim im Terminal.
124 {{{
125 vim ~/.ssh/config
126 }}}
127
128 Ein Beispiel Hosteintrag sieht wie folgt aus :
129 {{{
130
131 Host *
132 IdentitiesOnly yes
133 ServerAliveInterval 15
134
135 Host <i>aliasname</i>
136 HostName <i>FQDN oder IP des Server</i>
137 User <i>username</i>
138 Port <i>Port</i>
139 IdentityFile <i>PfadzumKeyfile</i>
140 }}}
141
142 Um eine SSH-Verbindgung ohne Passwort zur Lxhalle auszubauen, braucht man eine Konfigurationsdtei wie unten
143 {{{
144
145 Host *
146 IdentitiesOnly yes
147 ServerAliveInterval 15
148
149 Host lxhalle
150 HostName lxhalle.in.tum.de
151 User musterma
152 IdentityFile /Users/max/.ssh/id_rsa_lxhalle
153 }}}
154
155 == 1.3 SSH Key ==
156
157 === 1.3.1 Schlüsselpaar generieren (Private und Public) ===
158
159 Zum Generieren eines SSH Keys folgendes Befehl ausführen.
160
161 {{{
162 ssh-keygen -t rsa -b 4096
163 }}}
164
165 – b steht für die bits Anzahl womit die Länge des Schlüssels bestimmt werden kann.
166
167 – t steht für der type des Schlüssels.
168
169 Wenn Sie das angeben werden Sie nach einem Pfad nachgefragt wo das generierte Key hinterlegt werden soll.
170
171 {{{
172
173 $> ssh-keygen -t rsa -b 4096
174 > Generating public/private rsa key pair.
175 > Enter file in which to save the key (/home/"$USER"/.ssh/id_rsa): <path_to_directory_to_store_key>
176 > Enter passphrase (empty for no passphrase):
177 > Enter same passphrase again:
178 > Your identification has been saved in <path>
179 > Your public key has been saved in <path>
180 > The key fingerprint is:
181 > SHA256:LtcxHv0vIgzbV/udUgBLQQ8ayBl10DzwLP0LtUC97mQ <username>@<hostname>
182 > The key's randomart image is:
183 > +---[RSA 2048]----+
184 > | ..==**o |
185 > | + O*o. |
186 > | o.=+o. |
187 > | .o+o. |
188 > | S +.oo. |
189 > | ..o +.Eo. |
190 > | . o=o +oo. |
191 > | o. + ooo.o|
192 > | o ..++|
193 > +----[SHA256]-----+
194 }}}
195
196 === 1.3.2 Öffentlichen Schlüssel auf Server übertragen ===
197
198 Der öffentlicher Schlüssel muss auf den Server übertragen werden.I.d.R. kann man dies einfach über //ssh-copy-id// erledigen.
199 {{{
200
201 $> ssh-copy-id RBG-username@hostname
202 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: <path_to_directory_where_key_is_stored>
203 /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
204 /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
205 username@hostname password:
206
207 Number of key(s) added: 1
208
209 Now try logging into the machine, with: "ssh 'username@hostname'"
210 and check to make sure that only the key(s) you wanted were added.
211 }}}
212
213 Jetzt sollte der Key auf dem Server als authorisierter Key installiert worden sein und ein Login mit
214 {{{
215 ssh -i !PfadZumKeyfile username@hostname
216 }}}
217
218 möglich sein. Alternativ kann man das Identityfile wie oben spezifiziert in der SSH-Configuration angeben und sich mit //ssh alias// verbinden.
219
220 === 1.3.3 SSH-Keygen Manpages ===
221
222 Wenn man folgenden Befehl im Terminal ausführt, erfährt man mehr über SSH-Keygen
223
224 {{{
225
226 $> ssh-keygen man
227
228 usage: ssh-keygen [-q] [-b bits] [-C comment] [-f output_keyfile] [-m format]
229 [-t dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa]
230 [-N new_passphrase] [-O option] [-w provider]
231 ssh-keygen -p [-f keyfile] [-m format] [-N new_passphrase]
232 [-P old_passphrase]
233 ssh-keygen -i [-f input_keyfile] [-m key_format]
234 ssh-keygen -e [-f input_keyfile] [-m key_format]
235 ssh-keygen -y [-f input_keyfile]
236 ssh-keygen -c [-C comment] [-f keyfile] [-P passphrase]
237 ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]
238 ssh-keygen -B [-f input_keyfile]
239 ssh-keygen -D pkcs11
240 ssh-keygen -F hostname [-lv] [-f known_hosts_file]
241 ssh-keygen -H [-f known_hosts_file]
242 ssh-keygen -K [-w provider]
243 ssh-keygen -R hostname [-f known_hosts_file]
244 ssh-keygen -r hostname [-g] [-f input_keyfile]
245 ssh-keygen -M generate [-O option] output_file
246 ssh-keygen -M screen [-f input_file] [-O option] output_file
247 ssh-keygen -I certificate_identity -s ca_key [-hU] [-D pkcs11_provider]
248 [-n principals] [-O option] [-V validity_interval]
249 [-z serial_number] file ...
250 ssh-keygen -L [-f input_keyfile]
251 ssh-keygen -A [-f prefix_path]
252 ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number]
253 file ...
254 ssh-keygen -Q -f krl_file file ...
255 ssh-keygen -Y find-principals -s signature_file -f allowed_signers_file
256 ssh-keygen -Y check-novalidate -n namespace -s signature_file
257 ssh-keygen -Y sign -f key_file -n namespace file ...
258 ssh-keygen -Y verify -f allowed_signers_file -I signer_identity
259 -n namespace -s signature_file [-r revocation_file]
260 }}}
261
262 == 1.4 Filetransfer mit SFTP ==
263
264 Das Secure File Transfer Protocol (SFTP) kann genutzt werden um Daten zu oder von einem Remote-System zu übertragen.
265
266 {{{
267
268 $> sftp
269 usage: sftp [-46aCfpqrv] [-B buffer_size] [-b batchfile] [-c cipher]
270 [-D sftp_server_path] [-F ssh_config] [-i identity_file]
271 [-J destination] [-l limit] [-o ssh_option] [-P port]
272 [-R num_requests] [-S program] [-s subsystem | sftp_server]
273 destination
274 }}}
275
276 Dazu kann man einfach das mit der !OpenSSH -Implementierung mitgelieferte sftp Tool nutzen. Dazu einfach in das Terminal/ Powershell sftp eingeben. Die Parameter sind analog zum ssh Befehl, nur das manche Flags fehlen, wie zB X11-Forwarding. Man kann auch die in der SSH-Config definierten Hosts nutzen.
277
278 z.B. also:
279
280 {{{
281 $> sftp RBG-username@lxhalle.in.tum.de
282 }}}
283
284 Hier kann man nun interaktive Befehle nutzen um zu den gewüschten Dateien/ Ort im Dateisystem zu navigieren (z.B: ls, cd). Hier kann man nun mit //get/put// Dateien bzw Ordner(das Flag -r angeben, damit der Ordner rekursiv übertragen wird) herunter- bzw. hochladen.
285
286 Mehr zum SFTP-Tool der !OpenSSH-Implementierung findet man im [[Manual>>https://man.openbsd.org/sftp]].
287
288 ----
289
290 == 1.5 X11 Forwarding ==
291
292 Unter den meisten Linux Systemen dient das [[X Windows System>>https://de.wikipedia.org/wiki/X_Window_System]] der Darstellung einer grafischen Oberfläche. Die aktuelle Version ist X Version 11 kurz X11. Mit X11 Forwarding kann man nun auf einem Remote-System eine Anwendung starten und die grafische Darstellung an einen lokalen X11-Server übertragen.
293
294 Um X11 Forwarding nutzen zu können, muss man nur beim ssh-Befehl das X11 Forwarding Flag setzen (also einfach ein -X hinzufügen). Alternativ kann man X11 Forwarding auch in der SSH-Config aktivieren.
295
296 Auf den meisten Linuxsystemen mit grafischer Oberfläche sollte ein X11 Server von Werk aus mitgeliefert sein, sonst muss man diesen aus den Paketquellen nachinstallieren.(zB pacman -S xorg oder apt install xorg)
297
298 Unter Mac benötigt man seit Mac OS X 10.5 zusätzliche Bibliotheken. Näheres dazu auf der Apple Seite: [[Informationen zu X11 für Mac>>https://support.apple.com/de-de/HT201341]].
299
300 Unter Windows benötigt man ebenso einen X11 Server. Dazu bietet es sich unter Windows 10 an, das Linux Subsystem für Windows.(Einrichtung siehe weiter unten im Text). In diesem Linux funktioniert es nun wie unter Linux nativ. Einfach das entsprechende xorg Paket installieren und den xorg-Server starten.
301
302 ----
303
304
305
306 {{html wiki="true"}}
307 <a name='Putty'></a>
308 {{/html}}
309
310
311
312 = 2. Legacy Methode Windows (Putty) =
313
314 Putty benötigt man auf älteren Windows Systemen um eine SSH Verbindung aufbauen zu können, da Microsoft sich dem Industiestandard ziemlich lang verweigert hat.
315
316
317
318 {{html wiki="true"}}
319 <a name='PuttyInstallation'></a>
320 {{/html}}
321
322
323
324 == 2.1 Installation ==
325
326 Den aktuellen Installer für Putty bekommt man unter [[www.putty.org>>https://www.putty.org/]]. Diesen herunterladen und ausführen.
327
328 Die folgenden Screenshots führen durch die Installation:
329
330 [[image:putty00.png||width="1000"]]
331
332 [[image:putty01.png||width="1000"]]
333
334 Hier kann man den Pfad anpasse welcn, anhem Putty installiert werden soll.
335
336 [[image:putty03.png||width="1000"]]
337
338 [[image:putty04.png||width="1000"]]
339
340 [[image:putty05.png||width="1000"]]
341
342
343
344 {{html wiki="true"}}
345 <a name='PuttyKonfiguration'></a>
346 {{/html}}
347
348
349
350 == 2.2 Konfiguration ==
351
352 Nach erfolgreicher Installation nun Putty starten. Dies kann man z.B. durch drücken der Windows-Taste und darauffolgendes Suchen von Putty machen:
353
354 [[image:puttykonfig00.png||width="1000"]]
355
356 Nun in dem geöffneten Fenster die Serveradresse **lxhalle.in.tum.de** für Informatik Serveradresse und **ssh.ma.tum.de** für Mathematik Serveradresse angeben:
357
358 [[image:puttykonfig01.png||width="1000"]]
359
360 Nun unter Data den Nutzeraccount eintragen:
361
362 [[image:puttykonfig02.png||width="1000"]]
363
364 In unserem Beispiel ist dies der Nutzer "Max Mustermann" mit der Kennung "musterma":
365
366 [[image:puttykonfig03.png||width="1000"]]
367
368 Falls ein SSH-Key vorhanden ist, kann man den unter SSH / Auth eintragen:
369
370 [[image:puttykonfig09.png||width="1000"]]
371
372 Die Eingaben kann man unter Session speichern (einen Namen geben und auf Save klicken):
373
374 [[image:puttykonfig06.png||width="1000"]]
375
376 [[image:puttykonfig07.png||width="1000"]]
377
378 Wenn man nun auf Open klickt wird die Verbindung zum Server aufgebaut (bei Erstverbindung wird der Hostkey abgefragt, siehe Tabelle oben):
379
380 [[image:puttykonfig04.png||width="1000"]]
381
382 Falls kein SSH-Key vorhanden ist oder er nicht erkannt wird, wird nun das Passwort abgefragt:
383
384 [[image:puttykonfig05.png||width="1000"]]
385
386 ----
387
388
389
390 {{html wiki="true"}}
391 <a name='LinuxSub'></a>
392 {{/html}}
393
394
395
396 = 3. Linux Subsystem für Windows 10 =
397
398 Auf Windows 10 kann man auch ein Linux Subsystem installieren, dass sich in den Windows Kernel und das Windows Dateisystem integriert. Es ist ein vollständiges Linux, dass allerdings im Windows Kernel läuft.
399
400
401
402 {{html wiki="true"}}
403 <a name='LinuxSubInstallation'></a>
404 {{/html}}
405
406
407 == 3.1 Installation ==
408
409 Mit Windows-Logo-Taste + X oder rechts klick auf die Windowsflagge das Direktlinkmenü öffnen und dort die Windows !PowerShell (Administrator öffnen):
410
411 [[image:linux00.png||width="1000"]]
412
413 Die Benutzerkontensteuerung wird nun nach Administratorberechtigungen fragen:
414
415 [[image:linux01.png||width="1000"]]
416
417 Hier nun
418 {{{
419 Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
420 }}}
421
422 eingeben und ausführen. Falls das Feature nicht gefunden wird, ist das System vermutlich nicht auf dem aktuellsten Stand und sollte aktualisiert werden.
423
424 [[image:linux02.png||width="1000"]]
425
426 [[image:linux03.png||width="1000"]]
427
428 Nach Abschluss der Feature Aktivierung den Rechner neustarten.
429
430 [[image:linux04.png||width="1000"]]
431
432 Nach Neustart des Rechners den Microsoft Store öffnen (z.B.: Startmenü öffnen und nach Microsoft Store suchen).
433
434 [[image:linux05.png||width="1000"]]
435
436 Im Microsoft Store nun nach Ubuntu suchen. Alternativ existeren OpenSUSE Leap, SUSE Linux Enterprise Server, Debian und Kali Subsysteme für Windows, die auch verwendet werden können und über den Microsoft Store installiert werden können.
437
438 [[image:linux06.png||width="1000"]]
439
440 Dann auf Herunterladen klicken, um das gewählte Subsystem zu installieren.
441
442 [[image:linux07.png||width="1000"]]
443
444 Nach Abschluss der Installation das Subsystem starten (Kann man auch über das Startmenü machen z.B. einfach nach Ubuntu suchen)
445
446 [[image:linux08.png||width="1000"]]
447
448 Beim ersten Start wird nun das Subsystem eingerichtet. Dies wird einige Zeit in Anspruch nehmen.
449
450 [[image:linux09.png||width="1000"]]
451
452 Um die Einrichtung abzuschließen, wird noch nach einem Nutzernamen und Passwort für das Linux Subsystem gefragt. Hier können Sie freiwählen und sollten ein sicheres Passwort wählen.
453
454 [[image:linux10.png||width="1000"]]
455
456
457
458 {{html wiki="true"}}
459 <a name='LinuxSubKonfiguration'></a>
460 {{/html}}
461
462
463 == 3.2 Konfiguration ==
464
465 !OpenSSH kann nun wie unter Linux verwendet werden.
466
467 [[image:linux11.png||width="1000"]]
468
469 [[image:linux12.png||width="1000"]]
470
471 [[image:linux13.png||width="1000"]]