Author Archive

Holzboxen entwerfen mit OpenSCAD

Für mein Bücherregal möchte ich einige Boxen aus Holz bauen, die die Außenmaße 36x26x26 cm (Länge, Breite, Höhe) haben sollen. Um den Entwurf zu visualisieren, nutze ich OpenSCAD, eine freie CAD-Software. Die Besonderheit von OpenSCAD ist die Steuerung per Programmcode, die Maus hat nur wenig zu tun sowie die Möglichkeit, direkt STL-Dateien zu erzeugen, die dann im 3D-Drucker verarbeitet werden können.

Legen wir mal los!

Zuerst zeichnen wir mittels cube() Funktion einen Würfel, um Gewissheit über die Achsen zu bekommen.

cube([50,30,10]);

Wir erkennen anhand der Maße die Achsen: X geht nach rechts, Y nach hinten, Z nach oben. Jetzt wird es Zeit, die ersten Wände zu zeichen.

Im folgenden Bild sieht man die Vorder- und die Hinterwand. Für die Dicke der Holzplatten nutze ich eine Variable, so lässt sich das Design noch auf andere Plattendicken übertragen. Mit translate() verschiebe ich die Rückwand um die Dicke des Holzes nach hinten.

Im folgenden Bild sieht man die Seitenwand vor dem Verschieben, die Objekte gehen hier ineinander über, es ist nicht klar, wo die Vorderwand und das Seitenteil anfangen und aufhören. So etwas gilt es zu vermeiden.

Im folgenden Bild sehen wir das Ergebnis der Rotation mittels rotate(). Die Platte (und die Maße) passen noch nicht, die Seitenwände müssen sauber zwischen Vorder und Rückteil eingepasst werden.

Hier noch ein Bild von oben.

Nach dem Einfügen und Einpassen der Seitenwände (360mm – 2 * Plattendicke) haben wir das folgende Bild, zusammen mit einem der Zylinder für den Griff.

Hier noch aus einer anderen Perspektive, mit dem Zylinder schon auf der richtigen Höhe.

Im nächsten Schritt dupliziere ich den Zylinder und richte beide von der Mitte aus.

Im nächsten Schritt nutze ich die hull() Funktion, um beide Objekte mit einer Hülle zu versehen. In einem ersten Versuch hatte ich einen Quader eingepasst, die Lösung mit der Hülle ist aber wesentlich einfacher und sauberer. Das gesamte Objekt wird jetzt in die Kiste verschoben, um bei der folgenden Differenz-Funktion (Vorderseite minus umhüllte Zylinder) auf jeden Fall vorn und hinten ein sauberes Ergebnis zu liefern.

Im folgenden Bild sieht man das vorläufige Ergebnis, in einem folgenden Beitrag werde ich vermutlich zeigen, wie man einen Boden für die Box einpasst.

Zum Abschluss der fertige Quellcode:

/* param. Holzdicke */
holzdicke = 12;
 
// Rückseite
color([0/255, 255/255, 0/255],1)
translate([0, 360-1*holzdicke, 0]) {
 cube([260,holzdicke,260]);
}
 
 
// Seitenteil 1
translate([holzdicke,holzdicke,0]){
 rotate(a=[0,0,90]) { 
  cube([360-2*holzdicke,holzdicke,260]);
 } // rotate
} // translate
 
// Seitenteil 2
color([0/255, 0/255, 255/255],1)
translate([260,holzdicke,0]){
 rotate(a=[0,0,90]) { 
  cube([360-2*holzdicke,holzdicke,260]);
 } // rotate
} // translate
 
 
difference(){
// Vorderseite
 color([255/255, 0/255, 0/255],1) 
 cube([260,holzdicke,260]);
 
// Griffloch
 hull(){
  // Zylinder 1
  translate([260/2-30,30,200]){
   rotate(a=[90,0,0]) {
    cylinder(h = 80, r1 = 35/2, r2 = 35/2);
   } // rotate
  } //translate
 
  // Zylinder 2
  translate([260/2+30,30,200]){
   rotate(a=[90,0,0]) {
    cylinder(h = 80, r1 = 35/2, r2 = 35/2);
   } // rotate
  } // translate
 } // hull
} // difference

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Parsing Lexware Qif files with Python (and pandas)

Python has a few packages to parse Quicken files, among them:

However both packages generated errors when I used them with the file from Lexware Financial Manager 2019. Also as a programming exercise I decided to write my own parser, available under https://github.com/UweZiegenhagen/PyQIF-Parser.

As of today the code parses Quicken files and generates an Excel file with the accounts, classifications, categories and transactions it finds in the file. It supports (German) online accounts, investment accounts are not (yet) supported. I do not use my portfolio with Quicken so I probably will not implement this, feel free ask for it (with example files) or send pull requests.

Some code example is provided:

from PyQifParser import PyQifParser
 
P = PyQifParser(r'C:\Users\Uwe\Nextcloud\QIF-Parser\Quicken_h.QIF')
P.parse()
P.to_excel('r:/export.xlsx')

I plan to extend the code with repect to a) visualisation, b) sanity checks and c) statistical analyses

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Hashes von Dateien erstellen mit Powershell

Verzeichnisse lassen sich recht einfach mit Powershell abgleichen, wenn man die Hashes aller enthaltenen Dateien vergleicht. Standardmäßig nutzt Powershell SHA256, dies lässt sich jedoch recht leicht ändern.

dir c:\ | get-filehash |  export-csv -notypeinformation -delimiter  ";" -path r:\files.csv 
 
PSDefaultParameterValues.add("Get-FileHash:Algorithm","MD5")

Die erzeugten Daten lassen sich dann leicht in Excel weiterverabeiten.

"Algorithm";"Hash";"Path"
"SHA256";"C883B5D2E16D22B09B176CA0786128F8064D47EDF26186B95845AA3678868496";"C:\msdia80.dll"

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

ZIP-Dateien erstellen mit Powershell

Hier ein kleines Beispiel, wie man mit Powershell ein Verzeichnis wegsichern kann, in diesem Fall eine Minecraft-Welt. Nützlich als Backup oder wenn man auf unterschiedlichen Rechnern spielt.

$datum = Get-Date -Format "yyyy-MM-dd_HHmm"
$maschine = $env:computername
 
$quelle = "C:\Users\Uwe\AppData\Roaming\.minecraft\saves\New World"
$ziel = "C:\Users\Uwe\Nextcloud\minecraft-" + $maschine + "_" + $datum + ".zip"
 
Compress-Archive -Path $quelle -DestinationPath $ziel

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Adressen zerlegen mit Python

Ich bin kürzlich auf die Herausforderung gestoßen, verschiedene Adresstypen aufzusplitten. Gegeben war immer die Straße und die Hausnummer, allerdings in verschiedenen länderspezifischen Variationen.

Hier eine Datei Datensatz.txt mit den Straßen:

Thanelstr. 46
Sieglinde-Briemer-Straße 716
Rennerstr. 542a
34, Rue de la Chanson
456 Market Square
Auf der Burg
Auf der Burg 234
90211 Melrost Place, Apt. 1

Hinweis: Benötigt man größere Mengen an Fake-Adressen, dann leistet die Faker-Bibliothek (https://github.com/joke2k/faker) gute Dienste. Mit dem folgenden Python-Code gelingt der Split in Straße und Hausnummer recht gut:

with open('Datensatz.txt', 'rt', encoding='utf-8') as eingabedatei:
    for zeile in eingabedatei:
 
        if zeile[-1] == '\n':
            zeile = zeile[:-1] # Entferne Zeilenumbruch, falls vorhanden
        gesplittet = zeile.split(' ') # Splitte anhand des Leerzeichens
        print(gesplittet) # gibt die Liste aus
 
        if gesplittet[-1].isdigit() and gesplittet[0].isdigit():
            namensteil = ''
            for i in gesplittet[1:]:
                namensteil = namensteil + " " + i 
            print('Name ist "', namensteil.strip() ,  '", Hausnummer ist ',  gesplittet[0], sep = '')
 
        elif gesplittet[-1][0].isdigit() and gesplittet[-1][-1].isalpha():
            namensteil = ''
            for i in gesplittet[:-1]:
                namensteil = namensteil + " " + i 
            print('Name ist "', namensteil.strip() ,  '", Hausnummer ist ',  gesplittet[-1], sep = '')
 
        elif gesplittet[-1].isdigit():
            namensteil = ''
            for i in gesplittet[:-1]:
                namensteil = namensteil + " " + i 
            print('Name ist "', namensteil.strip() ,  '", Hausnummer ist ',  gesplittet[-1], sep = '')
 
        elif gesplittet[0].isdigit():
            namensteil = ''
            for i in gesplittet[1:]:
                namensteil = namensteil + " " + i 
            print('Name ist "', namensteil.strip() ,  '", Hausnummer ist ',  gesplittet[0], sep = '')            
 
        elif gesplittet[0][0].isdigit() and gesplittet[0][-1] == ',':
            namensteil = ''
            for i in gesplittet[1:]:
                namensteil = namensteil + " " + i 
            print('Name ist "', namensteil.strip() ,  '", Hausnummer ist ',  gesplittet[0][:-1], sep = '')

Ergebnis:

['Thanelstr.', '46']
Name ist "Thanelstr.", Hausnummer ist 46
['Sieglinde-Briemer-Straße', '716']
Name ist "Sieglinde-Briemer-Straße", Hausnummer ist 716
['Rennerstr.', '542a']
Name ist "Rennerstr.", Hausnummer ist 542a
['34,', 'Rue', 'de', 'la', 'Chanson']
Name ist "Rue de la Chanson", Hausnummer ist 34
['456', 'Market', 'Square']
Name ist "Market Square", Hausnummer ist 456
['Auf', 'der', 'Burg']
['Auf', 'der', 'Burg', '234']
Name ist "Auf der Burg", Hausnummer ist 234
['90211', 'Melrost', 'Place,', 'Apt.', '1']
Name ist "Melrost Place, Apt. 1", Hausnummer ist 90211

Die Lösung ist nicht optimal, besser fährt man sicher mit libpostal und seinen Python-Bindings (https://github.com/openvenues/pypostal)

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Ein Jahreskalender mit LaTeX und Excel

This entry is part 2 of 3 in the series Kalender mit tikz-kalender

Anbei ein Jahreskalender für 2020, erstellt mit LaTeX und Excel. Excel deshalb, weil die Datumsfunktionen recht praktisch sind und mein LaTeX-Programmierkünste dafür nicht ausreichen.

Die Formel für die einzelnen Tage lautet:

=WENNFEHLER("\node at (" & C$2-1 &"," & -1* $B3 & ") [" & WENN(LINKS(TEXT(DATWERT($B3&"."&C$2&"."&$B$2);"TTT");1)="S";"weekend";"workday") & "] {\hspace*{-0.9em}{"  & TEXT(DATWERT($B3&"."&C$2&"."&$B$2);"TTT")   & "}};";"")

Inhaltlich geschieht dabei folgendes, am 1.1.2020 (Zelle C3)erklärt:

  1. Ich baue ein Datum aus dem Jahr in B2, dem Monat in C2 und dem Tag in B3
  2. Dieses Datum wird mittels TEXT() Funktion in den Tagesnamen umgewandelt
  3. Fängt dieser Tagesname mit „S“ an, handelt es sich um einen Wochenendtag, dann wird „weekend“ genutzt, sonst „workday“
  4. Dann setze ich den Tagesnamen in jeden einzelnen Node und verschiebe den Text dabei um -0.9em nach links (gibt sicher auch was in TikZ, was das macht, so ging es schneller)
  5. Wenn die Formel für den entsprechenden Tag einen Fehler bringt, weil der Tag (31.2.2020) nicht existiert, so wird nichts ausgegeben.
  6. Alle Node-Infos werden dann per copy paste in die TeX-Datei eingefügt und kompiliert

Hier die Dateien:

kalender.pdf

Kalendermacher_blog.xlsx

Hier der LaTeX-Code:

\documentclass{scrartcl}
\usepackage[a4paper,landscape,left=0.25cm,right=0.25cm,top=0.5cm,bottom=0.5cm]{geometry}
 
\usepackage[]{ifdraft}
\usepackage[]{attachfile}
\usepackage[]{eso-pic}
 
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
 
\renewcommand{\familydefault}{\sfdefault}
\RequirePackage[scaled=0.9]{helvet}
\usepackage{tikz}
\usepackage[right]{showlabels}
\usetikzlibrary{positioning}
\pagestyle{empty}
 
\usepackage{xcolor}
 
\usepackage{hyperref}
\usepackage{url}
 
\definecolor{weekendday}{RGB}{240,240,240}
\newcommand{\file}[1]{\textattachfile{#1}{\textcolor{blue}{\LaTeX\ Sourcecode}}}
 
\begin{document}  
 
\AddToShipoutPictureFG*{
  \put(35,10){\footnotesize Uwe Ziegenhagen, ziegenhagen@gmail.com %, \file{\jobname.tex}	
}
}
 
\begin{center}
\begin{tikzpicture}
[
    x=23mm,y=6mm,
    mybox/.style={rectangle,rounded corners,minimum width=23mm, minimum height=6mm,align=left},
	month/.style={mybox,align=center,draw=black,align=left,fill=white,thick,font=\bfseries\large},
    date/.style={mybox,draw=gray,fill=white,align=left,thick,minimum width=5mm,font=\bfseries\large},
    workday/.style={mybox,draw=black,text width=1.5cm,font=\bfseries\tiny},
    weekend/.style={mybox,draw=black,text width=1.5cm,fill=weekendday,font=\bfseries\tiny}
]
\node at (0,0) [month] {Januar};
\node at (1,0) [month] {Februar};
\node at (2,0) [month] {März};
\node at (3,0) [month] {April};
\node at (4,0) [month] {Mai};
\node at (5,0) [month] {Juni};
\node at (6,0) [month] {Juli};
\node at (7,0) [month] {August};
\node at (8,0) [month] {September};
\node at (9,0) [month] {Oktober};
\node at (10,0) [month] {November};
\node at (11,0) [month] {Dezember};
 
\node at (-0.7,-1) [date] {01};
\node at (-0.7,-2) [date] {02};
\node at (-0.7,-3) [date] {03};
\node at (-0.7,-4) [date] {04};
\node at (-0.7,-5) [date] {05};
\node at (-0.7,-6) [date] {06};
\node at (-0.7,-7) [date] {07};
\node at (-0.7,-8) [date] {08};
\node at (-0.7,-9) [date] {09};
\node at (-0.7,-10) [date] {10};
\node at (-0.7,-11) [date] {11};
\node at (-0.7,-12) [date] {12};
\node at (-0.7,-13) [date] {13};
\node at (-0.7,-14) [date] {14};
\node at (-0.7,-15) [date] {15};
\node at (-0.7,-16) [date] {16};
\node at (-0.7,-17) [date] {17};
\node at (-0.7,-18) [date] {18};
\node at (-0.7,-19) [date] {19};
\node at (-0.7,-20) [date] {20};
\node at (-0.7,-21) [date] {21};
\node at (-0.7,-22) [date] {22};
\node at (-0.7,-23) [date] {23};
\node at (-0.7,-24) [date] {24};
\node at (-0.7,-25) [date] {25};
\node at (-0.7,-26) [date] {26};
\node at (-0.7,-27) [date] {27};
\node at (-0.7,-28) [date] {28};
\node at (-0.7,-29) [date] {29};
\node at (-0.7,-30) [date] {30};
\node at (-0.7,-31) [date] {31};
 
\node at (11.7,-1) [date] {01};
\node at (11.7,-2) [date] {02};
\node at (11.7,-3) [date] {03};
\node at (11.7,-4) [date] {04};
\node at (11.7,-5) [date] {05};
\node at (11.7,-6) [date] {06};
\node at (11.7,-7) [date] {07};
\node at (11.7,-8) [date] {08};
\node at (11.7,-9) [date] {09};
\node at (11.7,-10) [date] {10};
\node at (11.7,-11) [date] {11};
\node at (11.7,-12) [date] {12};
\node at (11.7,-13) [date] {13};
\node at (11.7,-14) [date] {14};
\node at (11.7,-15) [date] {15};
\node at (11.7,-16) [date] {16};
\node at (11.7,-17) [date] {17};
\node at (11.7,-18) [date] {18};
\node at (11.7,-19) [date] {19};
\node at (11.7,-20) [date] {20};
\node at (11.7,-21) [date] {21};
\node at (11.7,-22) [date] {22};
\node at (11.7,-23) [date] {23};
\node at (11.7,-24) [date] {24};
\node at (11.7,-25) [date] {25};
\node at (11.7,-26) [date] {26};
\node at (11.7,-27) [date] {27};
\node at (11.7,-28) [date] {28};
\node at (11.7,-29) [date] {29};
\node at (11.7,-30) [date] {30};
\node at (11.7,-31) [date] {31};
 
 
% hier kommen die Sachen aus Excel rein
 
\end{tikzpicture}
\end{center}
\end{document}

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Mit Python PDFs herunterladen

Mit dem folgenden Python-Skript lassen sich auf einfache Weise alle PDFs von einer Webseite herunterladen.

from bs4 import BeautifulSoup
import urllib.request
import requests
 
url = 'http://irgendeineurl.de'
 
r  = requests.get(url)
data = r.text
soup = BeautifulSoup(data)
 
for link in soup.find_all('a'):
    if link.get('href').endswith('.pdf'):
        urllib.request.urlretrieve(url + link.get('href'), link.get('href'))
        print(url + link.get('href'))

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Beancount: einfache Beispieldatei

This entry is part 2 of 2 in the series beancount

Hier eine einfache Datei für die Arbeit mit beancount.

  • Max Mustermann hat ein Girokonto mit 0,00 Euro zum 1.1.2019
  • Er bezieht 1000,00 Euro Netto-Einkommen am 3. eines Monats
  • Am 15. eines Monats bezahlt er 300 Euro Miete
  • Am 20. eines Monats zahlt er 50 Euro Nebenkosten
  • Er gibt ungefähr 100 Euro für Lebensmittel aus, die er bar oder per Lastschrift kauft
option "name_assets"  "Vermoegen"
option "name_liabilities" "Verbindlichkeiten"
option "name_income"  "Einkommen"
option "name_expenses" "Ausgaben"
option "name_equity"  "Eigenkapital"

2019-01-01 open Vermoegen:Girokonto EUR
2019-01-01 open Vermoegen:Barkasse EUR
2019-01-01 open Ausgaben:Lebensmittel
2019-01-01 open Ausgaben:Wohnen:Miete
2019-01-01 open Ausgaben:Wohnen:Nebenkosten
2019-01-01 open Einkommen:Gehalt

2019-01-03 * "Gehalt"
  Einkommen:Gehalt -1000.00 EUR
  Vermoegen:Girokonto 1000.00 EUR

2019-01-15 * "Miete"
  Vermoegen:Girokonto -300.00 EUR
  Ausgaben:Wohnen:Miete 300.00 EUR

2019-01-20 * "Nebenkosten"
  Vermoegen:Girokonto -50.00 EUR
  Ausgaben:Wohnen:Nebenkosten 50.00 EUR

2019-01-17 * "Geld abheben"
  Vermoegen:Girokonto -50.00 EUR
  Vermoegen:Barkasse 50.00 EUR

2019-01-17 * "Lebensmittel"
  Vermoegen:Barkasse -29.95 EUR
  Ausgaben:Lebensmittel 29.95 EUR

2019-01-23 * "Lebensmittel"
  Vermoegen:Girokonto -70.88 EUR
  Ausgaben:Lebensmittel 70.88 EUR

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Kalender mit tikz-calendar erstellen

This entry is part 3 of 3 in the series Kalender mit tikz-kalender

Hier ein Beispiel, wie man mit tikz-calendar Jahreskalender erstellen kann. Kalenderereignisse müssen in einer externen Datei abgelegt werden, im Beispiel ist das die meineevents.events.

Die Farbnamen für die einzelnen Elemente lassen sich in https://www.sciencetronics.com/greenphotons/wp-content/uploads/2016/10/xcolor_names.pdf nachlesen.

\documentclass{tikz-kalender}
 
\setup{%
lang=german,
year=2020,
showweeknumbers=true,
title={Urlaub},
xcoloroptions={x11names},
titleColor=cyan, 
eventColor=brown,
periodColor=lime,
monthBGcolor=red,
monthColor=Purple0,
workdayColor=yellow,
saturdayColor=magenta,
sundayColor=orange,
events={meineevents} % Einbinden der events-Datei
}
 
\begin{document}
\makeKalender
\end{document}

Hier der Inhalt der meineevents.events:

\event{\year-10-09}{John Lennon (1940)}
\event{2020-10-03}{Tag d. dt. Einheit}
\event*{2020-04-12}{Ostersonntag}
\period{2020-02-01}{2020-02-06}[color=Gray0,name={Urlaub}]; 

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Mit RSA-Schlüsseln auf Linux anmelden

Bislang habe ich immer die Kombination aus Username/Passwort für die Authentifizierung an meinen Linux-Maschinen genutzt, aus purer Faulheit stelle ich aber aktuell auf schlüssel-basierte Logins um. Hier eine kurze Anleitung, wie man die entsprechenden Schlüssel unter Windows erstellt.

Als SSH-Shell nutze ich unter Windows putty, das mit puttygen auch einen entsprechenden Key-Generator mit sich bringt. Diesen startet man, wählt „SSH-2 RSA“ aus, trägt bei der Schlüssellänge 4096 ein und drückt „Generate“

Anschließend bewegt man die Maus, um genügend Entropie zu erzeugen.

Nachdem die Schlüssel fertiggestellt sind, kann man mit „Save public key“ und „Save private key“ die beiden Schlüssel speichern. Ein Passwort legen wir hier explizit nicht fest, denn wir wollen ja ein passwort-losen Login.

Die public-Key-Datei kopieren wir dann auf die Linux-Maschine, ich habe dazu einfach WinSCP genutzt.

Auf der Linux-Maschine loggt man sich dann mit Username und Passwort ein und legt a) die Datei ~/.ssh/authorized_keys an, falls diese noch nicht existiert. Dann kopiert man mittels cat >> .ssh/authorized_keys den neuen Key an das Ende der authorized_keys.

Nun muss nur noch in Putty in den Eigenschaften der Verbindung der private key hinterlegt werden und die Session gespeichert werden, die schlüssel-basierte Verbindung sollte jetzt klappen.

Bei mir tat sie das nicht, mein Linux-Server brachte nur die Meldung „Server refused our key“. Die Lösung fand sich dann unter https://www.hpbyte.ch/index.php?/archives/842-PuTTY-und-Server-refused-our-key.html bzw. unter http://www.walkernews.net/2009/03/22/how-to-fix-server-refused-our-key-error-that-caused-by-putty-generated-rsa-public-key/

Der Key muss a) in einer Zeile stehen und b) es muss ssh-rsa davor stehen. Diese Anpassungen habe ich dann unter Windows schnell gemacht (per Ultraedit, jeder andere Editor sollte auch gehen, mit vim wie unter den Links beschrieben kenn ich mich nicht so gut aus) und die oben erwähnten Schritte (auf den Server kopieren, an die authorized_keys anhängen) nochmal gemacht. Jetzt klappt’s auch mit der Verbindung.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website