Wiki-Quellcode von Ssh

Version 60.1 von Aysegül Omus am 2023/02/24 11:18

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