<?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>Long-term Memory &#187; SSH</title>
	<atom:link href="http://blog.dest-unreach.be/tag/ssh/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.dest-unreach.be</link>
	<description>A collection of note-to-self&#039;s</description>
	<lastBuildDate>Sun, 29 Jan 2012 16:05:00 +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>Converting a WRT320N to dd-wrt</title>
		<link>http://blog.dest-unreach.be/2010/11/30/converting-a-wrt320n-to-dd-wrt</link>
		<comments>http://blog.dest-unreach.be/2010/11/30/converting-a-wrt320n-to-dd-wrt#comments</comments>
		<pubDate>Tue, 30 Nov 2010 17:53:50 +0000</pubDate>
		<dc:creator>Niobos</dc:creator>
				<category><![CDATA[Networking & Security]]></category>
		<category><![CDATA[dd-wrt]]></category>
		<category><![CDATA[Ethernet]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[firmware]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[NAT]]></category>
		<category><![CDATA[router]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[switch]]></category>
		<category><![CDATA[WiFi]]></category>
		<category><![CDATA[WRT320N]]></category>

		<guid isPermaLink="false">http://blog.dest-unreach.be/?p=1891</guid>
		<description><![CDATA[I bought myself a new WiFi router. When in the shop, I specifically searched for a router that is supported by dd-wrt, and has (at least) 8MB of flash. I settled for the Linksys WRT320N: it has a dual band (switchable between 2.4GHz and 5GHz, not simultaneous) 802.11a/b/g/n radio, a 4 port GbE switch, and [...]]]></description>
			<content:encoded><![CDATA[<p>I bought myself a new WiFi router. When in the shop, I specifically searched for a router that is supported by <a href="http://www.dd-wrt.com/">dd-wrt</a>, and has (at least) 8MB of flash. I settled for the <a href="http://homesupport.cisco.com/en-us/wireless/lbc/WRT320N">Linksys WRT320N</a>: it has a dual band (switchable between 2.4GHz and 5GHz, not simultaneous) <a href="http://en.wikipedia.org/wiki/IEEE_802.11">802.11a/b/g/n</a> radio, a 4 port <a title="Gigabit Ethernet aka 1000base-T" href="http://en.wikipedia.org/wiki/Gigabit_Ethernet">GbE</a> switch, and a WAN port. It houses a Broadcom BC4717 processor running at 354MHz, 8MB of flash and 32MB of RAM.</p>
<p>The default Linksys firmware is actually not bad, but dd-wrt just offers a ton more features: Multiple <a href="http://en.wikipedia.org/wiki/Service_set_%28802.11_network%29">SSIDs</a>, <a href="http://en.wikipedia.org/wiki/IPv6">IPv6</a> support (including <a href="http://www.sixxs.net/">Sixxs</a> tunneling), <a href="http://en.wikipedia.org/wiki/Bandwidth_cap">WAN volume</a> monitoring, custom firewalling, <a href="http://en.wikipedia.org/wiki/Quality_of_service">traffic shaping</a>, … So I decided to void my warranty and put my router on steroids! Mandatory note: this may very well turn your router in to a very expensive brick.</p>
<p><span id="more-1891"></span></p>
<h3>The initial flash</h3>
<p>After reading through the <a href="https://secure.dd-wrt.com/phpBB2/">dd-wrt forum</a> (most notably <a href="http://www.dd-wrt.com/phpBB2/viewtopic.php?t=49362">these</a> <a href="http://secure.dd-wrt.com/phpBB2/viewtopic.php?t=63004">three</a> <a href="http://www.dd-wrt.com/phpBB2/viewtopic.php?t=52043">posts</a>) and the <a href="http://dd-wrt.com/wiki/index.php/Linksys_WRT320N_v1.0">wiki page</a>, I learned a few things:</p>
<ul>
<li><a href="http://secure.dd-wrt.com/phpBB2/viewtopic.php?p=384525#384525">Apparently</a>, this router has its reset button wired to the wrong <a href="http://en.wikipedia.org/wiki/General_Purpose_Input/Output">GPIO</a> pin. Therefor, the <a href="http://www.dd-wrt.com/wiki/index.php/Hard_reset_or_30/30/30">30/30/30 reset</a> DOES NOT WORK on this router! There is an alternative: use at least version 13493, power down the router, push and hold the WPS button (on top), power up the router, hold the WPS button for 10-12 more seconds, then release.</li>
<li>The latest recommended firmware is <a href="ftp://dd-wrt.com/others/eko/BrainSlayer-V24-preSP2/08-12-10-r14929/broadcom_K26/">BrainSlayer&#8217;s 14929</a></li>
</ul>
<p>This is the procedure I followed, with success, starting from Linksys version v1.0.03 (build 010Jul 24, 2009):</p>
<ol>
<li>Download the <a href="ftp://ftp.dd-wrt.com/others/eko/V24-K26/svn13491-snow/Linksys/WRT320N/dd-wrt.v24-13493_NEWD-2_K2.6_mini_wrt320n.bin">tailored build for the WRT320N</a> (for the freaks, my binary MD5s to e1d7edd368bf5259c18a0874c5e761db).</li>
<li>Connect via wired ethernet to the router. That way, you can see the link going up/down.</li>
<li>In the Linksys firmware, upload this file.</li>
<li>Wait 5 very long minutes.</li>
<li>Configure yourself a static IP in the 192.168.0.0/24 network (I use 192.168.0.8)</li>
<li>Direct your browser to http://192.168.0.1/</li>
<li>Set a temporary password</li>
<li>Wait 1 minute</li>
<li>Reset the router: Power down, push &amp; hold WPS button, power up, keep holding for 11 seconds, release.</li>
<li>Close &amp; reopen your browser to flush all cached pages and credentials</li>
<li>Direct your browser to http://192.168.0.1/</li>
<li>Enjoy</li>
</ol>
<h3>The upgrade</h3>
<p>After the initial flash, you can upgrade to <a href="http://www.dd-wrt.com/wiki/index.php/What_is_DD-WRT%3F#V24_pre_sp2_K26">any regular version</a>, but keep in mind that this unit requires a 2.6 kernel. I choose the <a href="ftp://dd-wrt.com/others/eko/BrainSlayer-V24-preSP2/08-12-10-r14929/broadcom_K26/dd-wrt.v24-14929_NEWD-2_K2.6_mini.bin">14929-mini</a> version (md5 af9ab2ff822ab69d26fa7308d47ad05a), not because it provided all I need (it doesn&#8217;t support IPv6 for example), but because it leaves the most free space for me to fiddle with.</p>
<p>To switch versions, I always follow this overly cautious procedure:</p>
<ol>
<li>Reset to defaults: power down, push &amp; hold WPS button, power up, keep holding for 11 seconds, release</li>
<li>Make sure your IP is in the correct range (192.168.0.0/24)</li>
<li>Set a temporary password</li>
<li>Upload the new firmware</li>
<li>Wait until the browser is again at the &#8220;Set password&#8221; page</li>
<li>Set temporary password</li>
<li>Reset to defaults again</li>
</ol>
<h3>The settings</h3>
<p>Most configuration is fairly straightforward with the GUI. But setting up a second, routed SSID needed a <a href="http://www.dd-wrt.com/wiki/index.php/Multiple_WLANs">little non-intuitive work</a>:</p>
<ul>
<li>Go to <em>Wireless</em> -&gt; <em>Basic Settings</em> and add a new <em>Virtual Interface</em>
<ul>
<li>Leave <em>Network Configuration</em> to <em>Bridged</em></li>
</ul>
</li>
<li>Go to <em>Setup</em> -&gt; <em>Networking</em>
<ul>
<li>Under <em>Create Bridge</em>, click <em>Add</em></li>
<li>Name the new bridge &#8220;br1&#8243; and disable <em>STP</em></li>
<li><em>Apply Settings</em></li>
<li>Now add the desired <em>IP</em> and <em>Subnet mask</em> for this brigde-port</li>
<li><em>Apply Settings</em> again</li>
<li>Click <em>Add</em> under <em>Assign to bridge</em></li>
<li>Now assign the wl0.1 interface to this newly created bridge br1</li>
</ul>
</li>
<li>Optionally <em>Add</em> a DHCP range for br1. In this case, you need to use DNSmasq as DHCP-server.</li>
</ul>
<p>Some guides tell you to configure it in Unbridged mode. Using Bridged mode gives the potential advantage that you can link a wired port to this IP-range easily.</p>
<p>Now you can easily firewall between the two WLANs by putting iptables-lines in the startup script.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dest-unreach.be/2010/11/30/converting-a-wrt320n-to-dd-wrt/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hopping from host to host with SSH, automatically</title>
		<link>http://blog.dest-unreach.be/2010/10/20/hopping-from-host-to-host-with-ssh-automatically</link>
		<comments>http://blog.dest-unreach.be/2010/10/20/hopping-from-host-to-host-with-ssh-automatically#comments</comments>
		<pubDate>Wed, 20 Oct 2010 08:16:03 +0000</pubDate>
		<dc:creator>Niobos</dc:creator>
				<category><![CDATA[Networking & Security]]></category>
		<category><![CDATA[dmz]]></category>
		<category><![CDATA[links]]></category>
		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">http://blog.dest-unreach.be/?p=1887</guid>
		<description><![CDATA[I usually don&#8217;t just repost other people&#8217;s posts, but this one really deserves some extra attention. It explains a very elegant way to hop using SSH. In every network setup with some level of security, there are hosts that can&#8217;t be reached directly. Instead, you need to connect to some intermediate machine first, and hop [...]]]></description>
			<content:encoded><![CDATA[<p>I usually don&#8217;t just repost other people&#8217;s posts, but <a href="http://www.arrfab.net/blog/?p=246">this one</a> really deserves some extra attention. It explains a very elegant way to hop using SSH.</p>
<p><span id="more-1887"></span></p>
<p>In every network setup with some level of security, there are hosts that can&#8217;t be reached directly. Instead, you need to connect to some intermediate machine first, and hop further from there. If you have set up public key authentication, SSH can do all of this for you in the background, just add a few config lines to .ssh/config:</p>
<blockquote><p>Host IP.or.fqdn.only.reachable.from.intermediate-host<br />
ProxyCommand ssh intermediate-host nc %h %p</p></blockquote>
<p>This will issue an SSH connection to intermediate host, launch a <a href="http://netcat.sourceforge.net/">netcat</a> process to realize the hop, and connect to your unreachable host. Obviously, <a href="http://netcat.sourceforge.net/">netcat</a> or <a href="http://freshmeat.net/projects/socat/">similar</a> is required on intermediate-host.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dest-unreach.be/2010/10/20/hopping-from-host-to-host-with-ssh-automatically/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Scripting SSH when using passwords</title>
		<link>http://blog.dest-unreach.be/2010/02/16/scripting-ssh-when-using-passwords</link>
		<comments>http://blog.dest-unreach.be/2010/02/16/scripting-ssh-when-using-passwords#comments</comments>
		<pubDate>Tue, 16 Feb 2010 14:46:43 +0000</pubDate>
		<dc:creator>Niobos</dc:creator>
				<category><![CDATA[Networking & Security]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">http://blog.dest-unreach.be/?p=1633</guid>
		<description><![CDATA[SSH is a wonderful tool. It allows you to run commands on a remote host, either manually, or from scripts. Obviously, since it&#8217;s a remote connection, you must authenticate yourself to the remote host. There are several ways of doing this. When using SSH in a script, most pages tell you to use public keys. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Secure_Shell">SSH</a> is a wonderful tool. It allows you to run commands on a remote host, either manually, or from scripts. Obviously, since it&#8217;s a remote connection, you must authenticate yourself to the remote host. There are several ways of doing this.</p>
<p>When using SSH in a script, most pages tell you to use public keys. While this is an excellent idea, it&#8217;s sometimes just not possible due to policy. This <a href="http://expect.nist.gov/">Expect</a> script fakes a regular username-password login</p>
<blockquote><p>#!/usr/bin/expect -f</p>
<p>set target [lindex $argv 0]<br />
set password [lindex $argv 1]<br />
set command [lindex $argv 2]</p>
<p>spawn ssh $target $command</p>
<p>match_max 100000<br />
# Look for passwod prompt<br />
expect &#8220;*?assword:*&#8221;<br />
# Send password aka $password<br />
send &#8212; &#8220;$password\r&#8221;<br />
# send blank line (\r) to make sure we get back to gui<br />
send &#8212; &#8220;\r&#8221;<br />
expect eof</p></blockquote>
<p>This script can be run like this:</p>
<blockquote><p>./ssh-passwd.ex root@192.0.2.1 password &#8220;ls /root&#8221;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.dest-unreach.be/2010/02/16/scripting-ssh-when-using-passwords/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Putty as ssh:// url handler</title>
		<link>http://blog.dest-unreach.be/2009/07/11/putty-as-ssh-url-handler</link>
		<comments>http://blog.dest-unreach.be/2009/07/11/putty-as-ssh-url-handler#comments</comments>
		<pubDate>Sat, 11 Jul 2009 09:43:08 +0000</pubDate>
		<dc:creator>Niobos</dc:creator>
				<category><![CDATA[Networking & Security]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.dest-unreach.be/?p=1041</guid>
		<description><![CDATA[In Windows you can register &#8220;url handlers&#8221;. These are programs that are run when you try to open a URL (via Start-&#62;Run for example). &#8220;http://&#8221; for example is registered to Internet Explorer by default. &#8220;telnet://&#8221; also works. This is especially useful in combination with the URL-field of KeePass. Double-clicking on this field tries to &#8220;open&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>In Windows you can register &#8220;url handlers&#8221;. These are programs that are run when you try to open a URL (via Start-&gt;Run for example). &#8220;http://&#8221; for example is registered to Internet Explorer by default. &#8220;telnet://&#8221; also works. This is especially useful in combination with the <a href="http://keepass.info/help/base/autourl.html">URL-field</a> of <a href="http://keepass.info/">KeePass</a>. Double-clicking on this field tries to &#8220;open&#8221; the specified URL.</p>
<p>However, &#8220;ssh://&#8221; is not a standard registered protocol. I&#8217;d like <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/">Putty</a> to handle this. Also, &#8220;telnet://&#8221; gets you the standard windows telnet client instead of putty. Putty <a href="http://the.earth.li/~sgtatham/putty/0.60/htmldoc/Chapter3.html#using-cmdline">can be called</a> with command line arguments. Supplying the &#8220;telnet://&#8221; url as a parameter works, but &#8220;ssh://&#8221; does not.</p>
<p>Hence, I wrote a very small wrapper program to accept &#8220;ssh://&#8221; URL&#8217;s and convert them to Putty command line arguments:</p>
<ul>
<li>Source code in C: <a href="http://blog.dest-unreach.be/wp-content/uploads/2009/07/ssh-to-putty.c">ssh-to-putty.c</a></li>
<li>Compiled Windows executable: <a href="http://blog.dest-unreach.be/wp-content/uploads/2009/07/ssh-to-putty.exe">ssh-to-putty.exe</a></li>
<li>Registry commands to set putty as telnet-handler: <a href="http://blog.dest-unreach.be/wp-content/uploads/2009/07/putty-telnet-url-handler.reg">putty telnet url handler.reg</a></li>
<li>Registry commands to set the wrapper as ssh-handler: <a href="http://blog.dest-unreach.be/wp-content/uploads/2009/07/putty-ssh-url-handler.reg">putty ssh url handler.reg</a></li>
</ul>
<p>Some notes:</p>
<ul>
<li>The registry commands assume Putty and the wrapper are installed in C:\Progs\SSH. If this is not the case, you need to change the .reg-files accordingly</li>
<li>The wrapper-program assumes putty.exe to be in the same directory as itself</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.dest-unreach.be/2009/07/11/putty-as-ssh-url-handler/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Restricted rsync over ssh</title>
		<link>http://blog.dest-unreach.be/2009/06/30/restricted-rsync-over-ssh</link>
		<comments>http://blog.dest-unreach.be/2009/06/30/restricted-rsync-over-ssh#comments</comments>
		<pubDate>Tue, 30 Jun 2009 17:16:51 +0000</pubDate>
		<dc:creator>Niobos</dc:creator>
				<category><![CDATA[Networking & Security]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[rsync]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">http://blog.dest-unreach.be/?p=1323</guid>
		<description><![CDATA[rsync is a very nice tool to synchronize two directories, especially if they are on different machines. If you require confidentiality of the transferred data, rsync works great over ssh. Besides the standard password authentication, ssh also supports public key authentication. This key-based authentication has the added bonus of having per-key options: you can restrict [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.samba.org/rsync/">rsync</a> is a very nice tool to synchronize two directories, especially if they are on different machines. If you require confidentiality of the transferred data, rsync works great over <a href="http://www.openssh.com/">ssh</a>.</p>
<p>Besides the standard password authentication, ssh also supports <a href="http://sial.org/howto/openssh/publickey-auth/">public key authentication</a>. This key-based authentication has the added bonus of having per-key options:</p>
<ul>
<li>you can restrict the source IP from which this key may be used</li>
<li>you can force a command to be executed instead of allowing the connecting side to specify one</li>
</ul>
<p><span id="more-1323"></span>Combining the power of these tools gives very fine grained control over the rsync process: you can create a &#8220;backup key&#8221; that only allows you to rsync <em>from </em>the server and only from a specified directory. Any other command besides rsync is rejected; rsync <em>to</em> the server or from another directory is also rejected. <a href="http://blog.dest-unreach.be/wp-content/uploads/2009/06/rrsync.pl">This script</a> does it all, it&#8217;s part of the <a href="http://www.samba.org/rsync/download.html">rsync package</a>, but not installed by most distro&#8217;s. An example authorized_keys entry (with an abbreviated key):</p>
<blockquote>
<pre>command="/home/boss/niels/bin/rrsync.pl -ro /home" ssh-rsa AAAAB[...]fE+8QrME= 20090329 rsync key</pre>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.dest-unreach.be/2009/06/30/restricted-rsync-over-ssh/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Securing SSH Agent on Mac OS X</title>
		<link>http://blog.dest-unreach.be/2008/12/03/securing-ssh-agent-on-macosx</link>
		<comments>http://blog.dest-unreach.be/2008/12/03/securing-ssh-agent-on-macosx#comments</comments>
		<pubDate>Wed, 03 Dec 2008 17:37:49 +0000</pubDate>
		<dc:creator>Niobos</dc:creator>
				<category><![CDATA[Networking & Security]]></category>
		<category><![CDATA[MacOSX]]></category>
		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">http://blog.dest-unreach.be/?p=704</guid>
		<description><![CDATA[I&#8217;m a bit paranoid when it comes to security. For example, I don&#8217;t allow passwords to log into my computers via SSH but use RSA keys instead. Besides added security (there is no password to guess), it has a lot of other advantages as well. I normally run an ssh-agent (both on linux and Windows) [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a bit paranoid when it comes to security. For example, I don&#8217;t allow passwords to log into my computers via SSH but use RSA keys instead. Besides added security (there is no password to guess), it has <a href="http://unixwiz.net/techtips/ssh-agent-forwarding.html">a lot of other advantages as well</a>. I normally run an ssh-agent (both on <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-agent&amp;sektion=1">linux</a> and <a href="http://the.earth.li/~sgtatham/putty/0.60/htmldoc/Chapter9.html">Windows</a>) which caches my credentials so I can log in without password.</p>
<p>On my desktop system, this was automatically secure against theft. Since the key is stored in RAM (or encrypted swap), it is flushed the moment the computer looses power. Since it was a desktop system, it&#8217;s fairly safe to assume that the power will be cut when someone steels my computer.</p>
<p>On my new MacBook Pro, things are a bit different: most of the time, my notebook is in standby and has an integrated UPS (its battery). So I was looking for something to get me the same security.</p>
<p><span id="more-704"></span></p>
<p>Surfing around got me to this very interesting page describing the integration of an <a href="http://www.dribin.org/dave/blog/archives/2007/11/28/ssh_agent_leopard/">ssh-agent into Leopard</a>. I must admit that I was fairly impressed: It automatically starts ssh-agent on-demand and reads in all identities using the standard Mac <a href="http://en.wikipedia.org/wiki/Apple_Keychain">KeyChain</a>s. One thing however was missing: removing the keys when the notebook enters standby.</p>
<p>The <a href="http://www.dribin.org/dave/blog/archives/2007/11/28/securing_ssh_agent/">follow-up article</a> mentions one way to do it, but I found that <a href="http://www.bernhard-baehr.de/">SleepWatcher</a> is a much more versatile way to do this. SleepWatcher can do other things as well, like <a href="http://www.macosxhints.com/article.php?story=20080329201951648">unmounting (ejecting) external drives when going to sleep, remounting them when waking up again</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dest-unreach.be/2008/12/03/securing-ssh-agent-on-macosx/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PuttyCS</title>
		<link>http://blog.dest-unreach.be/2008/06/06/puttycs</link>
		<comments>http://blog.dest-unreach.be/2008/06/06/puttycs#comments</comments>
		<pubDate>Fri, 06 Jun 2008 16:07:55 +0000</pubDate>
		<dc:creator>Niobos</dc:creator>
				<category><![CDATA[Networking & Security]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[telnet]]></category>

		<guid isPermaLink="false">http://blog.dest-unreach.be/?p=25</guid>
		<description><![CDATA[When configuring a bunch of devices (switches, routers or even computers), most of the configuration will be identical. The Konsole program of KDE has a nice feature which sends the keyboard input to all open tabs. By simply telnet-ing or ssh-ing into the devices and activating this feature, I can quickly configure them all at [...]]]></description>
			<content:encoded><![CDATA[<p>When configuring a bunch of devices (switches, routers or even computers), most of the configuration will be identical. The Konsole program of KDE has a nice feature which sends the keyboard input to all open tabs. By simply telnet-ing or ssh-ing into the devices and activating this feature, I can quickly configure them all at once.</p>
<p>At work, using my Windows laptop, I have been looking for a feature like this. After some googling I found <a href="http://www.millardsoftware.com/puttycs/">PuttyCS.</a> It&#8217;s a standalone application which emulates this behaviour: It sends emulated keypresses to all (or a subset of) open putty sessions.</p>
<p><a href="http://blog.dest-unreach.be/wp-content/uploads/2008/06/puttycs.png"><img class="alignnone size-medium wp-image-28" title="PuttyCS" src="http://blog.dest-unreach.be/wp-content/uploads/2008/06/puttycs-300x192.png" alt="" width="300" height="192" /></a></p>
<p>Configuring 8 blade-switches with PuttyCS is a breeze: just open all the putty sessions and start typing in PuttyCS!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dest-unreach.be/2008/06/06/puttycs/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

