SSH Anmeldung mit Public-Key-Authentifizierung

31. August 2019 · Betriebssysteme · andreas · Kein Kommentar

Als Alternative zur “herkömmlichen” Anmeldung mit Benutzername und Kennwort gibt es auch die Möglichkeit, sich über SSH mittels einer Kombination von privatem und öffentlichem Schlüssel auf einem anderen Rechner anzumelden. Dies hat den Vorteil, daß - sobald einmal eingerichtet - eine sichere Verbindung zwischen den beiden Rechnern hergestellt werden kann, ohne daß jedesmal das Kennwort eingegeben werden muss.

Im ersten Schritt wird hierzu das Schlüsselpaar aus privatem und öffentlichem Schlüssel erzeugt:

$ ssh-keygen -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/andreas/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
...

Während die Frage nach dem Speicherort einfach mit “Enter” bestätigt werden kann, sollte die Vergabe einer Passphrase gut überlegt sein. Ohne Passphrase liegt der erzeugte Schlüssel ungeschützt am Speicherort und kann bei einem Diebstahl problemlos verwendet werden, mit Passphrase ist eine Verwendung nur mit Kenntnis eben dieser möglich.

Als Ergebnis des Befehls werden zwei Dateien erzeugt: zum einen die Datei “id_rsa”, weche den geheimen (=privaten) Schlüssel enthält und die Datei “id_rsa.pub”, in welcher der öffentliche Schlüssel gespeichert ist.

Im zweiten Schritt kann der soeben erzeugte öffentliche Schlüssel nun auf den anderen Rechner übertragen werden. Die Syntax hierzu ist “ssh-copy-id -i ~/Pfad/zur/Schlüsseldatei Benutzername@Rechnername”

$ ssh-copy-id -i /home/andreas/.ssh/id_rsa.pub remoteuser@remotehost
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/andreas/.ssh/id_rsa.pub"
/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
remoteuser@remotehost's password:

Number of key(s) added: 1

Now try logging into the machine, with: "ssh 'remoteuser@remotehost'"
and check to make sure that only the key(s) you wanted were added.

Sofern alles funktioniert hat, wurde auf dem Zielrechner im Verzeichnis “/home/remoteuser/.ssh” eine Datei “authorized_keys” erzeugt, in welche der öffentliche Schlüssel kopiert wurde.

Ist dies erfolgt, kann die Anmeldung ab sofort mit

$ ssh -i /home/andreas/.ssh/id_rsa remoteuser@remotehost

durchgeführt werden, wobei hier der private Schlüssel angegeben werden muss. Sofern beim Speichern des Schlüsselpaares die Vorgabewerte für den Namen übernommen wurden, kann die Angabe des Schlüssels entfallen, so daß die Anmeldung einfach über

$ ssh remoteuser@remotehost

möglich ist. Sofern beim Erzeugen des Schlüssels eine Passphrase vergeben wurde, wird diese bei Zugriff auf den Schlüssel abgefragt.


Experimental keys on scalar is now forbidden

31. August 2019 · Programmierung · andreas · 2 Kommentare

Nach einem Wechsel der Interpreter- oder Compilerversion stolpert die neue Version ab und an über Dinge, die bisher problemlos verarbeitet wurden. Im aktuellen Fall mag Perl 5.28 eine Zeile nicht mehr, die von Perl 5.14 noch problemlos verarbeitet wurde:

Die fragliche Zeile

foreach $type ( keys $phonebook{ $entry } ) {

wird nur noch mit einem

Experimental keys on scalar is now forbidden at scriptname.pl line 123.
Type of arg 1 to keys must be hash or array (not hash element) at scriptname.pl line 123, near "} ) "
Execution of fritzphone.pl aborted due to compilation errors.

und das, obwohl es sich bei “%phonebook” um einen Hash handelt. Die Lösung des Problems ist glücklicherweise recht einfach und schnell erledigt

foreach $type ( keys %{ $phonebook{ $entry } } ) {

in dem der von “keys” auszuwertende Eintrag mit “%{ … }” als Hash gekennzeichnet wird.


Debian Installationsvorbereitungen

24. August 2019 · Betriebssysteme · andreas · Kein Kommentar

Vor der Installation sollte die vorhandene Hardware auf Kompatibilität getestet werden, was am einfachsten mit einem Live-Image zu bewerkstelligen ist. Nach erfolgreichem Download sollte das Image auf Korrektheit und Unversehrtheit überprüft werden.

Anschließend kann das Image auf einen USB-Stick oder eine DVD kopiert und der Rechner damit gestartet werden, so daß eine erste Einschätzung, ob mit irgendeinem Gerät Probleme zu erwarten sind, getroffen werden kann.

Idealerweise wird das System auf eine neue Platte installiert, so daß eine saubere Trennung von Alt- und Neusystem recht einfach zu bewerkstelligen ist. Vor der Installation nicht vergessen, im BIOS UEFI zu aktivieren und ggf - falls z.B. eine Koexistenz mit Windows gewünscht - die Einstellungen anzupassen. Auch dem Thema Secure Boot sollte ein kurzer Blick gewidmet werden.

Nach der Vorbereitung kann die Installation starten, was entweder über das bereits geladene Live-Image oder mit Hilfe eines Netzwerk Installations-Images erledigt werden kann. Eine gute Vorab-Lektüre ist die Installationsanleitung zur Debian Buster, die man zumindest überfliegen sollte.

Mit der Entscheidung für eine Distrubtion ist das Auswahlverfahren noch nicht abgeschlossen, denn während es unter Windows nur eine Standard-Oberfläche gibt, kommt Debain Buster mit einer Vielzahl von unterstützen Desktop-Umgebungen, die alle ihre Vor- und Nachteile haben: GNOME, KDE, Cinnamon, Mate oder Xfce sind hierbei die gänigsten Kandidaten, bei denen man sich zumindest für einen im Laufe der Installation entscheiden sollte.

Welcher Desktop-Umgebung letzendlich aber der Vorzug geben wird, ist Geschmacksache. Es ist auch problemlos möglich, mehrere Desktop-Umgebungen parallel zu installieren und abwechselnd zu betreiben, bis sich irgendwann eine Präferenz abzeichnet.


Neue Festplatte unter Linux hinzufügen

15. August 2019 · Betriebssysteme · andreas · Kein Kommentar

Sowohl unter Linux als auch unter Windows gibt es verschiedene Möglichkeiten, eine zusätzliche Platte in Betrieb zu nehmen. Während unter Windows das Kommandozeilen-Programm “diskpart” zwar vorhanden ist, aber selten genutzt wird, ist unter Linux eher die Kommandozeile gängig, als die Arbeiten mit z.B. “gnome-disks” zu erledigen.

Im ersten Schritt werden die vorhandenen Laufwerke aufgelistet. Dies dient dazu sicherzustellen, daß die zusätzliche Festplatte auch fehlerfrei eingebaut und erkannt wurde und um den Namen zu erfahren, welcher der Platte vom System zugewiesen wurde:

$ sudo fdisk -l
...
Disk /dev/sda: 931,5 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: Samsung SSD 860 
...

Zu erkennen ist die Platte zum einen am Namen (und ggf. an der Größe), zum anderen daran, daß - sofern es sich um eine neue Platte handelt - noch keine Partitionen darauf angelegt wurden.

Nachdem die Platte identifiziert wurde (im Beispielfall “/dev/sda”), kann diese im nächsten Schritt partitioniert werden:

$ sudo fdisk /dev/sda

Welcome to fdisk (util-linux 2.33.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p):

Using default response p.
Partition number (1-4, default 1): 
First sector (2048-1953525167, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-1953525167, default 1953525167):

Created a new partition 1 of type 'Linux' and of size 931,5 GiB.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Sofern keine weitere Unterteilung gewünscht ist, können hier einfach die Vorgaben übernommen werden:

  • “n” (für neue Partition),

  • “Enter” (um eine primäre Parition anzulegen),

  • “Enter” um die Partition mit der Nummer “1” anzulegen,

  • “Enter” zum Bestätgen des Startsektors,

  • “Enter” zum Bestätgen des Endsektors,

  • “w” zum Speichern der Änderungen und verlassen

Als Nächstes wird das Dateisystem “ext4” auf der soeben erzeugten Partition erzeugt:

$ sudo mkfs.ext4 /dev/sda1
mke2fs 1.44.5 (15-Dec-2018)
Discarding device blocks: done 
Creating filesystem with 244190390 4k blocks and 61054976 inodes
Filesystem UUID: bd54c452-1234-5678-a294-d22cb9d6be33
...
Writing superblocks and filesystem accounting information: done

Um die Platte dauerhaft einzuhängen, muß noch ein entsprechender Eintrag in der fstab gemacht werden. Zwar würde es funktionieren, die Partition über ihren Gerätenamen “/dev/sda1” einzubinden, jedoch kann dieser sich u.U. ändern.

Aus diesem Grund ist einer Einbindung über die eindeutige UUID den Vorzug zu geben. Diese kann entweder der Ausgabe des soeben durchgeführten “mkfs.ext4” entnommen werden oder mit Hilfe des Befehls “blkid”:

$ sudo blkid 
...
/dev/sda1: UUID="bd54c452-1234-5678-a294-d22cb9d6be33" TYPE="ext4" PARTUUID="6f084731-01"

Letztendlich stellt sich noch die Frage: wohin mit der neuen Platte im Dateisystem?

Obwohl sich die verschiedenen Distributionen in den letzten Jahren auf einen Filesystem Hierarchy Standard geeinigt haben, schweigt sich dieser interessanterweise genau zu diesem Punkt aus.

Als bestehende Einhängepunkte bieten sich “/mnt/neueplatte” (eigentlich für Temporarily mounted filesystems gedacht), “/media/neueplatte” (Mount points for removable media), das in macOS verwendete “/Volumes/neueplatte” oder auch ein davon inspiriertes “/vol/neueplatte”.

$ sudo mkdir /vol
$ sudo mkdir /vol/neueplatte

Nachdem der Einhängepunkt erzeugt wurde, kann über einen entsprechenden Eintrag in der Datei “/etc/fstab” die Platte bei jedem Start automatisch eingehängt werden:

...
# 2019-08-15 athul/added 2nd disk
UUID=bd54c452-1234-5678-a294-d22cb9d6be33 /vol/neueplatte ext4 defaults 0 2

Nach einem Reboot steht die Platte dann im Verzeichnis “/vol/neueplatte” zur Verfügung. Eine Übersicht über die zum Einhängen verwendeten Felder liefert das Debian-Wiki.


.NET 3.5 Installation scheitert auf Microsoft Windows Server 2019

9. August 2019 · Betriebssysteme · andreas · 7 Kommentare

Die Installation des .NET Framework 3.5 ist i.d.R. unter Windows Server 2019 über den Servermanager nicht möglich und scheitert mit einem Fehler 0x800f0954

Glücklicherweise hilft der bereits von Windows 10 bekannte Trick, die Installation über die Kommandozeile durchzuführen (ggf. das “D:” durch das Laufwerk ersetzen, in dem das Installationsmedium liegt):

PS C:\Windows\system32> DISM /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:d:\sources\sxs

Tool zur Imageverwaltung für die Bereitstellung
Version: 10.0.17763.1

Abbildversion: 10.0.17763.615

Features werden aktiviert
[==========================100.0%==========================]
Der Vorgang wurde erfolgreich beendet.
PS C:\Windows\system32>