Wiki-Quellcode von Ssh

Version 63.3 von Narine Sumina am 2023/02/28 11:29

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
28 |= lxhalle|= MD5-Fingerprint|= SHA256-Fingerprint
29 | Ed25519 | ##MD5:f8:73:a4:f9:47:8e:a2:ba:11:59:19:35:bf:d6:c7:c4## | SHA256:dSj0mkyuOXEdpKGGJmXkvhDnvbjGmGCYQXA0pV8Pe4s
30 | RSA | {{html wiki="true"}}<span>MD5:4b:84:7e:c4:cf:b7:ff:fb:eb:d0:0c:7b:c3:97:05:54</br></span>{{/html}} | SHA256:xJrFkhNs9pwibJFZZB5LvcrltWxfAIovk/UjKAXkIW4
31 Diese Fingerprints wurden zuletzt am 04.04.2019 verifiziert.
32
33 == ssh.ma.tum.de ==
34
35 In der folgenden Tabelle sind die Fingerprints für **ssh.ma.tum.de** aufgelistet.
36
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 {{html wiki="true"}}
42 <a name='OpenSSH'></a>
43 {{/html}}
44
45
46 = 1. OpenSSH =
47
48 [[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.
49
50 OpenSSH liefert folgende Tools mit:
51
52 * SSH (Secure Shell Client, login auf einem remote System, Aufbau von Tunnel)
53 * SCP (Secure Copy Protocol, cp über einen SSH Tunnel)
54 * SFTP (Secure File Transfer Protocol, ftp über einen SSH Tunnel)
55 * ssh-add, ssh-keysign, ssh-keyscan, ssh-keygen und ssh-agent (Keymanagement)
56 * sshd (SSH Server)
57 * sftp-server (SFTP Server)
58
59 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.
60
61 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.
62
63
64
65 {{html wiki="true"}}
66 <a name='OpenSSHVerbindung'></a>
67 {{/html}}
68
69
70 == 1.1. SSH Verbindung mit Passwort ==
71
72 Öffnen Sie das Terminal (!MacOS / Linux) oder die !PowerShell (Windows). In diesem kann man nun mit
73
74 (% class="box" %)
75 (((
76
77 {{{$> ssh RBG-username@hostname}}}
78 )))
79
80 eine SSH-Verbindung aufbauen.
81
82 Also in unserem Fall z.B
83
84 (% class="box" %)
85 (((
86
87 {{{$> ssh musterma@lxhalle.in.tum.de oder $> ssh musterma@ssh.ma.tum.de}}}
88 )))
89
90 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.
91
92 (% class="box" %)
93 (((
94 ~> The authenticity of host ‘<i>server (serverip)</i>’ can’t be established.
95 ~> ECDSA key fingerprint is <i>server fingerprint</i>
96 ~> Are you sure you want to continue connecting (yes/no)?
97 )))
98
99 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
100 eingeloggt sein.
101
102
103
104 {{html wiki="true"}}
105 <a name='OpenSSHKonfiguration'></a>
106 {{/html}}
107
108
109
110
111
112 {{html wiki="true"}}
113 <a name='OpenSSHKey'></a>
114 {{/html}}
115
116
117 == 1.2. SSH-Verbindgung ohne Passwort (!OpenSSH Konfiguration) ==
118
119 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/
120
121 Falls die !OpenSSH Konfigurationsdatei noch nicht vorhanden ist, kann man diese einfach mit
122 {{{touch ~/.ssh/config}}}
123
124 (% class="box infomessage" %)
125 (((
126 erstellen. Danach öffnet man die Konfigurationsdatei (config) mit einem Texteditor z.B. vi oder vim im Terminal.
127 {{{vim ~/.ssh/config}}}
128 )))
129
130 Ein Beispiel Hosteintrag sieht wie folgt aus :
131 {{{Host * IdentitiesOnly yes ServerAliveInterval 15 Host <i>aliasname</i> HostName <i>FQDN oder IP des Server</i> User <i>username</i> Port <i>Port</i> IdentityFile <i>PfadzumKeyfile</i>}}}
132
133 Um eine SSH-Verbindgung ohne Passwort zur Lxhalle auszubauen, braucht man eine Konfigurationsdtei wie unten
134 {{{Host * IdentitiesOnly yes ServerAliveInterval 15 Host lxhalle HostName lxhalle.in.tum.de User musterma IdentityFile /Users/max/.ssh/id_rsa_lxhalle}}}
135
136 == 1.3. SSH Key ==
137
138 === 1.3.1. Schlüsselpaar generieren (Private und Public) ===
139
140 Zum Generieren eines SSH Keys folgendes Befehl ausführen.
141
142 {{{ssh-keygen -t rsa -b 4096
143 }}}
144
145 – b steht für die bits Anzahl womit die Länge des Schlüssels bestimmt werden kann.
146
147 – t steht für der type des Schlüssels.
148
149 Wenn Sie das angeben werden Sie nach einem Pfad nachgefragt wo das generierte Key hinterlegt werden soll.
150
151 {{{$> ssh-keygen -t rsa -b 4096
152 > Generating public/private rsa key pair.
153 > Enter file in which to save the key (/home/"$USER"/.ssh/id_rsa): <path_to_directory_to_store_key>
154 > Enter passphrase (empty for no passphrase):
155 > Enter same passphrase again:
156 > Your identification has been saved in <path>
157 > Your public key has been saved in <path>
158 > The key fingerprint is:
159 > SHA256:LtcxHv0vIgzbV/udUgBLQQ8ayBl10DzwLP0LtUC97mQ <username>@<hostname>
160 > The key's randomart image is:
161 > +---[RSA 2048]----+
162 > | ..==**o |
163 > | + O*o. |
164 > | o.=+o. |
165 > | .o+o. |
166 > | S +.oo. |
167 > | ..o +.Eo. |
168 > | . o=o +oo. |
169 > | o. + ooo.o|
170 > | o ..++|
171 > +----[SHA256]-----+
172 }}}
173
174 === 1.3.2. Öffentlichen Schlüssel auf Server übertragen ===
175
176 Der öffentlicher Schlüssel muss auf den Server übertragen werden.I.d.R. kann man dies einfach über //ssh-copy-id// erledigen.
177 {{{$> ssh-copy-id RBG-username@hostname /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: <path_to_directory_where_key_is_stored> /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /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 username@hostname password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'username@hostname'" and check to make sure that only the key(s) you wanted were added.}}}
178
179 Jetzt sollte der Key auf dem Server als authorisierter Key installiert worden sein und ein Login mit
180 {{{ssh -i !PfadZumKeyfile username@hostname}}}
181
182 möglich sein. Alternativ kann man das Identityfile wie oben spezifiziert in der SSH-Configuration angeben und sich mit //ssh alias// verbinden.
183
184 === 1.3.3. SSH-Keygen Manpages ===
185
186 Wenn man folgenden Befehl im Terminal ausführt, erfährt man mehr über SSH-Keygen
187
188 {{{$> ssh-keygen man
189
190 usage: ssh-keygen [-q] [-b bits] [-C comment] [-f output_keyfile] [-m format]
191 [-t dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa]
192 [-N new_passphrase] [-O option] [-w provider]
193 ssh-keygen -p [-f keyfile] [-m format] [-N new_passphrase]
194 [-P old_passphrase]
195 ssh-keygen -i [-f input_keyfile] [-m key_format]
196 ssh-keygen -e [-f input_keyfile] [-m key_format]
197 ssh-keygen -y [-f input_keyfile]
198 ssh-keygen -c [-C comment] [-f keyfile] [-P passphrase]
199 ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]
200 ssh-keygen -B [-f input_keyfile]
201 ssh-keygen -D pkcs11
202 ssh-keygen -F hostname [-lv] [-f known_hosts_file]
203 ssh-keygen -H [-f known_hosts_file]
204 ssh-keygen -K [-w provider]
205 ssh-keygen -R hostname [-f known_hosts_file]
206 ssh-keygen -r hostname [-g] [-f input_keyfile]
207 ssh-keygen -M generate [-O option] output_file
208 ssh-keygen -M screen [-f input_file] [-O option] output_file
209 ssh-keygen -I certificate_identity -s ca_key [-hU] [-D pkcs11_provider]
210 [-n principals] [-O option] [-V validity_interval]
211 [-z serial_number] file ...
212 ssh-keygen -L [-f input_keyfile]
213 ssh-keygen -A [-f prefix_path]
214 ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number]
215 file ...
216 ssh-keygen -Q -f krl_file file ...
217 ssh-keygen -Y find-principals -s signature_file -f allowed_signers_file
218 ssh-keygen -Y check-novalidate -n namespace -s signature_file
219 ssh-keygen -Y sign -f key_file -n namespace file ...
220 ssh-keygen -Y verify -f allowed_signers_file -I signer_identity
221 -n namespace -s signature_file [-r revocation_file]
222 }}}
223
224 == 1.4. Filetransfer mit SFTP ==
225
226 Das Secure File Transfer Protocol (SFTP) kann genutzt werden um Daten zu oder von einem Remote-System zu übertragen.
227
228 {{{$> sftp
229 usage: sftp [-46aCfpqrv] [-B buffer_size] [-b batchfile] [-c cipher]
230 [-D sftp_server_path] [-F ssh_config] [-i identity_file]
231 [-J destination] [-l limit] [-o ssh_option] [-P port]
232 [-R num_requests] [-S program] [-s subsystem | sftp_server]
233 destination
234 }}}
235
236 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.
237
238 z.B. also:
239
240 {{{ $> sftp RBG-username@lxhalle.in.tum.de
241 }}}
242
243 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.
244
245 Mehr zum SFTP-Tool der !OpenSSH-Implementierung findet man im [[Manual>>https://man.openbsd.org/sftp]].
246
247 ----
248
249 == 1.5. X11 Forwarding ==
250
251 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.
252
253 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.
254
255 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)
256
257 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]].
258
259 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.
260
261 ----
262
263
264
265 {{html wiki="true"}}
266 <a name='Putty'></a>
267 {{/html}}
268
269
270
271 = 2. Legacy Methode Windows (Putty) =
272
273 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.
274
275
276
277 {{html wiki="true"}}
278 <a name='PuttyInstallation'></a>
279 {{/html}}
280
281
282
283 == 2.1. Installation ==
284
285 Den aktuellen Installer für Putty bekommt man unter [[www.putty.org>>https://www.putty.org/]]. Diesen herunterladen und ausführen.
286
287 Die folgenden Screenshots führen durch die Installation:
288
289 [[image:putty00.png||width="1000"]]
290
291 [[image:putty01.png||width="1000"]]
292
293 Hier kann man den Pfad anpasse welcn, anhem Putty installiert werden soll.
294
295 [[image:putty03.png||width="1000"]]
296
297 [[image:putty04.png||width="1000"]]
298
299 [[image:putty05.png||width="1000"]]
300
301
302
303 {{html wiki="true"}}
304 <a name='PuttyKonfiguration'></a>
305 {{/html}}
306
307
308
309 == 2.2. Konfiguration ==
310
311 Nach erfolgreicher Installation nun Putty starten. Dies kann man z.B. durch drücken der Windows-Taste und darauffolgendes Suchen von Putty machen:
312
313 [[image:puttykonfig00.png||width="1000"]]
314
315
316
317
318
319 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:
320
321 [[image:puttykonfig01.png||width="1000"]]
322
323 Nun unter Data den Nutzeraccount eintragen:
324
325 [[image:puttykonfig02.png||width="1000"]]
326
327
328
329
330 In unserem Beispiel ist dies der Nutzer "Max Mustermann" mit der Kennung "musterma":
331
332 [[image:puttykonfig03.png||width="1000"]]
333
334
335
336 Falls ein SSH-Key vorhanden ist, kann man den unter SSH / Auth eintragen:
337
338 [[image:puttykonfig09.png||width="1000"]]
339
340
341 Die Eingaben kann man unter Session speichern (einen Namen geben und auf Save klicken):
342
343 [[image:puttykonfig06.png||width="1000"]]
344
345 [[image:puttykonfig07.png||width="1000"]]
346
347
348
349 Wenn man nun auf Open klickt wird die Verbindung zum Server aufgebaut (bei Erstverbindung wird der Hostkey abgefragt, siehe Tabelle oben):
350
351 [[image:puttykonfig04.png||width="1000"]]
352
353
354
355 Falls kein SSH-Key vorhanden ist oder er nicht erkannt wird, wird nun das Passwort abgefragt:
356
357 [[image:puttykonfig05.png||width="1000"]]
358
359 ----
360
361
362
363 {{html wiki="true"}}
364 <a name='LinuxSub'></a>
365 {{/html}}
366
367
368
369 = 3. Linux Subsystem für Windows 10 =
370
371 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.
372
373
374
375 {{html wiki="true"}}
376 <a name='LinuxSubInstallation'></a>
377 {{/html}}
378
379
380 == 3.1. Installation ==
381
382 Mit Windows-Logo-Taste + X oder rechts klick auf die Windowsflagge das Direktlinkmenü öffnen und dort die Windows !PowerShell (Administrator öffnen):
383
384 [[image:linux00.png||width="1000"]]
385
386
387 Die Benutzerkontensteuerung wird nun nach Administratorberechtigungen fragen:
388
389 [[image:linux01.png||width="1000"]]
390
391
392
393 Hier nun **{{{Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux}}} **eingeben und ausführen. Falls das Feature nicht gefunden wird, ist das System vermutlich nicht auf dem aktuellsten Stand und sollte aktualisiert werden.
394
395 [[image:linux02.png||width="1000"]]
396
397 [[image:linux03.png||width="1000"]]
398
399
400 Nach Abschluss der Feature Aktivierung den Rechner neustarten.
401
402 [[image:linux04.png||width="1000"]]
403
404
405 Nach Neustart des Rechners den **Microsoft Store **öffnen (z.B.: Startmenü öffnen und nach Microsoft Store suchen).
406
407 [[image:linux05.png||width="1000"]]
408
409
410 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.
411
412 [[image:linux06.png||width="1000"]]
413
414 Dann auf Herunterladen klicken, um das gewählte Subsystem zu installieren.
415
416 [[image:linux07.png||width="1000"]]
417
418 Nach Abschluss der Installation das Subsystem starten (Kann man auch über das Startmenü machen z.B. einfach nach Ubuntu suchen)
419
420 [[image:linux08.png||width="1000"]]
421
422
423
424 Beim ersten Start wird nun das Subsystem eingerichtet. Dies wird einige Zeit in Anspruch nehmen.
425
426 [[image:linux09.png||width="1000"]]
427
428
429
430 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.
431
432 [[image:linux10.png||width="1000"]]
433
434
435
436 {{html wiki="true"}}
437 <a name='LinuxSubKonfiguration'></a>
438 {{/html}}
439
440
441 == 3.2. Konfiguration ==
442
443 OpenSSH kann nun wie unter Linux verwendet werden.
444
445 [[image:linux11.png||width="1000"]]
446
447 [[image:linux12.png||width="1000"]]
448
449 [[image:linux13.png||width="1000"]]