<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>www.linuxweblogs.nl &#187; Ton Kersten</title>
	<atom:link href="http://www.linuxweblogs.nl/author/ton-kersten/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.linuxweblogs.nl</link>
	<description>Een verzameling Nederlandstalige weblogs die schrijven over Linux</description>
	<lastBuildDate>Tue, 07 Feb 2012 21:59:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>SSH display problemen getackeld</title>
		<link>http://www.atcomputing.nl/blog/archives/2010/02/index.php#e2010-02-08T11_03_07.txt?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ssh-display-problemen-getackeld</link>
		<comments>http://www.atcomputing.nl/blog/archives/2010/02/index.php#e2010-02-08T11_03_07.txt#comments</comments>
		<pubDate>Mon, 08 Feb 2010 09:03:07 +0000</pubDate>
		<dc:creator>Ton Kersten</dc:creator>
				<category><![CDATA[Algemeen]]></category>
		<category><![CDATA[Systeembeheer, Tips and Tricks]]></category>

		<guid isPermaLink="false">http://www.atcomputing.nl/blog/archives/2010/02/index.php#e2010-02-08T11_03_07.txt</guid>
		<description><![CDATA[AT Computing heeft enige tijd geleden besloten
over te gaan op een compleet nieuwe infrastructuur. Het gewone, bekende
spul, zoals een SAN, virtualisatie en Linux.

Nu heb ik aardig wat van die systemen ingericht en geconfigureerd en ik wilde
op een du...]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://www.atcomputing.nl">AT Computing</a> heeft enige tijd geleden besloten<br />
over te gaan op een compleet nieuwe infrastructuur. Het gewone, bekende<br />
spul, zoals een SAN, virtualisatie en Linux.</p>
<p>Nu heb ik aardig wat van die systemen ingericht en geconfigureerd en ik wilde<br />
op een duidelijke manier kunnen zien op welke server ik zat. Nu kan dat in de<br />
prompt en op allerlei andere manieren, maar mij leek het leuk om dat voor het<br />
daadwerkelijke inloggen te doen. Met <code>SSH</code> is het mogelijk om in de<br />
configuratie te zetten dat er voor het inloggen een <em>banner</em> wordt getoond. Dit<br />
is van oorsprong bedoeld om juridische teksten over het gebruik van het systeem<br />
te tonen, maar dat kun je natuurlijk ook voor andere zaken gebruiken.</p>
<p>Nu alleen nog de inhoud van de <em>banner</em> file. Hiervoor heb ik het<br />
programma <a href="http://www.figlet.org/">Figlet</a> gebruikt en wanneer ik nu<br />
inlog op de server zou het er zo uit moeten zien:</p>
<pre><code> _ __ ___  _   _ ___  ___ _ ____   _____ _ __
| '_ ` _ \| | | / __|/ _ \ '__\ \ / / _ \ '__|
| | | | | | |_| \__ \  __/ |   \ V /  __/ |
|_| |_| |_|\__, |___/\___|_|    \_/ \___|_|
           |___/
</code></pre>
<p>Maar zo af en toe als ik in log staat er niet wat ik verwacht, maar </p>
<pre><code> _ __ ___  _   _ ___  ___ _ ____   _____ _ __
| '_ ` _ \\| | | / __|/ _ \\ '__\\ \\ / / _ \\ '__|
| | | | | | |_| \\__ \\  __/ |   \\ V /  __/ |
|_| |_| |_|\\__, |___/\\___|_|    \\_/ \\___|_|
           |___/
</code></pre>
<p>Nou, dat is niet wat ik bedoel. Alle backslashes worden verdubbeld en ik weet<br />
nog niet waarom. Discussie met collega&#8217;s stuurde me richting het programma<br />
<code>mingetty</code>, omdat dat de inlog procedure afhandelt. Op ons CentOS 5.4 systeem<br />
staat in de source code van <code>mingetty</code></p>
<pre><code>if ((fd = fopen (ISSUE, "r"))) {
    while ((c = getc (fd)) != EOF) {
        if (c == '\\')
            output_special_char (getc(fd));
        else
            putchar (c);
    }
    fflush (stdout);
    fclose (fd);
}
</code></pre>
<p>dus dat zou het best wel eens kunnen zijn.</p>
<p>Om nu niet direct <code>mingetty</code> opnieuw te compileren en allerlei andere<br />
problemen te veroorzaken, heb ik als eerste test een <code>mingetty</code> escape<br />
code in de <em>banner</em> file opgenomen. Bij het inloggen werd die niet<br />
door <code>mingetty</code> geparsed, dus dat kon de oorzaak niet zijn. Even verder<br />
nadenkend kwam ik tot de conclusie dat <code>mingetty</code> in het hele spel niet<br />
voor komt en dat dit dus een dood spoor is.<br />
<br />
Dan zijn er niet meer zo heel veel opties over.</p>
<p>Uit de <code>OpenSSH</code> server source code bleek duidelijk dat daar het probleem niet<br />
kon zitten, omdat deze de <em>banner</em> file met een &#8216;atomic write&#8217; naar de<br />
overkant stuurt. Daar zit dus geen enkele vorm van processing tussen.</p>
<p>Maar als het de server niet is, dan misschien de client. Verder zoekend in<br />
de source code toonde aan dat hier het probleem zou moeten zitten.<br />
In de file <code>sshconnect2.c</code> staat (in mijn versie, OpenSSH version 5.3p1) de<br />
functie <code>input_userauth_banner</code> die de <em>banner</em> laat zien die door de server<br />
gestuurd wordt. Op regel 417 staat:</p>
<pre><code>strnvis(msg, raw, len * 4 + 1, VIS_SAFE|VIS_OCTAL);
</code></pre>
<p>Dus<br />
&#8220;unsafe&#8221; characters en &#8220;octal&#8221; tekens worden gecodeerd. De manual pagina van<br />
<code>strnvis</code> zegt: </p>
<blockquote>
<p>There is one additional flag, VIS_NOSLASH, which inhibits<br />
  the doubling of backslashes and the backslash before the<br />
  default format</p>
</blockquote>
<p>Ik heb de regel dus veranderd in</p>
<pre><code>strnvis(msg, raw, len * 4 + 1, VIS_SAFE|VIS_OCTAL|VIS_NOSLASH);
</code></pre>
<p>en daarna SSH opnieuw gecompileerd. Als ik nu met deze nieuwe client<br />
inlog in de nieuwe server, dan is het probleem spoorloos verdwenen.</p>
<p>Toen ik dit probleem als bug report wilde aanmelden bij de OpenSSH<br />
ontwikkelaars bleek dat ongeveer een uur voor mij iemand anders dezelfde<br />
bug en patch al had ingediend. Het probleem zal worden opgelost in<br />
versie 5.4, maar het kan wel even duren voordat het in de distributies<br />
beschikbaar is.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.linuxweblogs.nl/2010/02/08/ssh-display-problemen-getackeld/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

