<?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>beer planet &#187; debug</title> <atom:link href="http://beerpla.net/tag/debug/feed/" rel="self" type="application/rss+xml" /><link>http://beerpla.net</link> <description>where things have nothing to do with beer - tutorials, tips, how-tos, thoughts, hacks, and other techy nonsense</description> <lastBuildDate>Fri, 06 Jan 2012 08:50:59 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <atom:link rel='hub' href='http://beerpla.net/?pushpress=hub'/> <item><title>How To Make Firebug&#039;s JavaScript Debugger Break Inside Dynamic JavaScript Using The &#039;debugger&#039; Keyword (IE &amp; Chrome Too)</title><link>http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/</link> <comments>http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/#comments</comments> <pubDate>Thu, 17 Dec 2009 19:39:50 +0000</pubDate> <dc:creator>Artem Russakovskii</dc:creator> <category><![CDATA[JavaScript]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Tips]]></category> <category><![CDATA[break]]></category> <category><![CDATA[breakpoint]]></category> <category><![CDATA[chrome]]></category> <category><![CDATA[debug]]></category> <category><![CDATA[debugger]]></category> <category><![CDATA[debugger keyword]]></category> <category><![CDATA[dynamic]]></category> <category><![CDATA[firebug]]></category> <category><![CDATA[Firefox]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[ie]]></category> <category><![CDATA[internet explorer]]></category> <category><![CDATA[keyword]]></category> <category><![CDATA[on-demand]]></category> <guid
isPermaLink="false">http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/</guid> <description><![CDATA[<p><a
href="http://beerpla.net/wp-content/uploads/HowToMakeFirebugsJavaScriptDebuggerBreak_13D41/image.png" class="lightview" rel="gallery['1303']" title="image"><img
style="margin: 0px 10px 10px 0px; display: inline" title="image" alt="image" align="left" src="http://beerpla.net/wp-content/uploads/HowToMakeFirebugsJavaScriptDebuggerBreak_13D41/image_thumb.png" width="150" height="147" /></a> As a backend developer, I don&#039;t get to work with JavaScript much anymore. However, from time to time, a project would come along that uses JavaScript (specifically, AJAX) to load some backend data on the fly. Of course, nothing works 100% right away<strong><font
size="5">*</font></strong>, so I would often have to tweak this JavaScript and massage it until it does what I need.</p><p>Here&#039;s where Firebug comes in with its JavaScript debugger. I&#039;m used to using a debugger in every language I deal with, so using Firebug is a no brainer. Since it supports breakpoints, stopping execution and inspecting local variables and the rest of the scope generally beats alerts and console.logs for me.</p><p>Here&#039;s what a typical breakpoint looks like...<div
class=clear></div> <a
href="http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/" class="read_more"><div
class=excerpt-end>Read the rest of this article &#187;</div></a></p>]]></description> <content:encoded><![CDATA[<p><a
href="http://beerpla.net/wp-content/uploads/HowToMakeFirebugsJavaScriptDebuggerBreak_13D41/image.png" class="lightview" rel="gallery['1303']" title="image"><img
style="margin: 0px 10px 10px 0px; display: inline" title="image" alt="image" align="left" src="http://beerpla.net/wp-content/uploads/HowToMakeFirebugsJavaScriptDebuggerBreak_13D41/image_thumb.png" width="150" height="147" /></a> As a backend developer, I don&#039;t get to work with JavaScript much anymore. However, from time to time, a project would come along that uses JavaScript (specifically, AJAX) to load some backend data on the fly. Of course, nothing works 100% right away<strong><font
size="5">*</font></strong>, so I would often have to tweak this JavaScript and massage it until it does what I need.</p><p>Here&#039;s where Firebug comes in with its JavaScript debugger. I&#039;m used to using a debugger in every language I deal with, so using Firebug is a no brainer. Since it supports breakpoints, stopping execution and inspecting local variables and the rest of the scope generally beats alerts and console.logs for me.</p><p>Here&#039;s what a typical breakpoint looks like in Firebug:</p><p><a
href="http://beerpla.net/wp-content/uploads/HowToMakeFirebugsJavaScriptDebuggerBreak_13D41/image_3.png" class="lightview" rel="gallery['1303']" title="Firebug JavaScript breakpoint triggered"><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="Firebug JavaScript breakpoint triggered" alt="Firebug JavaScript breakpoint triggered" src="http://beerpla.net/wp-content/uploads/HowToMakeFirebugsJavaScriptDebuggerBreak_13D41/image_thumb_3.png" width="700" height="173" /></a></p><p>It&#039;s easy to set breakpoints in static scripts &#8211; just open the Scripts tab, select a JavaScript file from the dropdown menu, and click to the left of the wanted line number.</p><p>Then, when the page is reloaded, if your breakpoints are triggered, Firebug will pause script execution and transfer the control to you.</p><p><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="Setting Firebug JavaScript breakpoint" alt="Setting Firebug JavaScript breakpoint" src="http://beerpla.net/wp-content/uploads/HowToMakeFirebugsJavaScriptDebuggerBreak_13D41/image_4.png" width="593" height="179" /></p><p>In most cases, the method above is the only method of setting breakpoints you will ever need to use.</p><h2>The Problem With Dynamic JavaScript</h2><p>However, what if the JavaScript file where you need to set breakpoints is not static but instead dynamic (generated on the fly). If you set a breakpoint in this case and reload the page, the breakpoint will most likely disappear, especially if the JavaScript url is generated uniquely every time.</p><h2>The Solution</h2><p>If you have access to the source, the solution comes in the form of the</p><div
class="wp_syntax"><div
class="code"><pre>debugger;</pre></div></div><p>keyword. Just add it to your dynamic JavaScript generator or into any JavaScript file you have access to exactly where you want Firebug to break, and voila &#8211; it does.</p><p><img
style="display: block; float: none; margin-left: auto; margin-right: auto" title="JavaScript debugger keyword" alt="JavaScript debugger keyword" src="http://beerpla.net/wp-content/uploads/HowToMakeFirebugsJavaScriptDebuggerBreak_13D41/image_5.png" width="345" height="94" /></p><p>More so, this method also works in Google Chrome and <a
href="http://www.codestore.net/store.nsf/unid/DOMT-5UBUVW" rel="nofollow">IE (if you have Microsoft Script Debugger)</a>. Here is a screenshot of my Chrome Beta 4.0.266.0 triggering:</p><p><img
style="display: block; float: none; margin-left: auto; margin-right: auto" alt="Chrome JavaScript debugger" src="/for_www/chrome-js-debugger.png" /></p><p> I consider this feature relatively unpublished and therefore awesome because:</p><ul><li>it&#039;s hard to search for this specific meaning of the keyword &quot;debugger&quot; when Firebug itself is a debugger and it&#039;s a very popular word</li><li>nobody really reads documentation for Firebug, and even if they do, I haven&#039;t actually seen the debugger keyword mentioned</li><li>I didn&#039;t know about it until recently, even though I&#039;ve been using Firebug for years</li></ul><p>Of course, you need access to the code for this to work, so it&#039;s not going to work if you&#039;re trying to debug someone else&#039;s JavaScript.</p><p>And finally, don&#039;t forget to remove any traces of &#039;debugger&#039; from your code when you go live or your users will rightfully hunt you down.</p><h2>Credits And References:</h2><ul><li>suggested by a co-worker from <a
href="http://www.plaxo.com" rel="nofollow">Plaxo</a> &#8211; Russ. Thanks Russ!</li><li>some more interesting info at <a
href="http://stackoverflow.com/questions/858779/making-firebug-break-inside-dynamically-loaded-javascript" rel="nofollow">StackOverflow</a> and <a
href="http://devcenter.infragistics.com/Articles/ArticleTemplate.Aspx?ArticleID=2183" rel="nofollow">Infragistics</a>.</li></ul><p>Happy debugging!</p><p>(<strong><font
size="5">*</font></strong>) &#8211; if your project works 100% on the first pass, you must be either a magician or <a
href="http://stackoverflow.com/users/22656/jon-skeet" rel="nofollow">Jon Skeet</a> (<a
href="http://meta.stackoverflow.com/questions/9134/jon-skeet-facts" rel="nofollow">Jon Skeet Facts</a> &#8211; a-la Chuck Norris, a must read).</p><div
class="shr-bookmarks shr-bookmarks-expand"><ul
class="socials"><li
class="shr-twitter"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Make+Firebug%27s+JavaScript+Debugger+Break+Inside+Dynamic+JavaScript+Using+The+%27debugger%27+Keyword+%28IE+%26amp%3B+Chrome+Too%29&amp;link=http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/&amp;notes=%20As%20a%20backend%20developer%2C%20I%20don%27t%20get%20to%20work%20with%20JavaScript%20much%20anymore.%20However%2C%20from%20time%20to%20time%2C%20a%20project%20would%20come%20along%20that%20uses%20JavaScript%20%28specifically%2C%20AJAX%29%20to%20load%20some%20backend%20data%20on%20the%20fly.%20Of%20course%2C%20nothing%20works%20100%25%20right%20away%2A%2C%20so%20I%20would%20often%20have%20to%20tweak%20this%20JavaScript%20&amp;short_link=http://bit.ly/aUKYre&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a></li><li
class="shr-facebook"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Make+Firebug%27s+JavaScript+Debugger+Break+Inside+Dynamic+JavaScript+Using+The+%27debugger%27+Keyword+%28IE+%26amp%3B+Chrome+Too%29&amp;link=http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/&amp;notes=%20As%20a%20backend%20developer%2C%20I%20don%27t%20get%20to%20work%20with%20JavaScript%20much%20anymore.%20However%2C%20from%20time%20to%20time%2C%20a%20project%20would%20come%20along%20that%20uses%20JavaScript%20%28specifically%2C%20AJAX%29%20to%20load%20some%20backend%20data%20on%20the%20fly.%20Of%20course%2C%20nothing%20works%20100%25%20right%20away%2A%2C%20so%20I%20would%20often%20have%20to%20tweak%20this%20JavaScript%20&amp;short_link=http://bit.ly/aUKYre&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a></li><li
class="shr-googlebuzz"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Make+Firebug%27s+JavaScript+Debugger+Break+Inside+Dynamic+JavaScript+Using+The+%27debugger%27+Keyword+%28IE+%26amp%3B+Chrome+Too%29&amp;link=http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/&amp;notes=%20As%20a%20backend%20developer%2C%20I%20don%27t%20get%20to%20work%20with%20JavaScript%20much%20anymore.%20However%2C%20from%20time%20to%20time%2C%20a%20project%20would%20come%20along%20that%20uses%20JavaScript%20%28specifically%2C%20AJAX%29%20to%20load%20some%20backend%20data%20on%20the%20fly.%20Of%20course%2C%20nothing%20works%20100%25%20right%20away%2A%2C%20so%20I%20would%20often%20have%20to%20tweak%20this%20JavaScript%20&amp;short_link=http://bit.ly/aUKYre&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a></li><li
class="shr-reddit"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Make+Firebug%27s+JavaScript+Debugger+Break+Inside+Dynamic+JavaScript+Using+The+%27debugger%27+Keyword+%28IE+%26amp%3B+Chrome+Too%29&amp;link=http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/&amp;notes=%20As%20a%20backend%20developer%2C%20I%20don%27t%20get%20to%20work%20with%20JavaScript%20much%20anymore.%20However%2C%20from%20time%20to%20time%2C%20a%20project%20would%20come%20along%20that%20uses%20JavaScript%20%28specifically%2C%20AJAX%29%20to%20load%20some%20backend%20data%20on%20the%20fly.%20Of%20course%2C%20nothing%20works%20100%25%20right%20away%2A%2C%20so%20I%20would%20often%20have%20to%20tweak%20this%20JavaScript%20&amp;short_link=http://bit.ly/aUKYre&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a></li><li
class="shr-hackernews"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Make+Firebug%27s+JavaScript+Debugger+Break+Inside+Dynamic+JavaScript+Using+The+%27debugger%27+Keyword+%28IE+%26amp%3B+Chrome+Too%29&amp;link=http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/&amp;notes=%20As%20a%20backend%20developer%2C%20I%20don%27t%20get%20to%20work%20with%20JavaScript%20much%20anymore.%20However%2C%20from%20time%20to%20time%2C%20a%20project%20would%20come%20along%20that%20uses%20JavaScript%20%28specifically%2C%20AJAX%29%20to%20load%20some%20backend%20data%20on%20the%20fly.%20Of%20course%2C%20nothing%20works%20100%25%20right%20away%2A%2C%20so%20I%20would%20often%20have%20to%20tweak%20this%20JavaScript%20&amp;short_link=http://bit.ly/aUKYre&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=202&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Submit this to Hacker News">Submit this to Hacker News</a></li><li
class="shr-delicious"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Make+Firebug%27s+JavaScript+Debugger+Break+Inside+Dynamic+JavaScript+Using+The+%27debugger%27+Keyword+%28IE+%26amp%3B+Chrome+Too%29&amp;link=http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/&amp;notes=%20As%20a%20backend%20developer%2C%20I%20don%27t%20get%20to%20work%20with%20JavaScript%20much%20anymore.%20However%2C%20from%20time%20to%20time%2C%20a%20project%20would%20come%20along%20that%20uses%20JavaScript%20%28specifically%2C%20AJAX%29%20to%20load%20some%20backend%20data%20on%20the%20fly.%20Of%20course%2C%20nothing%20works%20100%25%20right%20away%2A%2C%20so%20I%20would%20often%20have%20to%20tweak%20this%20JavaScript%20&amp;short_link=http://bit.ly/aUKYre&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=2&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a></li><li
class="shr-stumbleupon"> <a
href="http://www.shareaholic.com/api/share/?title=How+To+Make+Firebug%27s+JavaScript+Debugger+Break+Inside+Dynamic+JavaScript+Using+The+%27debugger%27+Keyword+%28IE+%26amp%3B+Chrome+Too%29&amp;link=http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/&amp;notes=%20As%20a%20backend%20developer%2C%20I%20don%27t%20get%20to%20work%20with%20JavaScript%20much%20anymore.%20However%2C%20from%20time%20to%20time%2C%20a%20project%20would%20come%20along%20that%20uses%20JavaScript%20%28specifically%2C%20AJAX%29%20to%20load%20some%20backend%20data%20on%20the%20fly.%20Of%20course%2C%20nothing%20works%20100%25%20right%20away%2A%2C%20so%20I%20would%20often%20have%20to%20tweak%20this%20JavaScript%20&amp;short_link=http://bit.ly/aUKYre&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=38&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a></li><li
class="shr-mail"> <a
href="http://www.shareaholic.com/api/share/?title=How%20To%20Make%20Firebug%27s%20JavaScript%20Debugger%20Break%20Inside%20Dynamic%20JavaScript%20Using%20The%20%27debugger%27%20Keyword%20%28IE%20%26amp%3B%20Chrome%20Too%29&amp;link=http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/&amp;notes=%20As%20a%20backend%20developer%2C%20I%20don%27t%20get%20to%20work%20with%20JavaScript%20much%20anymore.%20However%2C%20from%20time%20to%20time%2C%20a%20project%20would%20come%20along%20that%20uses%20JavaScript%20%28specifically%2C%20AJAX%29%20to%20load%20some%20backend%20data%20on%20the%20fly.%20Of%20course%2C%20nothing%20works%20100%25%20right%20away%2A%2C%20so%20I%20would%20often%20have%20to%20tweak%20this%20JavaScript%20&amp;short_link=http://bit.ly/aUKYre&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=201&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this to a friend?">Email this to a friend?</a></li></ul><div
style="clear: both;"></div></div> Similar Posts:<ul><li><a
href="http://beerpla.net/2010/01/13/wordpress-plugin-development-how-to-include-css-and-javascript-conditionally-and-only-when-needed-by-the-posts/" rel="bookmark" title="January 13, 2010">[WordPress Plugin Development] How To Include CSS and JavaScript Conditionally And Only When Needed By The Posts</a></li><li><a
href="http://beerpla.net/2010/01/31/heres-an-exclusive-10-off-nuspheres-phped-coupon-also-includes-nucoder-and-phpdoc-discount-code/" rel="bookmark" title="January 31, 2010">[Updated for 2012] Here&#039;s An Exclusive 10% Off NuSphere PHPEd Discount Coupon Code (Also Includes NuCoder And PHPDoc)</a></li><li><a
href="http://beerpla.net/2009/06/09/how-to-make-your-site-lightning-fast-by-compressing-deflategzip-your-html-javascript-css-xml-etc-in-apache/" rel="bookmark" title="June 9, 2009">How To Make Your Site Lightning Fast* By Compressing (deflate/gzip) Your HTML, Javascript, CSS, XML, etc In Apache</a></li><li><a
href="http://beerpla.net/2010/11/06/how-to-dynamically-increase-memory-limits-when-interfacing-with-wordpress-using-xml-rpc-windows-live-writer-etc/" rel="bookmark" title="November 6, 2010">How To Dynamically Increase Memory Limits When Interfacing With WordPress Using XML-RPC (Windows Live Writer, Etc)</a></li><li><a
href="http://beerpla.net/2010/01/15/follow-up-to-loading-css-and-js-conditionally/" rel="bookmark" title="January 15, 2010">Follow-up To Loading CSS And JS Conditionally</a></li></ul><p><a
class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fbeerpla.net%2F2009%2F12%2F17%2Fhow-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too%2F&amp;title=How%20To%20Make%20Firebug%26%23039%3Bs%20JavaScript%20Debugger%20Break%20Inside%20Dynamic%20JavaScript%20Using%20The%20%26%23039%3Bdebugger%26%23039%3B%20Keyword%20%28IE%20%26amp%3B%20Chrome%20Too%29" id="wpa2a_2"><img
src="http://beerpla.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded> <wfw:commentRss>http://beerpla.net/2009/12/17/how-to-make-firebugs-javascript-debugger-break-inside-dynamic-javascript-using-the-debugger-keyword-ie-chrome-too/feed/</wfw:commentRss> <slash:comments>14</slash:comments> </item> <item><title>Debugging Weird sshd Connection Problems + What Happens When You Stop sshd</title><link>http://beerpla.net/2008/08/15/debugging-weird-sshd-connection-problems-what-happens-when-you-stop-sshd/</link> <comments>http://beerpla.net/2008/08/15/debugging-weird-sshd-connection-problems-what-happens-when-you-stop-sshd/#comments</comments> <pubDate>Fri, 15 Aug 2008 16:14:53 +0000</pubDate> <dc:creator>Artem Russakovskii</dc:creator> <category><![CDATA[Linux]]></category> <category><![CDATA[connection]]></category> <category><![CDATA[debug]]></category> <category><![CDATA[key]]></category> <category><![CDATA[keyboard interactive]]></category> <category><![CDATA[problem]]></category> <category><![CDATA[refuse]]></category> <category><![CDATA[sshd]]></category> <category><![CDATA[stop]]></category> <guid
isPermaLink="false">http://beerpla.net/2008/08/15/debugging-weird-sshd-connection-problems-what-happens-when-you-stop-sshd/</guid> <description><![CDATA[<p>So the other day I was setting up public key authentication for one of my users, which is usually very straightforward: generate a private/public key pair, stick the private key into user&#039;s .ssh dir, set dir permissions to 0700, private key permissions to 0600, stick the public key into the authorized_keys file on the server, and the job&#039;s done. However, this time, no matter what I was doing, the public key was being rejected or ignored and the system was moving on to the keyboard-interactive authentication.</p><p>Debugging on the client side with -v didn&#039;t help much:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td
class="code"><pre>artem@DeathStar:~/svn/b2/Fetch/LinkChecker&#62; ssh</pre></td></tr></table></div><p>...<div
class=clear></div> <a
href="http://beerpla.net/2008/08/15/debugging-weird-sshd-connection-problems-what-happens-when-you-stop-sshd/" class="read_more"><div
class=excerpt-end>Read the rest of this article &#187;</div></a></p>]]></description> <content:encoded><![CDATA[<p>So the other day I was setting up public key authentication for one of my users, which is usually very straightforward: generate a private/public key pair, stick the private key into user&#039;s .ssh dir, set dir permissions to 0700, private key permissions to 0600, stick the public key into the authorized_keys file on the server, and the job&#039;s done. However, this time, no matter what I was doing, the public key was being rejected or ignored and the system was moving on to the keyboard-interactive authentication.</p><p>Debugging on the client side with -v didn&#039;t help much:</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td
class="code"><pre>artem@DeathStar:~/svn/b2/Fetch/LinkChecker&gt; ssh -v monkey@192.168.1.30
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
...
lots of boring shit
...
debug1: Found key in /home/artem/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
...
more boring shit
...
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering public key:
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Offering public key:
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Offering public key: /home/artem/.ssh/id_rsa
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Trying private key: /home/artem/.ssh/id_dsa
debug1: Next authentication method: keyboard-interactive
Password:</pre></td></tr></table></div><p>After breaking my head over possible reasons why the pile of junk that thinks it&#039;s smarter than me next to my feet doesn&#039;t work, kicking it a few times, and observing the same result, I turned to debugging the ssh daemon itself &#8211; sshd.</p><ul><li>The -d option disables the daemon mode and enables debug mode, in which only 1 connection is accepted for the lifetime of the server, after which it simply quits.</li><li>-dd simply enables a more detailed output.</li><li>-e switches this debug output from a log file to STDOUT.</li></ul><p>However, to free up port 22, I had to stop the daemon that was already running, or else a &#034;Bind to port 22 on 0.0.0.0 failed: Address already in use.&#034; error appeared (duh). An interesting question though, especially for people doing this to remote boxes, what happens when one stops sshd? Ever thought of doing that but instead ran over to your mommy crying like a little girl? Well, fear no more, because I&#039;ll tell you exactly what happens:</p><ol><li>New users will have their connection refused.</li><li>Your own connection will not be interrrupted. sshd works by spawning a new instance of itself for every incoming connection, so your own sshd process will stay in memory.</li></ol><p> So where was I?</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
</pre></td><td
class="code"><pre>/usr/sbin/sshd -dd -e</pre></td></tr></table></div><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
</pre></td><td
class="code"><pre>...
Authentication refused: bad ownership or modes for directory /home/monkey
...
Failed publickey for monkey from 192.168.1.30 port 56287 ssh2</pre></td></tr></table></div><p>AhA!! (emphasis on the last &#039;a&#039;). What have we here?</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
</pre></td><td
class="code"><pre>artem@DeathStar:~&gt; cd /home/
artem@DeathStar:/home/&gt; l
drwxrwx--- 29 monkey  users 4096 2008-08-06 23:14 monkey/
&nbsp;
DeathStar:/home/ # chmod 755 monkey
drwxr-xr-x 29 monkey  users 4096 2008-08-06 23:14 monkey/
&nbsp;
artem@DeathStar:~/svn/b2/Fetch/LinkChecker&gt; ssh -v monkey@192.168.1.30
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to 192.168.1.30 [192.168.1.30] port 22.
debug1: Connection established.
debug1: identity file /home/artem/.ssh/id_rsa type 1
debug1: identity file /home/artem/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_4.6
debug1: match: OpenSSH_4.6 pat OpenSSH*
...</pre></td></tr></table></div><p>Connection established, all systems are go, the key has been accepted.</p><p>Inspired by <a
href="http://linux.derkeiler.com/Mailing-Lists/Fedora/2005-08/1105.html">http://linux.derkeiler.com/Mailing-Lists/Fedora/2005-08/1105.html</a></p><p>P.S. Don&#039;t forget to /etc/init.d/sshd start. <img
src='http://beerpla.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p><div
class="shr-bookmarks shr-bookmarks-expand"><ul
class="socials"><li
class="shr-twitter"> <a
href="http://www.shareaholic.com/api/share/?title=Debugging+Weird+sshd+Connection+Problems+%2B+What+Happens+When+You+Stop+sshd&amp;link=http://beerpla.net/2008/08/15/debugging-weird-sshd-connection-problems-what-happens-when-you-stop-sshd/&amp;notes=So%20the%20other%20day%20I%20was%20setting%20up%20public%20key%20authentication%20for%20one%20of%20my%20users%2C%20which%20is%20usually%20very%20straightforward%3A%20generate%20a%20private%2Fpublic%20key%20pair%2C%20stick%20the%20private%20key%20into%20user%27s%20.ssh%20dir%2C%20set%20dir%20permissions%20to%200700%2C%20private%20key%20permissions%20to%200600%2C%20stick%20the%20public%20key%20into%20the%20authoriz&amp;short_link=http://bit.ly/cy1sPs&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a></li><li
class="shr-facebook"> <a
href="http://www.shareaholic.com/api/share/?title=Debugging+Weird+sshd+Connection+Problems+%2B+What+Happens+When+You+Stop+sshd&amp;link=http://beerpla.net/2008/08/15/debugging-weird-sshd-connection-problems-what-happens-when-you-stop-sshd/&amp;notes=So%20the%20other%20day%20I%20was%20setting%20up%20public%20key%20authentication%20for%20one%20of%20my%20users%2C%20which%20is%20usually%20very%20straightforward%3A%20generate%20a%20private%2Fpublic%20key%20pair%2C%20stick%20the%20private%20key%20into%20user%27s%20.ssh%20dir%2C%20set%20dir%20permissions%20to%200700%2C%20private%20key%20permissions%20to%200600%2C%20stick%20the%20public%20key%20into%20the%20authoriz&amp;short_link=http://bit.ly/cy1sPs&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a></li><li
class="shr-googlebuzz"> <a
href="http://www.shareaholic.com/api/share/?title=Debugging+Weird+sshd+Connection+Problems+%2B+What+Happens+When+You+Stop+sshd&amp;link=http://beerpla.net/2008/08/15/debugging-weird-sshd-connection-problems-what-happens-when-you-stop-sshd/&amp;notes=So%20the%20other%20day%20I%20was%20setting%20up%20public%20key%20authentication%20for%20one%20of%20my%20users%2C%20which%20is%20usually%20very%20straightforward%3A%20generate%20a%20private%2Fpublic%20key%20pair%2C%20stick%20the%20private%20key%20into%20user%27s%20.ssh%20dir%2C%20set%20dir%20permissions%20to%200700%2C%20private%20key%20permissions%20to%200600%2C%20stick%20the%20public%20key%20into%20the%20authoriz&amp;short_link=http://bit.ly/cy1sPs&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a></li><li
class="shr-reddit"> <a
href="http://www.shareaholic.com/api/share/?title=Debugging+Weird+sshd+Connection+Problems+%2B+What+Happens+When+You+Stop+sshd&amp;link=http://beerpla.net/2008/08/15/debugging-weird-sshd-connection-problems-what-happens-when-you-stop-sshd/&amp;notes=So%20the%20other%20day%20I%20was%20setting%20up%20public%20key%20authentication%20for%20one%20of%20my%20users%2C%20which%20is%20usually%20very%20straightforward%3A%20generate%20a%20private%2Fpublic%20key%20pair%2C%20stick%20the%20private%20key%20into%20user%27s%20.ssh%20dir%2C%20set%20dir%20permissions%20to%200700%2C%20private%20key%20permissions%20to%200600%2C%20stick%20the%20public%20key%20into%20the%20authoriz&amp;short_link=http://bit.ly/cy1sPs&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a></li><li
class="shr-hackernews"> <a
href="http://www.shareaholic.com/api/share/?title=Debugging+Weird+sshd+Connection+Problems+%2B+What+Happens+When+You+Stop+sshd&amp;link=http://beerpla.net/2008/08/15/debugging-weird-sshd-connection-problems-what-happens-when-you-stop-sshd/&amp;notes=So%20the%20other%20day%20I%20was%20setting%20up%20public%20key%20authentication%20for%20one%20of%20my%20users%2C%20which%20is%20usually%20very%20straightforward%3A%20generate%20a%20private%2Fpublic%20key%20pair%2C%20stick%20the%20private%20key%20into%20user%27s%20.ssh%20dir%2C%20set%20dir%20permissions%20to%200700%2C%20private%20key%20permissions%20to%200600%2C%20stick%20the%20public%20key%20into%20the%20authoriz&amp;short_link=http://bit.ly/cy1sPs&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=202&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Submit this to Hacker News">Submit this to Hacker News</a></li><li
class="shr-delicious"> <a
href="http://www.shareaholic.com/api/share/?title=Debugging+Weird+sshd+Connection+Problems+%2B+What+Happens+When+You+Stop+sshd&amp;link=http://beerpla.net/2008/08/15/debugging-weird-sshd-connection-problems-what-happens-when-you-stop-sshd/&amp;notes=So%20the%20other%20day%20I%20was%20setting%20up%20public%20key%20authentication%20for%20one%20of%20my%20users%2C%20which%20is%20usually%20very%20straightforward%3A%20generate%20a%20private%2Fpublic%20key%20pair%2C%20stick%20the%20private%20key%20into%20user%27s%20.ssh%20dir%2C%20set%20dir%20permissions%20to%200700%2C%20private%20key%20permissions%20to%200600%2C%20stick%20the%20public%20key%20into%20the%20authoriz&amp;short_link=http://bit.ly/cy1sPs&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=2&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a></li><li
class="shr-stumbleupon"> <a
href="http://www.shareaholic.com/api/share/?title=Debugging+Weird+sshd+Connection+Problems+%2B+What+Happens+When+You+Stop+sshd&amp;link=http://beerpla.net/2008/08/15/debugging-weird-sshd-connection-problems-what-happens-when-you-stop-sshd/&amp;notes=So%20the%20other%20day%20I%20was%20setting%20up%20public%20key%20authentication%20for%20one%20of%20my%20users%2C%20which%20is%20usually%20very%20straightforward%3A%20generate%20a%20private%2Fpublic%20key%20pair%2C%20stick%20the%20private%20key%20into%20user%27s%20.ssh%20dir%2C%20set%20dir%20permissions%20to%200700%2C%20private%20key%20permissions%20to%200600%2C%20stick%20the%20public%20key%20into%20the%20authoriz&amp;short_link=http://bit.ly/cy1sPs&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=38&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a></li><li
class="shr-mail"> <a
href="http://www.shareaholic.com/api/share/?title=Debugging%20Weird%20sshd%20Connection%20Problems%20%2B%20What%20Happens%20When%20You%20Stop%20sshd&amp;link=http://beerpla.net/2008/08/15/debugging-weird-sshd-connection-problems-what-happens-when-you-stop-sshd/&amp;notes=So%20the%20other%20day%20I%20was%20setting%20up%20public%20key%20authentication%20for%20one%20of%20my%20users%2C%20which%20is%20usually%20very%20straightforward%3A%20generate%20a%20private%2Fpublic%20key%20pair%2C%20stick%20the%20private%20key%20into%20user%27s%20.ssh%20dir%2C%20set%20dir%20permissions%20to%200700%2C%20private%20key%20permissions%20to%200600%2C%20stick%20the%20public%20key%20into%20the%20authoriz&amp;short_link=http://bit.ly/cy1sPs&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=201&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this to a friend?">Email this to a friend?</a></li></ul><div
style="clear: both;"></div></div> Similar Posts:<ul><li><a
href="http://beerpla.net/2010/03/01/the-most-awesome-vpn-tip-how-to-make-windows-automatically-use-your-local-wifilan-connection-directly-for-requests-that-dont-need-to-go-through-vpn/" rel="bookmark" title="March 1, 2010">The Most Awesome VPN Tip: How To Make Windows Automatically Use Your Local WiFi/LAN Connection Directly For Requests That Don&#039;t Need To Go Through VPN</a></li><li><a
href="http://beerpla.net/2010/01/09/how-to-exportimport-your-expandrivesftpdrive-drives-and-settings/" rel="bookmark" title="January 9, 2010">How To Export/Import Your ExpanDrive/SFTPDrive Drives And Settings</a></li><li><a
href="http://beerpla.net/2008/05/12/a-better-diff-or-what-to-do-when-gnu-diff-runs-out-of-memory-diff-memory-exhausted/" rel="bookmark" title="May 12, 2008">A Better diff Or What To Do When GNU diff Runs Out Of Memory (&quot;diff: memory exhausted&quot;)</a></li><li><a
href="http://beerpla.net/2007/03/24/beer-planet-hosting-moved-away-from-dreamhost-thank-god-finally/" rel="bookmark" title="March 24, 2007">Beer Planet Hosting Moved Away From Dreamhost (Thank God, Finally!)</a></li><li><a
href="http://beerpla.net/2006/10/03/youtube-custom-rss-search-results/" rel="bookmark" title="October 3, 2006">Youtube Custom RSS Search Results</a></li></ul><p><a
class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fbeerpla.net%2F2008%2F08%2F15%2Fdebugging-weird-sshd-connection-problems-what-happens-when-you-stop-sshd%2F&amp;title=Debugging%20Weird%20sshd%20Connection%20Problems%20%2B%20What%20Happens%20When%20You%20Stop%20sshd" id="wpa2a_4"><img
src="http://beerpla.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded> <wfw:commentRss>http://beerpla.net/2008/08/15/debugging-weird-sshd-connection-problems-what-happens-when-you-stop-sshd/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> </channel> </rss>
