curl -u in python

Problem

Sometimes you might want to authenticate against an API with username and password where examples are only listed with curl:


curl -u username:password https://127.0.0.1/foobar

Solution

If you want to implement the same in python you can use the following


import requests
from requests.auth import HTTPBasicAuth
username = "username"
password = "password"

request_url = "https://127.0.0.1/foobar"

result = requests.post(request_url, auth=HTTPBasicAuth(username, password))

Hope it helps, let me know

Bing webmaster center

Bing Webmaster Central Screenshot

Bing Webmaster Central Screenshot

Die neue Microsoft Suchmaschine Bing ist nun ein paar tage alt und für den tüchtigen Webmaster beginnt die Arbeit. Zentrale Anlaufstelle für eine Suchmaschinenoptimierung für Bing ist das Bing Webmaster Center.

Zur Nutzung ist eine Windows Live ID nötig, welche bei Bedarf aber sehr schnell angelegt ist. Wie aus den Google Webmaster Tools muss sich der Webmaster einer Seite erst als solcher verifizieren, dies kann über zwei Wege erledigt werden:

XML file authentication
Dabei wird  eine neue Datei mit XML Inhalt im Webspace root unter definierter Stelle hinterlegt.

Meta tag authentication
Hierbei wird ein Tag in den Header der Seite eingefügt, der beispielhaft so aussieht:
<meta name=“msvalidate.01″ content=“ABCDFASDASDFRERWR§“ />

Nach der Validierung stehen folgende Funktionen zur Verfügung:
  • Summary (Zusammenfassung)
  • Profile  (Einstellungen)
  • Crawl Issues (Crawling Fehler)
  • Backlinks (Eingehende Links)
  • Outbound Links (Ausgehende Links)
  • Keywords (Schlagwörter)
  • Sitemaps
Die Funktionen sind selbsterklärend und bieten alles nötige. Die Aufmachung ist dabei an Google angelehnt, in manchen Details gar besser gelöst.

SSH Key Linux OSX Problem

Mittels einer SSH Key authentication sichert man Verbindungen ab, bzw stellt sicher, dass die Person, die auf einen Server will, auch wirklich die Person ist, die sie vorgibt zu sein. DIeses Verfahren wird mit einem Schlüsselpaar sichergestellt, das aus einem public und einem private key besteht. Auf dem Server liegt dabei das public file, der Bneutzer muss das private file besitzen.

Solch ein Schlüsselpaar kann mittels putty generiert werden. Als Resultat erhällt man eine .ppk file und eine .pub file. Die .pub File, bzw dessen Inhalt kopiert man auf dem Server in die Datei

/home/user/.ssh/authorized_keys

Die ppk File speichert man an einem sicheren Ort. Möchte man nun mittels putty auf den Server zugreifen, kann man im ssh Menü einstellen, welchen key er dazu verwenden soll.

Kopiert man diesen ppk key jedoch auf ein unix system, und versucht dann auf den server mittels:

ssh -i /home/eigenerlocalerBenutzer/.ssh/private.ppk host.com -p 12345 -v

zuzugreifen, bekommt man die folgende Fehlermeldung:

debug1: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>

Das Problem ist das ppk File, welches kein offenes Dateiformat ist. Um den private Key auch unter Linux zu nutzen, muss in puttygen der Schlüssel geöffnet werden und ein Export in das openssh Format vollzogen werden.

Verwendet man nun diesen openssh private Key, funktioniert es ohne Probleme.

Ein weiterer Stolperstein unter Unix Betriebssystemen sind die Zugriffsrechte. Ein server wird einen Key nicht akzeptieren, wenn auf dem Client die ssh Files von jedem änderbar sind. Dies äußert sich in der Fehlermeldung:

Permissions 0777 for ‚.ssh/key.priv‘ are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: .ssh/key.priv

Wobei 777 beispielhaft als negativstes Beispiel aufgeführt ist.

Korrekt müssen die Zugriffsrechte folgendermaßen gesetzt sein:

Der ssh Key und das Verzeichniss muss dem User gehören, der ihn benutzen soll.

chown username /Users/username/.ssh/*

chown username /Users/username/.ssh

Und die Rechte müssen gesetzt sein:

chmod 700 /Users/username/.ssh/

chmod 600 /Users/username/.ssh/*

Damit ist das Zugriffsproblem gelöst.

Um den Zugriff etwas einfacher zu gestaltetn, kann eine config File im ssh Ordner auf dem Client hinterlegt werden mit folgender beispielhafter Konfiguration:

Host host.de
IdentityFile ~/.ssh/key.priv
Port 12345
PreferredAuthentications publickey
Protocol 2

Host entspricht dem Host, auf den sich die Einstellungen beziehen. IndetityFile gibt den Ort des privaten Keys an. Port muss nur angegeben werden, wenn der SSH Server auf einen anderen Port eingestellt ist. PreferredAuthentications publickey stellt die Methode ein und Protocol stellt die verwendete SSH Version ein.