Tyranus-Blog
Blog von tyranus.de

Tag: ssh

4. März 2016
Linux Terminal

mosh ist ein Remote Terminal Programm, dass auf ssh aufsetzt und robust gegen Verbindungsbrüche und hohe Latenzen ist. Verbindungen werden wieder aufgenommen, sobald wieder Konnektivität herrscht und tippen ist bei schlechten Verbindungen angenehmer, da der lokale Client das Shell-Feedback gibt. Mosh nutze ich besonders gerne beim mobilen Arbeiten für den Fall, dass die Verbindung langsam ist, abbricht oder ich das Notebook zwischendurch einfach mal zuklappen muss.

Mit homebrew installiert man die neuste Version von mosh über das Kommando:

Da mosh auf ssh aufsetzt, nutzt es ebenso die ~/.ssh/config oder auch ~/.ssh/authorized_keys und man verbindet sich genau so zu Servern, wie mit ssh:

Hat man nun das Problem, dass mit Mosh über das Mac Terminal die Maus statt zu scrollen durch die Kommando-Historie wandert, so kann man dies über eine Einstellung des Terminal ändern.

Mac Terminal Einstellungen Alternative Tastatur

In den Terminal-Einstellungen unter: Profile > Tastatur half bei mir die Option Alternativen Bildschirm scrollen abzuwählen. Anschließend konnte ich sofort im Terminal mit der Maus den Bildschirm nach oben Scrollen.

 

 

17. August 2013

In diesem Artikel beschreibe ich, wie man ohne Verwendung eines HTTPS-Servers einen verschlüsselten Zugriff auf sein SVN-Repository erhält. Der Zugriff enthält Autorisierung über SVN und Authentifizierung über SSH.

Ziele

  • SVN-Zugriff ohne Webserver.
  • Zugriff getunnelt über SSH.
  • Autorisierung/Authentifizierung ohne Unix-User. Nur mit SVN-Konfigs.

Vorraussetzungen

  • Vorhandenes SVN-Repository
  • SSH-Server
  • SVN-Client + SSH-Client zum Testen
  • svnserve installier

Annahmen

Diese Annahmen gelten für die folgende Anleitung. Natürlich können Repository-Namen und Verzeichnisse auch abweichen.

  • Ein SVN-Repository liegt unter /home/svn/repo1
  • Es existiert ein Benutzer svn, dessen Home-Verzeichnis /home/svn ist.

SSH und svnserve einrichten

svnserve sollte mit subversion oder den subversiontools bereits installiert sein. Falls nicht müssen die Pakete installiert werden.

Wir bereiten ein Logfile vor, in das svnserve später schreiben soll.

Im Konfig-Verzeichnis unseres Repositories legen wir die Konfig-Datei für den svnserve /home/svn/repo1/conf/svnserve.conf mit folgendem Inhalt an.

Dabei verzichten wir absichtlich auf die Zeile password-db =, weil die Authentifizierung über SSH erfolgt. anon-access = none legt fest, dass das Repository nicht anonym zugreifbar ist. auth-access = write legt fest, dass das Repository für authentifizierte Benutzer lesbar und schreibbar ist. Welcher Nutzer was wo im Repository genau kann, legt die SVN-Autorisierungsdatei authz im selben Verzeichnis fest. Diese konfigurieren wir in der letzten Zeile authz-db = authz. Sie enthält beispielsweise folgende Einträge:

Oben legen wir beliebige Gruppen fest und weisen ihnen Benutzernamen zu. Unterhalb von [/] konfigurieren wir die Autorisierung im Root des Repositores. Hier dürfen alle nichts ( * =), aber tim darf alles ( tim = rw). Die Einstellungen vererben sich in Unterverzeichnisse, sofern sie dort nicht überschrieben werden.

Darunter kommen die Einstellungen für die Projektverzeichnisse. Gruppen sind am vorangestellten @ von Benutzernamen unterscheidbar.

Die Autorisierung ist damit fertig. Fehlt noch die Authentifizierung. Diese findet über ssh statt. Damit ein Benutzer auf das Repository zugreifen kann, muss sein öffentlicher SSH-Schlüssel in die Datei /home/svn/.ssh/authorized_keys

eingefügt werden. Dort wird aber auch der Aufruf des svnserve konfiguriert, der durch das SSH-Login des Benutzers vin SSH-Server direkt gestartet wird. Der Inhalt sieht für einen Benutzer so aus:

Dabei legt --tunnel-user=name den Namen fest, mit dem der Besitzer des privaten Schlüssels auf svnserve zugreift.

--log-file=... enthält das File, das wir zuvor angelegt haben. Die Parameter nach dem Logfile sind dafür da, damit der Benutzer neben dem svnserve den SSH-Zugriff nicht noch anderweitig benutzen kann. Der Abschnitt ssh-rsa [..] name@host entspricht dem SSH Public Key des Benutzers, der Zugriff auf das Repository haben soll.

Jede Zeile enthält einen Eintrag pro Benutzer. Dabei änder sich lediglich --tunnel-user und natürlich der öffentliche SSH Schlüssel.

Zugriff testen

Nachdem nun Autorisierung und Authentifizierung für den Benutzer tim eingerichtet sind, können wir den Zugriff von dem Client testen, von dem wir den öffentlichen SSH-Schlüssel eingetragen haben.

Das svn vor dem @ ist dabei der Unix Benutzer, dem das /home/svn auf dem Server hostname gehört. Das repo1 ist der Root des Repository. Es kann natürlich auch erweitert werden, z.B. repo1/src/project1.

Falls eine Fehlermeldung von SSH kommt, so kann folgendes helfen

  • Ausgabe von Debug-Informationen für die SSH-Verbindung:
  • Korrekte Dateirechte prüfen auf dem Server. Damit SSH die Datei authorized_keys verwendet, sollte sie die Dateirechte 600 besitzen. Außerdem sollte das Home-Verzeichnis maximal 750, und das .ssh-Unterverzeichnis maximal 700 besitzen.

Falls eine Fehlermeldung von svn kommt, so kann das Logfile auf dem Server unter /var/log/svnserve.log weiterhelfen.