<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>SSH on Natenoms Blog</title><link>https://natenom.de/tags/ssh/</link><description>Recent content in SSH on Natenoms Blog</description><generator>Hugo -- gohugo.io</generator><language>de</language><copyright/><lastBuildDate>Sun, 21 Jun 2015 16:00:41 +0000</lastBuildDate><atom:link href="https://natenom.de/tags/ssh/index.xml" rel="self" type="application/rss+xml"/><item><title>Email verschicken auch bei nicht interaktiven Logins über SSH</title><link>https://natenom.de/2015/06/email-verschicken-auch-bei-nicht-interaktiven-logins-ueber-ssh/</link><pubDate>Sun, 21 Jun 2015 16:00:41 +0000</pubDate><guid>https://natenom.de/2015/06/email-verschicken-auch-bei-nicht-interaktiven-logins-ueber-ssh/</guid><description>&lt;p>Es ist eine schöne Funktion, sich beim Einloggen eines Benutzers auf einem Linux-Server eine Email zukommen zu lassen mit den Informationen wie IP-Adresse, weitere eingeloggte Benutzer usw.&lt;/p>
&lt;p>Dazu erstellt man z. B. eine ausführbare Datei in /etc/profile.d/, die dann nach dem Login beim Starten der Shell ausgeführt wird.&lt;/p></description><content:encoded><![CDATA[<p>Es ist eine schöne Funktion, sich beim Einloggen eines Benutzers auf einem Linux-Server eine Email zukommen zu lassen mit den Informationen wie IP-Adresse, weitere eingeloggte Benutzer usw.</p>
<p>Dazu erstellt man z. B. eine ausführbare Datei in /etc/profile.d/, die dann nach dem Login beim Starten der Shell ausgeführt wird.</p>
<p>Loggt sich jedoch jemand nicht direkt in einer interaktiven Shell per SSH ein, sondern nutzt z. B. mit -N die Weiterleitungsfunktion, so erhält man mit der genannten Methode keine Email. Dafür muss man früher ansetzen, beim Login selbst. Hierfür kann man PAM nutzen und es anweisen, eine Email abzusetzen, sobald ein Login im Gange ist.</p>
<p>Dazu nutzt man das Modul pam_exec und übergibt diesem als Argument das aufzurufende Script, welches man selbst erstellt.</p>
<p>Wie das genau funktioniert, steht unter <a  class='urlextern'  href="http://blog.th-neumeier.de/2011/02/send-email-on-ssh-login-using-pam/"title="Send email on SSH login using PAM | Yeah!">http://blog.th-neumeier.de/2011/02/send-email-on-ssh-login-using-pam/</a>.</p>]]></content:encoded></item><item><title>Mosh – eine Alternative zu SSH, wenn man oft wechselnde Netzanbindungen verwendet</title><link>https://natenom.de/2015/03/mosh-eine-alternative-zu-ssh-wenn-man-oft-wechselnde-netzanbindungen-verwendet/</link><pubDate>Tue, 31 Mar 2015 08:32:32 +0000</pubDate><guid>https://natenom.de/2015/03/mosh-eine-alternative-zu-ssh-wenn-man-oft-wechselnde-netzanbindungen-verwendet/</guid><description><![CDATA[<p>Mosh (Mobile Shell) ist eine Alternative zu SSH, wenn man öfters mal die Netzanbindung wechselt, weil man z. B. viel unterwegs ist.</p>
<p>Bei normalem SSH muss man sich jedes Mal neu einloggen, sobald sich die IP-Adresse des Clienten ändert.</p>
<p>Nicht so bei Mosh, hier zählt die Client-IP-Adresse für den Mosh-Server überhaupt nichts, der Client authentifiziert sich immer über einen eigenen Schlüssel.</p>]]></description><content:encoded><![CDATA[<p>Mosh (Mobile Shell) ist eine Alternative zu SSH, wenn man öfters mal die Netzanbindung wechselt, weil man z. B. viel unterwegs ist.</p>
<p>Bei normalem SSH muss man sich jedes Mal neu einloggen, sobald sich die IP-Adresse des Clienten ändert.</p>
<p>Nicht so bei Mosh, hier zählt die Client-IP-Adresse für den Mosh-Server überhaupt nichts, der Client authentifiziert sich immer über einen eigenen Schlüssel.</p>
<p>Und so ist es auch egal, ob man von WLAN nach UMTS wechselt, sich der Rechner für eine Stunde schlafen legt und dann wieder per DSL einwählt. Man ist beim Aufbau einer neuen Verbindung mit anderer IP-Adresse immer noch am Mosh-Server eingeloggt.</p>

<h2 id="verbindungsaufbau" data-numberify>Verbindungsaufbau<a class="anchor ms-1" href="#verbindungsaufbau"></a></h2>
<p>Um eine Verbindung per Mosh aufzubauen, wird zuerst eine SSH-Verbindung zum Server aufgebaut. Über diese Verbindung wird auf dem Server der Mosh-Server gestartet der geheime Schlüssel an den Clienten übermittelt. Dann wird die SSH-Verbindung beendet. Auf dem Clienten wird der Mosh-Client gestartet und verbindet sich per UDP (siehe unten) auf den Mosh-Server und authentifiziert sich diesem gegenüber mit dem vorher übermittelten Schlüssel.</p>
<p>Anstatt diesen gesamten Vorgang über den Clienten erledigen zu lassen kann man sowohl den Mosh-Server als auch den Mosh-Clienten manuell starten, muss dann aber dafür sorgen, dass der Client den richtigen Schlüssel und Port kennt.</p>
<p>Der Mosh-Server benötigt im Gegensatz zu SSH für jeden Clienten einen eigenen Port, angefangen bei 60001.</p>

<h2 id="reaktionszeit" data-numberify>Reaktionszeit<a class="anchor ms-1" href="#reaktionszeit"></a></h2>
<p>Selbst über sehr langsame Verbindungen mit einer großen Round-Trip-Time soll Mosh schnell auf Tastatureingaben reagieren, da nicht jedes  Byte vom Server gesendet wird sondern immer nur die aktuelle Bildschirmausgabe.</p>
<p>Eingaben, die noch nicht vom Mosh-Server bestätigt worden sind, werden unterstrichen dargestellt; so kann man weiterschreiben und Texte korrigieren, ohne jedes Mal wie bei SSH darauf zu warten, wann die Eingaben endlich angekommen sind.</p>

<h2 id="sonstiges" data-numberify>Sonstiges<a class="anchor ms-1" href="#sonstiges"></a></h2>
<ul>
<li>Mosh benötigt keine Root-Rechte.</li>
<li>Mosh (Server und Client) gibt es als Pakete für alle möglichen Linux-Distributionen, für OS X, für Cygwin und als Erweiterung für Google Chrome.</li>
</ul>

<h2 id="8230" data-numberify>&#8230;<a class="anchor ms-1" href="#8230"></a></h2>
<p>Eine interessante Ergänzung zu SSH auch wenn ich wegen mangelndem Wissen überhaupt nicht einschätzen kann, ob Mosh sicher ist. Zu diesem Thema gibt es auf Youtube ein paar Videos, die man sich mal angucken sollte…</p>
<p>Der letzte Commit auf der GitHub-Seite ist von Dezember 2014.</p>
<p>Die Projektseite ist <a  class='urlextern'  href="https://mosh.mit.edu/"title="Mosh: the mobile shell">hier</a> zu finden.</p>
<p>Danke an Mister n. für den Tipp.</p>]]></content:encoded></item><item><title>Timeouts bei SSH-Verbindungen (bei KabelBW)</title><link>https://natenom.de/2014/02/timeouts-bei-ssh-verbindungen-bei-kabelbw/</link><pubDate>Sun, 09 Feb 2014 09:06:26 +0000</pubDate><guid>https://natenom.de/2014/02/timeouts-bei-ssh-verbindungen-bei-kabelbw/</guid><description><![CDATA[<h2 id="problem" data-numberify>Problem<a class="anchor ms-1" href="#problem"></a></h2>
<p>Seit der Internetanschluss bei mir auf <a  class='urlextern'  href="https://en.wikipedia.org/wiki/IPv6_transition_mechanisms#Dual-Stack_Lite_.28DS-Lite.29"title="IPv6 transition mechanisms - Wikipedia, the free encyclopedia">DS-Lite</a> umgestellt wurde, bekommen SSH-Verbindungen, bei denen nichts passiert, reproduzierbar zu allen Servern nach ca. fünf Minuten einen Timeout.</p>
<p>Vor der Umstellung kannte ich dieses Problem gar nicht, auch nicht bei anderen Internet Service Providern; SSH-Sitzungen waren auch nach Stunden der Untätigkeit noch da.</p>]]></description><content:encoded><![CDATA[<h2 id="problem" data-numberify>Problem<a class="anchor ms-1" href="#problem"></a></h2>
<p>Seit der Internetanschluss bei mir auf <a  class='urlextern'  href="https://en.wikipedia.org/wiki/IPv6_transition_mechanisms#Dual-Stack_Lite_.28DS-Lite.29"title="IPv6 transition mechanisms - Wikipedia, the free encyclopedia">DS-Lite</a> umgestellt wurde, bekommen SSH-Verbindungen, bei denen nichts passiert, reproduzierbar zu allen Servern nach ca. fünf Minuten einen Timeout.</p>
<p>Vor der Umstellung kannte ich dieses Problem gar nicht, auch nicht bei anderen Internet Service Providern; SSH-Sitzungen waren auch nach Stunden der Untätigkeit noch da.</p>
<p>Als Fix wurde immer eine tmux-Session betreten, dann hielt die Verbindung auch ewig.</p>

<h2 id="lösung" data-numberify>Lösung<a class="anchor ms-1" href="#lösung"></a></h2>
<p>Habe gestern darüber mir einem Mensch auf einem Mumble-Server gesprochen, der mit den Tipp gab, dass es Alive-Pakete für SSH gibt …</p>
<p>Tatsächlich steht in der Manpage von ssh_config:</p>
<blockquote>
<p><em>ServerAliveInterval</em><br>
Sets a timeout interval in seconds after which if no data has been received from the server, ssh(1) will send a message through the encrypted channel to request a response from the server.  The<br>
default is 0, indicating that these messages will not be sent to the server.  This option applies to protocol version 2 only.</p>
</blockquote>
<p>Per Voreinstellung ist der Wert 0 (Null), es werden also keine Alive-Pakete gesendet, wenn nichts passiert. Habe Client-seitig die Variable mit dem Wert 5 in die Datei /etc/ssh/ssh_config eingetragen.</p>
<p>Jetzt geht es wieder, vielen Dank dafür :)</p>]]></content:encoded></item><item><title>„Pro Zertifikat“-Bestimmungen für SSH</title><link>https://natenom.de/2013/02/pro-zertifikat-bestimmungen-fur-ssh/</link><pubDate>Mon, 18 Feb 2013 07:30:14 +0000</pubDate><guid>https://natenom.de/2013/02/pro-zertifikat-bestimmungen-fur-ssh/</guid><description>In der Manpage von sshd sind im Abschnitt AUTHORIZED_KEYS FILE FORMAT Möglichkeiten aufgelistet, öffentliche Schlüssel nur unter bestimmten Bedingungen zu erlauben oder gewisse Dinge zu erzwingen.
Besonders interessant ist das letzte Beispiel, bei dem bei einem bestimmten Zertifikat ein definiertes Kommando ausgeführt wird.
http://www.debian-administration.org/article/685/Restricting_SSH_logins_to_particular_IP_addresses.</description><content:encoded><![CDATA[<p>In der Manpage von sshd sind im Abschnitt AUTHORIZED_KEYS FILE FORMAT Möglichkeiten aufgelistet, öffentliche Schlüssel nur unter bestimmten Bedingungen zu erlauben oder gewisse Dinge zu erzwingen.</p>
<p>Besonders interessant ist das letzte Beispiel, bei dem bei einem bestimmten Zertifikat ein definiertes Kommando ausgeführt wird.</p>
<p><a  class='urlextern'  href="http://www.debian-administration.org/article/685/Restricting_SSH_logins_to_particular_IP_addresses"title="http://www.debian-administration.org/article/685/Restricting_SSH_logins_to_particular_IP_addresses">http://www.debian-administration.org/article/685/Restricting_SSH_logins_to_particular_IP_addresses</a>.</p>
]]></content:encoded></item><item><title>Eine laufende SSH-Verbindung steuern</title><link>https://natenom.de/2011/05/eine-laufende-ssh-verbindung-steuern/</link><pubDate>Fri, 27 May 2011 17:55:57 +0000</pubDate><guid>https://natenom.de/2011/05/eine-laufende-ssh-verbindung-steuern/</guid><description>&lt;p>Habe das in der LPIC-Vorbereitung zum ersten Mal gesehen, scheint wohl auch nicht sehr bekannt zu sein(?) …&lt;br>
Man kann einige Steuerbefehle direkt an eine laufende SSH-Sitzung senden.&lt;/p></description><content:encoded><![CDATA[<p>Habe das in der LPIC-Vorbereitung zum ersten Mal gesehen, scheint wohl auch nicht sehr bekannt zu sein(?) …<br>
Man kann einige Steuerbefehle direkt an eine laufende SSH-Sitzung senden.</p>
<p>Dies ist z.B. hilfreich, wenn eine Verbindung hängt und man diese trotzdem beenden will.<br>
Meine bisherige Methode war, das Terminal zu schließen.<br>
Die „bessere“ Methode ist, die SSH-Verbindung mit <span style="color: #ff0000;"><strong>~.</strong></span> ohne Umwege zu beenden, die Shell ist dann wieder frei :)</p>
<p>Eine Liste der verfügbaren Befehle erhält man mit <span style="color: #ff0000;"><strong>~?</strong></span></p>
<pre>Supported escape sequences:
 ~.  - terminate connection (and any multiplexed sessions)
 ~B  - send a BREAK to the remote system
 ~C  - open a command line
 ~R  - Request rekey (SSH protocol 2 only)
 ~^Z - suspend ssh
 ~#  - list forwarded connections
 ~&  - background ssh (when waiting for connections to terminate)
 ~?  - this message
 ~~  - send the escape character by typing it twice
</pre>
<p>Damit diese Kombinationen funktionieren, muss direkt vorher ein Zeilentrenner (z.B. Enter) eingegeben worden sein.</p>]]></content:encoded></item></channel></rss>