<?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/"
	>

<channel>
	<title>ELM's log</title>
	<atom:link href="http://blog.cost.edu.cn/wenzk/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.cost.edu.cn/wenzk</link>
	<description>Just another Blog.cost.edu.cn Blogs weblog</description>
	<pubDate>Fri, 18 Sep 2009 00:24:19 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>巧用Recent模块加固Linux安全</title>
		<link>http://blog.cost.edu.cn/wenzk/archives/84</link>
		<comments>http://blog.cost.edu.cn/wenzk/archives/84#comments</comments>
		<pubDate>Thu, 17 Sep 2009 03:38:18 +0000</pubDate>
		<dc:creator>wenzk</dc:creator>
		
		<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://blog.cost.edu.cn/wenzk/?p=84</guid>
		<description><![CDATA[众所周知，Linux可以通过编写iptables规则对进出Linux主机的数据包进行过滤等操作，在一定程度上可以提升Linux主机的安全性，在新版本内核中，新增了recent模块，该模块可以根据源地址、目的地址统计最近一段时间内经过本机的数据包的情况，并根据相应的规则作出相应的决策，详见：http://snowman.net/projects/ipt_recent/
1、通过recent模块可以防止穷举猜测Linux主机用户口令，通常可以通过iptables限制只允许某些网段和主机连接Linux机器的22/TCP端口，如果管理员IP地址经常变化，此时iptables就很难适用这样的环境了。通过使用recent模块，使用下面这两条规则即可解决问题：
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --name SSH --rsource -j DROP
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name SSH --rsource -j ACCEPT
应用该规则后，如果某IP地址在一分钟之内对Linux主机22/TCP端口新发起的连接超过4次，之后的新发起的连接将被丢弃。
2、通过recent模块可以防止端口扫描。
-A INPUT -m recent --update --seconds 60 --hitcount 20 --name PORTSCAN --rsource -j [...]]]></description>
			<content:encoded><![CDATA[<p>众所周知，Linux可以通过编写iptables规则对进出Linux主机的数据包进行过滤等操作，在一定程度上可以提升Linux主机的安全性，在新版本内核中，新增了recent模块，该模块可以根据源地址、目的地址统计最近一段时间内经过本机的数据包的情况，并根据相应的规则作出相应的决策，详见：http://snowman.net/projects/ipt_recent/</p>
<p>1、通过recent模块可以防止穷举猜测Linux主机用户口令，通常可以通过iptables限制只允许某些网段和主机连接Linux机器的22/TCP端口，如果管理员IP地址经常变化，此时iptables就很难适用这样的环境了。通过使用recent模块，使用下面这两条规则即可解决问题：<br />
<code>-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --name SSH --rsource -j DROP<br />
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name SSH --rsource -j ACCEPT</code><br />
应用该规则后，如果某IP地址在一分钟之内对Linux主机22/TCP端口新发起的连接超过4次，之后的新发起的连接将被丢弃。</p>
<p>2、通过recent模块可以防止端口扫描。<br />
<code>-A INPUT -m recent --update --seconds 60 --hitcount 20 --name PORTSCAN --rsource -j DROP<br />
-A INPUT -m recent --set --name PORTSCAN --rsource -j DROP</code><br />
应用该规则后，如果某个IP地址对非Linux主机允许的端口发起连接，并且一分钟内超过20次，则系统将中断该主机与本机的连接。</p>
<p>详细配置如下：</p>
<p>*filter<br />
:INPUT DROP [0:0]<br />
:FORWARD ACCEPT [0:0]<br />
:OUTPUT ACCEPT [458:123843]<code><br />
-A INPUT -i lo -j ACCEPT<br />
-A INPUT -i tap+ -j ACCEPT<br />
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT<br />
-A INPUT -m recent --update --seconds 60 --hitcount 20 --name PORTSCAN --rsource -j DROP<br />
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT<br />
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --name SSH --rsource -j DROP<br />
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name SSH --rsource -j ACCEPT<br />
-A INPUT -p udp -m udp --dport 53 -j ACCEPT<br />
-A INPUT -p tcp -m tcp --dport 53 -m state --state NEW -j ACCEPT<br />
-A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT<br />
-A INPUT -p tcp -m tcp --dport 443 -m state --state NEW -j ACCEPT<br />
-A INPUT -m recent --set --name PORTSCAN --rsource -j DROP<br />
COMMIT<br />
</code></p>
<p>以上配置说明，本机开放可供服务的端口有22/TCP（有连接频率限制）,53/TCP/UDP, 80/TCP, 443/TCP，所有发往本机的其他ip报文则认为是端口扫描，如果一分钟之内超过20次，则封禁该主机，攻击停止一分钟以上自动解封。</p>
<p>在这只是取个抛砖引玉的作用，通过recent模块还可以实现很多更复杂的功能，例如：22/TCP端口对所有主机都是关闭的，通过顺序访问23/TCP 24/TCP 25/TCP之后，22/TCP端口就对你一个IP地址开放等等。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cost.edu.cn/wenzk/archives/84/feed</wfw:commentRss>
		</item>
		<item>
		<title>arping for windows</title>
		<link>http://blog.cost.edu.cn/wenzk/archives/80</link>
		<comments>http://blog.cost.edu.cn/wenzk/archives/80#comments</comments>
		<pubDate>Sun, 03 May 2009 16:49:57 +0000</pubDate>
		<dc:creator>wenzk</dc:creator>
		
		<category><![CDATA[未分类]]></category>

		<category><![CDATA[arping]]></category>

		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://blog.cost.edu.cn/wenzk/?p=80</guid>
		<description><![CDATA[相信很多人都知道Linux下的arping命令，对于同一网段ping带有防火墙的机器是很方便的。
但是在windows下似乎没有这个程序，于是写了一个bat脚本来实现该功能。
@echo off
:loop
ping -n 1 -w 500 %1 &#62;nul
for /f "tokens=1,2 delims= " %%i in ('arp -a') do if %%i == %1 echo Reply from %1 [%%j]
arp -d
goto loop
将这段代码保存成arping.bat放到C:\Windows\System32下即可，需要将全角的双引号、单引号都变成半角的。
使用方法:
arping 目的IP地址，如：
C:\Documents and Settings\Administrator&#62;arping 192.168.254.254
Reply from 192.168.254.254 [00-18-4d-32-a8-34]
Reply from 192.168.254.254 [00-18-4d-32-a8-34]
Reply from 192.168.254.254 [00-18-4d-32-a8-34]
Reply from 192.168.254.254 [00-18-4d-32-a8-34]
^C终止批处理操作吗(Y/N)? y
C:\Documents and Settings\Administrator&#62;
]]></description>
			<content:encoded><![CDATA[<p>相信很多人都知道Linux下的arping命令，对于同一网段ping带有防火墙的机器是很方便的。</p>
<p>但是在windows下似乎没有这个程序，于是写了一个bat脚本来实现该功能。</p>
<p><code>@echo off<br />
:loop<br />
ping -n 1 -w 500 %1 &gt;nul<br />
for /f "tokens=1,2 delims= " %%i in ('arp -a') do if %%i == %1 echo Reply from %1 [%%j]<br />
arp -d<br />
goto loop</code></p>
<p>将这段代码保存成arping.bat放到C:\Windows\System32下即可，需要将全角的双引号、单引号都变成半角的。</p>
<p>使用方法:</p>
<p>arping 目的IP地址，如：</p>
<p>C:\Documents and Settings\Administrator&gt;arping 192.168.254.254<br />
Reply from 192.168.254.254 [00-18-4d-32-a8-34]<br />
Reply from 192.168.254.254 [00-18-4d-32-a8-34]<br />
Reply from 192.168.254.254 [00-18-4d-32-a8-34]<br />
Reply from 192.168.254.254 [00-18-4d-32-a8-34]<br />
^C终止批处理操作吗(Y/N)? y</p>
<p>C:\Documents and Settings\Administrator&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cost.edu.cn/wenzk/archives/80/feed</wfw:commentRss>
		</item>
		<item>
		<title>使用Graphviz遇到的一个错误</title>
		<link>http://blog.cost.edu.cn/wenzk/archives/78</link>
		<comments>http://blog.cost.edu.cn/wenzk/archives/78#comments</comments>
		<pubDate>Mon, 02 Mar 2009 01:47:39 +0000</pubDate>
		<dc:creator>wenzk</dc:creator>
		
		<category><![CDATA[未分类]]></category>

		<category><![CDATA[dot]]></category>

		<category><![CDATA[graphviz]]></category>

		<guid isPermaLink="false">http://blog.cost.edu.cn/wenzk/archives/78</guid>
		<description><![CDATA[在使用段老师给的seems.tar.gz时，发现系统无法描绘出path的路径图像。
运行dot生成图像时提示：
Error: Layout was not done.  Missing layout plugins
解决办法，由root运行dot -c一次即可。
Its is looking for its plugins at runtime in the location
/usr/lib/graphviz/ (or /usr/lib64/graphviz/ on 64bit machines),
where the prefix, &#8220;/usr&#8221;,  is set at ./configure time or at install-time.
So dot is not run-time relocatable in the way you are trying.    It is
install-time relocatable, but [...]]]></description>
			<content:encoded><![CDATA[<p>在使用段老师给的seems.tar.gz时，发现系统无法描绘出path的路径图像。</p>
<p>运行dot生成图像时提示：<br />
Error: Layout was not done.  Missing layout plugins</p>
<p>解决办法，由root运行dot -c一次即可。</p>
<p>Its is looking for its plugins at runtime in the location<br />
/usr/lib/graphviz/ (or /usr/lib64/graphviz/ on 64bit machines),<br />
where the prefix, &#8220;/usr&#8221;,  is set at ./configure time or at install-time.</p>
<p>So dot is not run-time relocatable in the way you are trying.    It is<br />
install-time relocatable, but that requires root access.</p>
<p>/usr/lib/graphviz/config   is created at install-time, by running &#8220;dot<br />
-c&#8221; as root.  It is a record of the plugins found in<br />
/usr/lib/graphviz/libgvplugin-*</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cost.edu.cn/wenzk/archives/78/feed</wfw:commentRss>
		</item>
		<item>
		<title>date在时间转换上不同版本的差异</title>
		<link>http://blog.cost.edu.cn/wenzk/archives/77</link>
		<comments>http://blog.cost.edu.cn/wenzk/archives/77#comments</comments>
		<pubDate>Mon, 02 Mar 2009 00:59:25 +0000</pubDate>
		<dc:creator>wenzk</dc:creator>
		
		<category><![CDATA[未分类]]></category>

		<category><![CDATA[date 时间 转换]]></category>

		<guid isPermaLink="false">http://blog.cost.edu.cn/wenzk/archives/77</guid>
		<description><![CDATA[# date &#8211;version
date (coreutils) 5.2.1
Written by David MacKenzie.
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[root@node40 data]# date +%s
1235955408
# date -d @1235955408
date: invalid date `@1235955408&#8242;
# date -d &#8220;1970-01-01 UTC 1235955408 seconds&#8221;
Mon Mar  2 [...]]]></description>
			<content:encoded><![CDATA[<p># date &#8211;version<br />
date (coreutils) 5.2.1<br />
Written by David MacKenzie.</p>
<p>Copyright (C) 2004 Free Software Foundation, Inc.<br />
This is free software; see the source for copying conditions.  There is NO<br />
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.<br />
[root@node40 data]# date +%s<br />
1235955408<br />
# date -d @1235955408<br />
date: invalid date `@1235955408&#8242;<br />
# date -d &#8220;1970-01-01 UTC 1235955408 seconds&#8221;<br />
Mon Mar  2 08:56:48 CST 2009</p>
<p>$ date &#8211;version<br />
date (GNU coreutils) 5.97<br />
Copyright (C) 2006 Free Software Foundation, Inc.<br />
This is free software.  You may redistribute copies of it under the terms of<br />
the GNU General Public License .<br />
There is NO WARRANTY, to the extent permitted by law.</p>
<p>Written by David MacKenzie.<br />
$ date -d @1235955408<br />
Mon Mar  2 08:56:48 CST 2009<br />
$ date -d &#8220;1970-01-01 UTC 1235955408 seconds&#8221;<br />
Mon Mar  2 08:56:48 CST 2009</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cost.edu.cn/wenzk/archives/77/feed</wfw:commentRss>
		</item>
		<item>
		<title>功能强大的fring</title>
		<link>http://blog.cost.edu.cn/wenzk/archives/76</link>
		<comments>http://blog.cost.edu.cn/wenzk/archives/76#comments</comments>
		<pubDate>Fri, 13 Feb 2009 10:38:29 +0000</pubDate>
		<dc:creator>wenzk</dc:creator>
		
		<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://blog.cost.edu.cn/wenzk/archives/76</guid>
		<description><![CDATA[

&#160;
 
fring™ is a mobile internet service &#38; community that enables you to access &#38; interact with your social networks on-the-go, make free calls and live chat with all your fring, Skype®, MSN® Messenger, Google Talk™, ICQ, SIP, Twitter, Yahoo!™ and AIM®* friends using your handset’s internet connection.
]]></description>
			<content:encoded><![CDATA[</p>
<p><img src="http://www.fring.com/fring_is/images/what_is_fring_pict.jpg" /></p>
<p>&#160;</p>
<p> <span id="more-76"></span>
<p><b>fring™ is a mobile internet service &amp; community</b> that enables you to access &amp; interact with your social networks on-the-go, make free calls and live chat with all your fring, Skype®, MSN® Messenger, Google Talk™, ICQ, SIP, Twitter, Yahoo!™ and AIM®* friends using your handset’s internet connection.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cost.edu.cn/wenzk/archives/76/feed</wfw:commentRss>
		</item>
		<item>
		<title>LiveMail的一个Bug</title>
		<link>http://blog.cost.edu.cn/wenzk/archives/75</link>
		<comments>http://blog.cost.edu.cn/wenzk/archives/75#comments</comments>
		<pubDate>Mon, 09 Feb 2009 03:17:28 +0000</pubDate>
		<dc:creator>wenzk</dc:creator>
		
		<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://blog.cost.edu.cn/wenzk/archives/75</guid>
		<description><![CDATA[大家看看我邮箱的邮件数，这个数字还在不停的增长。
 
 
其实我的邮箱没有那么多的邮件，看看这个图片就知道啦。
 
由于这个错误，导致Live Mail认为始终有邮件没有收回来。
换用OutLook Express试试：
 
OutLook Express提示错误就是这个样子的。
看来Windows Live Mail为了实现某些功能，委曲求全带来了新的Bug。。。
怎么导致的呢，上邮箱去看看就知道了，（ssh上去哦）。
 
原来是有一封邮件在邮箱里面，但是由于courier-imap执行用户没有权限打开该文件，所以出错啦，只要把用户属性修改过来就可以了。
]]></description>
			<content:encoded><![CDATA[<p>大家看看我邮箱的邮件数，这个数字还在不停的增长。</p>
<p><a href="http://blog.cost.edu.cn/wenzk/files/2009/02/image.png"><img height="183" alt="image" src="http://blog.cost.edu.cn/wenzk/files/2009/02/image-thumb.png" width="244" border="0" /></a> </p>
<p> <span id="more-75"></span>
<p>其实我的邮箱没有那么多的邮件，看看这个图片就知道啦。</p>
<p><a href="http://blog.cost.edu.cn/wenzk/files/2009/02/image1.png"><img height="183" alt="image" src="http://blog.cost.edu.cn/wenzk/files/2009/02/image-thumb1.png" width="244" border="0" /></a> </p>
<p>由于这个错误，导致Live Mail认为始终有邮件没有收回来。</p>
<p>换用OutLook Express试试：</p>
<p><a href="http://blog.cost.edu.cn/wenzk/files/2009/02/image2.png"><img height="178" alt="image" src="http://blog.cost.edu.cn/wenzk/files/2009/02/image-thumb2.png" width="244" border="0" /></a> </p>
<p>OutLook Express提示错误就是这个样子的。</p>
<p>看来Windows Live Mail为了实现某些功能，委曲求全带来了新的Bug。。。</p>
<p>怎么导致的呢，上邮箱去看看就知道了，（ssh上去哦）。</p>
<p><a href="http://blog.cost.edu.cn/wenzk/files/2009/02/image3.png"><img height="14" alt="image" src="http://blog.cost.edu.cn/wenzk/files/2009/02/image-thumb3.png" width="244" border="0" /></a> </p>
<p>原来是有一封邮件在邮箱里面，但是由于courier-imap执行用户没有权限打开该文件，所以出错啦，只要把用户属性修改过来就可以了。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cost.edu.cn/wenzk/archives/75/feed</wfw:commentRss>
		</item>
		<item>
		<title>OpenSSH与Putty</title>
		<link>http://blog.cost.edu.cn/wenzk/archives/58</link>
		<comments>http://blog.cost.edu.cn/wenzk/archives/58#comments</comments>
		<pubDate>Thu, 22 Jan 2009 17:00:29 +0000</pubDate>
		<dc:creator>wenzk</dc:creator>
		
		<category><![CDATA[未分类]]></category>

		<category><![CDATA[openssh]]></category>

		<category><![CDATA[port forwarding]]></category>

		<category><![CDATA[putty]]></category>

		<category><![CDATA[socks]]></category>

		<category><![CDATA[ssh]]></category>

		<category><![CDATA[winscp]]></category>

		<guid isPermaLink="false">http://blog.cost.edu.cn/wenzk/archives/58</guid>
		<description><![CDATA[写在开始之前
其实这是一篇介绍Putty使用的文章，文章不会太关注于技术细节和其它客户端的比较，原本想把文章的题目叫“Putty的使用”，但是又觉得文章介绍的内容并非是Putty独有的功能，而是OpenSSH的一些功能，所以最终还是选择使用“OpenSSH与Putty”，希望这个题目会相对贴切一些。
每当看到一些朋友或同事使用SecureCRT的时候，我总是会问一句：“为什么使用SecureCRT呢，这个软件不免费，需要破解，需要安装……？”，一般得到的答复都是：“习惯了，刚开始接触就用这个，你用什么呢？”，没错，很多时候人总是让惯性所左右了，很多事情都是习惯了，因为习惯了，所以我要继续保持现状……，其实我刚开始接触SSH的时候，使用的也是SecureCRT，并且这个软件对Serial支持也很好，对于网管来说，再也不用忍受Windows自带的“超级终端”了。后来想让自己尽量尊重知识产权，尽量少使用破解、盗版软件，所以逐步替换机器上的破解软件，具体是什么时候开始使用Putty我也记不太清楚了，肯定是2006年以前的事情了，当时Putty还不支持Serial，现在最新版本已经支持了，虽然不支持Xmodem（需要使用的时候，可以使用超级终端嘛）。
因为前一段时间和段老师讨论通过SSH编辑远程主机上的UTF-8文件的时候讨论到了Putty，段老师建议我写一篇Putty的使用手册，发在我们的博客上，充分利用这个平台交流，所以这篇文章和大家见面了，由于本人水平有限，如有错误，欢迎指正。

SSH的出现
在2000年以前，如果你管理很多Unix或Linux的机器，你可能对telnet非常熟悉，因为要通过telnet远程管理这些主机。如果你是一个网管，登录交换机、路由器也只能通过telnet来实现，后来大家越来越重视网络安全，在各个Linux发行版本中默认启用的都是通过SSH远程登录，之后在交换机和路由器上也实现了通过SSH登录，以提高系统的安全性。
Secure Shell(SSH)在维基百科上的解释是：在两个网络设备之间通过安全通道传输数据的一种网络协议。专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。透过 SSH 可以对所有传输的数据进行加密，也能够防止 DNS 欺骗和 IP 欺骗。SSH 之另一项优点为其传输的数据是经过压缩的，所以可以加快传输的速度。SSH有很多功能，它既可以代替 Telnet，又可以为FTP、POP、甚至为 PPP 提供一个安全的“通道”。相信总有一天你会和我有一样的感觉“Great SSH”。
为什么使用Putty
为什么使用Putty？我也问过我自己好多遍，为什么使用它，想来想去，我觉得首先它是开源的，其次它很小巧(putty.exe只有444K)，再次免安装，在任何一台机器，只要上网下载putty.exe即可通过用户名/密码登录远程主机，Putty界面很简洁，整个屏幕只有标题栏和滚动栏，剩下的空间全是你的啦。
如果你还使用WinSCP来传输文件，WinSCP和Putty使用的是相同的Pageant（使用公钥验证），你只需在本地开一个Pageant，就可以使用WinSCP在你机器和远程主机之间传输文件，也可以使用Putty远程登录其它主机。
当然，Putty也不是十全十美的，至少现在我觉得是有一些缺陷；首先、Putty不能帮你保存密码，如果你习惯了SecureCRT，因为SecureCRT可以帮你保存密码，你可能会觉得很不习惯；其次、Putty最新版本虽然支持Serial，但是不支持Xmodem，如果你要升级交换机软件版本，需要通过Xmodem传输软件包，那Putty可能无能为力。
如何获得Putty
习惯使用搜索引擎，登录http://www.google.com输入putty，返回的第一条记录就是你要的答案。从http://www.chiark.greenend.org.uk/~sgtatham/putty/ 可以获得最新版本的Putty软件，你可以选择下载完整的zip软件包，也可以单独下载你需要的一个用程序。

PuTTY (the Telnet and SSH client itself)
PSCP (an SCP client, i.e. command-line secure file copy)
PSFTP (an SFTP client, i.e. general file transfer sessions much like FTP)
PuTTYtel (a Telnet-only client)
Plink (a command-line interface to the PuTTY back ends)
Pageant (an SSH authentication [...]]]></description>
			<content:encoded><![CDATA[<p><strong>写在开始之前</strong></p>
<p>其实这是一篇介绍Putty使用的文章，文章不会太关注于技术细节和其它客户端的比较，原本想把文章的题目叫“Putty的使用”，但是又觉得文章介绍的内容并非是Putty独有的功能，而是OpenSSH的一些功能，所以最终还是选择使用“OpenSSH与Putty”，希望这个题目会相对贴切一些。</p>
<p>每当看到一些朋友或同事使用SecureCRT的时候，我总是会问一句：“为什么使用SecureCRT呢，这个软件不免费，需要破解，需要安装……？”，一般得到的答复都是：“习惯了，刚开始接触就用这个，你用什么呢？”，没错，很多时候人总是让惯性所左右了，很多事情都是习惯了，因为习惯了，所以我要继续保持现状……，其实我刚开始接触SSH的时候，使用的也是SecureCRT，并且这个软件对Serial支持也很好，对于网管来说，再也不用忍受Windows自带的“超级终端”了。后来想让自己尽量尊重知识产权，尽量少使用破解、盗版软件，所以逐步替换机器上的破解软件，具体是什么时候开始使用Putty我也记不太清楚了，肯定是2006年以前的事情了，当时Putty还不支持Serial，现在最新版本已经支持了，虽然不支持Xmodem（需要使用的时候，可以使用超级终端嘛）。</p>
<p>因为前一段时间和段老师讨论通过SSH编辑远程主机上的UTF-8文件的时候讨论到了Putty，段老师建议我写一篇Putty的使用手册，发在我们的博客上，充分利用这个平台交流，所以这篇文章和大家见面了，由于本人水平有限，如有错误，欢迎指正。</p>
<p><span id="more-58"></span></p>
<p><strong>SSH的出现</strong></p>
<p>在2000年以前，如果你管理很多Unix或Linux的机器，你可能对telnet非常熟悉，因为要通过telnet远程管理这些主机。如果你是一个网管，登录交换机、路由器也只能通过telnet来实现，后来大家越来越重视网络安全，在各个Linux发行版本中默认启用的都是通过SSH远程登录，之后在交换机和路由器上也实现了通过SSH登录，以提高系统的安全性。</p>
<p>Secure Shell(SSH)在维基百科上的解释是：在两个网络设备之间通过安全通道传输数据的一种网络协议。专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。透过 SSH 可以对所有传输的数据进行加密，也能够防止 DNS 欺骗和 IP 欺骗。SSH 之另一项优点为其传输的数据是经过压缩的，所以可以加快传输的速度。SSH有很多功能，它既可以代替 Telnet，又可以为FTP、POP、甚至为 PPP 提供一个安全的“通道”。相信总有一天你会和我有一样的感觉“Great SSH”。</p>
<p><strong>为什么使用Putty</strong></p>
<p>为什么使用Putty？我也问过我自己好多遍，为什么使用它，想来想去，我觉得首先它是开源的，其次它很小巧(putty.exe只有444K)，再次免安装，在任何一台机器，只要上网下载putty.exe即可通过用户名/密码登录远程主机，Putty界面很简洁，整个屏幕只有标题栏和滚动栏，剩下的空间全是你的啦。</p>
<p>如果你还使用WinSCP来传输文件，WinSCP和Putty使用的是相同的Pageant（使用公钥验证），你只需在本地开一个Pageant，就可以使用WinSCP在你机器和远程主机之间传输文件，也可以使用Putty远程登录其它主机。</p>
<p>当然，Putty也不是十全十美的，至少现在我觉得是有一些缺陷；首先、Putty不能帮你保存密码，如果你习惯了SecureCRT，因为SecureCRT可以帮你保存密码，你可能会觉得很不习惯；其次、Putty最新版本虽然支持Serial，但是不支持Xmodem，如果你要升级交换机软件版本，需要通过Xmodem传输软件包，那Putty可能无能为力。</p>
<p><strong>如何获得Putty</strong></p>
<p>习惯使用搜索引擎，登录<a href="http://www.google.com">http://www.google.com</a>输入putty，返回的第一条记录就是你要的答案。从<a title="http://www.chiark.greenend.org.uk/~sgtatham/putty/" href="http://www.chiark.greenend.org.uk/~sgtatham/putty/">http://www.chiark.greenend.org.uk/~sgtatham/putty/</a> 可以获得最新版本的Putty软件，你可以选择下载完整的zip软件包，也可以单独下载你需要的一个用程序。</p>
<ul>
<li>PuTTY (the Telnet and SSH client itself)</li>
<li>PSCP (an SCP client, i.e. command-line secure file copy)</li>
<li>PSFTP (an SFTP client, i.e. general file transfer sessions much like FTP)</li>
<li>PuTTYtel (a Telnet-only client)</li>
<li>Plink (a command-line interface to the PuTTY back ends)</li>
<li>Pageant (an SSH authentication agent for PuTTY, PSCP and Plink)</li>
<li>PuTTYgen (an RSA and DSA key generation utility).</li>
</ul>
<p>一共包含了这些文件，一般比较常用的就是Putty、Pageant、PuttyGen。</p>
<p><strong>Putty使用之基础篇</strong></p>
<p>下载Putty.exe后第一运行出现这样的对话框：</p>
<p><a href="http://blog.cost.edu.cn/wenzk/files/2009/01/image1.png"><img src="http://blog.cost.edu.cn/wenzk/files/2009/01/image-thumb1.png" border="0" alt="image" width="244" height="233" /></a></p>
<p>当然，在配置文件区域（Saved Sessions）中只有一个Default Settings，当然了，你可以通过修改默认配置，然后为不同的主机保存不同的配置文件。如上图的(BSD_wzk CNC_wzk …)。</p>
<p><strong>登录篇</strong></p>
<p>基本使用方法很简单：</p>
<p>在Host Name(or IP address)输入你要登录主机的域名或IP地址，如果使用的是非默认端口，需要修改Port的值，然后选择Open即可连接主机，接着分别输入用户名和密码即可登录上远程主机。</p>
<p>小技巧：如果你觉得每次都输入用户名比较麻烦，下载最新版本的Putty(老版本不支持该功能)，在Host Name(or IP address)输入 <a href="mailto:USER@host">USER@host</a> 即可省略用户名的输入，如： <a href="mailto:wzk@www.wenzk.net">wzk@www.wenzk.net</a> 下次登录的时候只需输入密码即可。</p>
<p><strong>中文篇：</strong></p>
<p><strong> 1、字符集问题</strong></p>
<p>现在最新版本对中文的支持已经很不错了，如果是老版本除了需要关注字符编码问题，还需要关注这个地方的设置：</p>
<p>Window-&gt;Appearance-&gt;Font settings-&gt;Change…</p>
<p><a href="http://blog.cost.edu.cn/wenzk/files/2009/01/image2.png"><img src="http://blog.cost.edu.cn/wenzk/files/2009/01/image-thumb2.png" border="0" alt="image" width="244" height="233" /></a></p>
<p>注意使用“新宋体”，字号根据自己喜好即可，字符集选择“GB2312”，如下图：</p>
<p><a href="http://blog.cost.edu.cn/wenzk/files/2009/01/image3.png"><img src="http://blog.cost.edu.cn/wenzk/files/2009/01/image-thumb3.png" border="0" alt="image" width="244" height="179" /></a></p>
<p>不过似乎新版本不需这样配置（新版本的Putty，且不使用UTF-8编码），直接使用默认配置也可以正常显示中文，应该是一个进步吧。</p>
<p><strong> 2、字符编码问题</strong></p>
<p>如果你使用Linux有7-8年左右，你可能会发现UTF-8编码使用越来越普遍了，现在Linux默认就使用UTF-8编码了。在RedHat 7.2默认配置：</p>
<p>[wzk@intranet ~]$ locale<br />
LANG=en_US<br />
LC_CTYPE=&#8221;en_US&#8221;<br />
LC_NUMERIC=&#8221;en_US&#8221;<br />
LC_TIME=&#8221;en_US&#8221;<br />
LC_COLLATE=&#8221;en_US&#8221;<br />
LC_MONETARY=&#8221;en_US&#8221;<br />
LC_MESSAGES=&#8221;en_US&#8221;<br />
LC_PAPER=&#8221;en_US&#8221;<br />
LC_NAME=&#8221;en_US&#8221;<br />
LC_ADDRESS=&#8221;en_US&#8221;<br />
LC_TELEPHONE=&#8221;en_US&#8221;<br />
LC_MEASUREMENT=&#8221;en_US&#8221;<br />
LC_IDENTIFICATION=&#8221;en_US&#8221;<br />
LC_ALL=<br />
[wzk@intranet ~]$</p>
<p>而现在的Linux发行版本却是这样的(CentOS 5.2)：</p>
<p>[wzk@netmon ~]$ locale<br />
LANG=en_US.UTF-8<br />
LC_CTYPE=&#8221;en_US.UTF-8&#8243;<br />
LC_NUMERIC=&#8221;en_US.UTF-8&#8243;<br />
LC_TIME=&#8221;en_US.UTF-8&#8243;<br />
LC_COLLATE=&#8221;en_US.UTF-8&#8243;<br />
LC_MONETARY=&#8221;en_US.UTF-8&#8243;<br />
LC_MESSAGES=&#8221;en_US.UTF-8&#8243;<br />
LC_PAPER=&#8221;en_US.UTF-8&#8243;<br />
LC_NAME=&#8221;en_US.UTF-8&#8243;<br />
LC_ADDRESS=&#8221;en_US.UTF-8&#8243;<br />
LC_TELEPHONE=&#8221;en_US.UTF-8&#8243;<br />
LC_MEASUREMENT=&#8221;en_US.UTF-8&#8243;<br />
LC_IDENTIFICATION=&#8221;en_US.UTF-8&#8243;<br />
LC_ALL=<br />
[wzk@netmon ~]$</p>
<p>现在越来越多的网页也使用UTF-8编码了，但是有很多老的代码使用的仍然是GB2312编码，在新的Linux发行版本中进行修改的时候可能会有很大的麻烦，vi之后发现是乱码，这个一般都是编码的问题。</p>
<p>一般说来，要正确显示汉字，编码方面需要有3个统一：客户端，Linux环境变量和文件编码。这三个方面的编码需要统一，必须以文件为准，因为你编辑的是文件，文件使用的是UTF-8编码，别的设置也设置成UTF-8编码，否则肯定出现乱码。</p>
<p>Putty设置使用UTF-8编码：</p>
<p>Window-&gt;Translation-&gt;Character set translation on recieved data-&gt;UTF-8</p>
<p><a href="http://blog.cost.edu.cn/wenzk/files/2009/01/image4.png"><img src="http://blog.cost.edu.cn/wenzk/files/2009/01/image-thumb4.png" border="0" alt="image" width="244" height="233" /></a></p>
<p>保存后，你客户端的UTF-8编码就设置成功了，默认使用的是“Use font encoding”。</p>
<p>Linux环境变量设置使用UTF-8编码：</p>
<p>一般来说新版本的Linux发行版都使用UTF-8编码了，可以使用locale命令来检查，如果不是，在BASH下可以使用export LANG=xx_XX.UTF-8来设置，xx_XX一般为zh_CN或en_US。</p>
<p>[wzk@intranet ~]$ export LANG=en_US.UTF-8<br />
[wzk@intranet ~]$ locale<br />
LANG=en_US.UTF-8<br />
LC_CTYPE=&#8221;en_US.UTF-8&#8243;<br />
LC_NUMERIC=&#8221;en_US.UTF-8&#8243;<br />
LC_TIME=&#8221;en_US.UTF-8&#8243;<br />
LC_COLLATE=&#8221;en_US.UTF-8&#8243;<br />
LC_MONETARY=&#8221;en_US.UTF-8&#8243;<br />
LC_MESSAGES=&#8221;en_US.UTF-8&#8243;<br />
LC_PAPER=&#8221;en_US.UTF-8&#8243;<br />
LC_NAME=&#8221;en_US.UTF-8&#8243;<br />
LC_ADDRESS=&#8221;en_US.UTF-8&#8243;<br />
LC_TELEPHONE=&#8221;en_US.UTF-8&#8243;<br />
LC_MEASUREMENT=&#8221;en_US.UTF-8&#8243;<br />
LC_IDENTIFICATION=&#8221;en_US.UTF-8&#8243;<br />
LC_ALL=</p>
<p>通过以上设置，你在Linux上通过VI打开一个UTF-8编码的文件就不会乱码了。在BSD上就更麻烦一些了，可以借助Google来搞定。</p>
<p>如果文件使用的是非UTF-8编码，而是普通的GBK或GB2312编码，在Putty的设置选择“Use font encoding”即可，Linux环境变量使用export LANG=xx_XX即可。</p>
<p><strong>Putty使用之提高篇</strong></p>
<p><strong>1、公钥验证</strong></p>
<p>对于很多人来说，可能习惯使用用户名/密码方式来登录服务器，使用密码验证带来的麻烦就是记忆一堆繁琐的密码，如果你管理很多机器，唯一的办法就是把所有机器的口令都设置成同一个，一般都建议使用与自己无关的口令，长度至少6位以上，包含字符（大小写）、数字和特殊符号，建议1-3月更换一次，记忆和更换密码将是很大的一个工程，如果完全依靠人脑来记忆这些没有任何规则的口令，几乎是不太可能的。</p>
<p>使用公钥验证可以很轻松的解决密码管理的问题，使用公钥验证，你根本不需要去关心系统上你的用户的密码是什么，因为你登录的时候不需要提供这个密码（除非你使用sudo），有些管理员为了安全，直接关闭密码验证，通过ssh登录根本不给你提供密码验证的机会，也就不用关心机器上用户的口令是否是弱口令的问题了。（现在把root口令设置成123456放在互联网上，不到一天的时间，再用root/123456或许就登录不上去了。）</p>
<p>公钥为什么安全，我个人觉得：1、因为公/私钥长度一般都是1024或2048位，如果别人要猜测你的私钥，要生成一个1024位的私钥并且与服务器上的公钥对应上应该不是很容易的事情吧（个人不懂密码学，所以不了解细节）。2、私钥一直是你自己保管的，别人（包括管理员）不可能获得你的私钥。3、私钥可以用一个PassPhrase保护起来，需要一个PassPhrase才能打开并使用你的私钥。</p>
<p>1)、如何生成公/私钥</p>
<p>需要使用公/私钥验证，首先必须生成一对密钥，当然你可以使用OpenSSH的ssh-keygen来生成，这里介绍使用图形化的PuttyGen.exe来生成。</p>
<p><a href="http://blog.cost.edu.cn/wenzk/files/2009/01/image5.png"><img src="http://blog.cost.edu.cn/wenzk/files/2009/01/image-thumb5.png" border="0" alt="image" width="188" height="59" /></a></p>
<p><a href="http://blog.cost.edu.cn/wenzk/files/2009/01/image6.png"><img src="http://blog.cost.edu.cn/wenzk/files/2009/01/image-thumb6.png" border="0" alt="image" width="244" height="235" /></a></p>
<p>在Parameters中可以选择密钥的类型（默认使用：SSH-2RSA），也可选择密钥的长度（默认：1024位）。点击“Generate”开始创建，创建的时候鼠标需要在空白框内移动，用于获取相对随机的随机数。</p>
<p><a href="http://blog.cost.edu.cn/wenzk/files/2009/01/image7.png"><img src="http://blog.cost.edu.cn/wenzk/files/2009/01/image-thumb7.png" border="0" alt="image" width="244" height="235" /></a></p>
<p>可以在Key passphrase中输入你的私钥的保护密码（这个必须记住，用来打开你的私钥，忘记就必须重新生成了）。</p>
<p><a href="http://blog.cost.edu.cn/wenzk/files/2009/01/image8.png"><img src="http://blog.cost.edu.cn/wenzk/files/2009/01/image-thumb8.png" border="0" alt="image" width="244" height="235" /></a></p>
<p>选择“Save private key”把生成的私钥保存成一个“.ppk”文件，以后Pageant.exe会用到。图中灰色框中显示的就是你的公钥（放到服务器上去的），类似以下内容（每个人生成的key是不一样的，每次生成的也不一样）：</p>
<p>ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiv/Unjvcm1GqvvtRET/IGk3nuR/YvlM1clRzoGi1LqY6zu6wgjT5q6VvfL3PHmBGx6V2GbHwvie91R5Y42oTsTvnUtryrPqfDisc3CIfCDBZjOWiPpSjwM46+Mjfj/xuyOe8NCcTkzcBlbx9ySQojRjiCnIt8oxESOYMlCbPvuc= rsa-key-20090122</p>
<p>到此为止，你的公/私钥就生成完毕了，记住：私钥自己保管好，任何人都不要给，否则你就需要更换你所有服务器上的公钥。公钥也保存好，建议放到某个web服务器上，让你可以从别的主机通过curl或wget下载得到，例如将文件保在<a href="http://mrtg.neu.edu.cn/authorized_keys">http://mrtg.neu.edu.cn/authorized_keys</a>中。</p>
<p>2)、如何处置公钥</p>
<p>公钥是放到服务器上的，对普通用户来说，应该把公钥放到什么地方呢？一般说来，OpenSSH默认配置（记住是默认配置，也有特殊的，具体可以问管理员）是使用用户目录下的.ssh/authorized_keys作为信任公钥列表，每行一个公钥（如果.ssh不存在，可以自己创建，如果authorized_keys不存在，这个文件一般都不存在，也可以自己创建）。以下演示如何创建该文件：</p>
<p><a href="http://blog.cost.edu.cn/wenzk/files/2009/01/image9.png"><img src="http://blog.cost.edu.cn/wenzk/files/2009/01/image-thumb9.png" border="0" alt="image" width="244" height="144" /></a></p>
<p>注意：用你自己的身份去创建目录和文件，最好保证目录权限为700，authorized_keys文件权限为600，在某些要求比较严的系统上会检查这个文件和目录的权限是否正确，如果有问题，就不允许你通过公钥验证登录。</p>
<p>3)、如何使用私钥登录服务器</p>
<p>在服务器上配置好后，你可以试着从客户端使用私钥登录服务器，使用SecureCRT的用户可能习惯在配置文件中选择一个私钥用户登录服务器，但是Putty不支持这种方式，Putty要使用公/私钥方式，必须在客户端启用Pageant.exe这个程序。</p>
<p><a href="http://blog.cost.edu.cn/wenzk/files/2009/01/image10.png"><img src="http://blog.cost.edu.cn/wenzk/files/2009/01/image-thumb10.png" border="0" alt="image" width="189" height="59" /></a></p>
<p>启动Pageant后，系统托盘上会有Pageant图标。</p>
<p><a href="http://blog.cost.edu.cn/wenzk/files/2009/01/image11.png"><img src="http://blog.cost.edu.cn/wenzk/files/2009/01/image-thumb11.png" border="0" alt="image" width="24" height="26" /></a></p>
<p>双击图标出现如下界面。</p>
<p><a href="http://blog.cost.edu.cn/wenzk/files/2009/01/image12.png"><img src="http://blog.cost.edu.cn/wenzk/files/2009/01/image-thumb12.png" border="0" alt="image" width="244" height="172" /></a></p>
<p>从上面可以看到，在Key list中没有任何私钥加入进来，所以我们要把刚才生成的私钥加入到列表中，选择“Add Key”，然后选择刚才保存的.ppk文件，输入打开私钥的PassPhrase，如图：</p>
<p><a href="http://blog.cost.edu.cn/wenzk/files/2009/01/image13.png"><img src="http://blog.cost.edu.cn/wenzk/files/2009/01/image-thumb13.png" border="0" alt="image" width="244" height="172" /></a></p>
<p>如果你使用不同的私钥登录不同的服务器，你也可以将多个私钥加入到Pageant中来，在登录系统的时候，Pageant会自动为你挑选一个私钥用于验证。</p>
<p>完成上述步骤后，重新登录你的服务器，看是否不再向你提示输入密码就可以登录进去了。</p>
<p><a href="http://blog.cost.edu.cn/wenzk/files/2009/01/image14.png"><img src="http://blog.cost.edu.cn/wenzk/files/2009/01/image-thumb14.png" border="0" alt="image" width="244" height="144" /></a></p>
<p>小窍门：如果你常使用的只有一个Key，每次打开Pageant.exe之后，然后点击系统托盘上的图标，然后添加Key，是否会太繁琐呢？解决办法：创建一个Pageant.exe的快捷方式，修改快捷方式的内容，把目标改成 D:\CommonSoft\putty\PAGEANT.EXE D:\xxx\xxx.PPK，这样每次点击这个快捷方式打开Pageant.exe直接提示输入xxx.ppk的PassPhrase，成功之后就这个key就加入到Pageant中了。</p>
<p><strong>2、TCP Port Forwarding</strong></p>
<p>相信用过SSL VPN的人知道这么一个功能，如下面的网络结构：</p>
<p>A &#8212;&#8212; B  &#8212;&#8212;  C</p>
<p>假设你是A，A无法访问C的TCP/23端口，但是B却可以访问C的TCP/23端口，A如何便捷的通过B访问到C呢，使用TCP Port Forwarding就可以实现这个功能了，不过仅限TCP协议。</p>
<p><a href="http://blog.cost.edu.cn/wenzk/files/2009/01/image15.png"><img src="http://blog.cost.edu.cn/wenzk/files/2009/01/image-thumb15.png" border="0" alt="image" width="244" height="144" /></a></p>
<p>如上图所示，A想通过B访问C(bbs.neu.edu.cn/TCP/23)的bbsd服务，只需通过如下设置即可：</p>
<p><a href="http://blog.cost.edu.cn/wenzk/files/2009/01/image16.png"><img src="http://blog.cost.edu.cn/wenzk/files/2009/01/image-thumb16.png" border="0" alt="image" width="244" height="233" /></a></p>
<p>修改当前Session的配置（在标题栏上点击鼠标右键，选择“Change Settings”即可），在Connection-&gt;Tunnels</p>
<p>Source port：是在你本机监听的一个端口，隧道建立之连接这个端口即可。</p>
<p>Destination：隧道的另一端是哪个机器，哪个端口，这里应该写bbs.neu.edu.cn:23。</p>
<p>因为是在本机监听端口，所以选择的是Local Forwarding。关于Remote类似，在远程监听端口，用于反向访问。</p>
<p>完成后点击Add添加，选择Apply应用。</p>
<p><a href="http://blog.cost.edu.cn/wenzk/files/2009/01/image17.png"><img src="http://blog.cost.edu.cn/wenzk/files/2009/01/image-thumb17.png" border="0" alt="image" width="244" height="233" /></a></p>
<p>配置完成后，在A机器上可以通过telnet localhost 1111访问C机器上的bbs.neu.edu.cn:23端口了。</p>
<p><a href="http://blog.cost.edu.cn/wenzk/files/2009/01/image18.png"><img src="http://blog.cost.edu.cn/wenzk/files/2009/01/image-thumb18.png" border="0" alt="image" width="244" height="165" /></a></p>
<p>再看看B机器的TCP连接情况</p>
<p><a href="http://blog.cost.edu.cn/wenzk/files/2009/01/image19.png"><img src="http://blog.cost.edu.cn/wenzk/files/2009/01/image-thumb19.png" border="0" alt="image" width="244" height="144" /></a></p>
<p>多了一条tcp        0      0 192.168.255.185:55043   202.118.1.82:23         ESTABLISHED，这个就是TCP Prot Forwarding的结果。</p>
<p><strong>3、Socks代理</strong></p>
<p>如果把TCP Port Forwarding看着是TCP的特定目的地址特定端口代理的话，那么Socks代理功能就是全能代理了，配合知名的Socks CAP v2，可以实现任何程序都通过服务器代理上网，也不用在服务器上安装任何代理软件（可谓是代理上网不留痕啊）。</p>
<p>配置Putty：</p>
<p><a href="http://blog.cost.edu.cn/wenzk/files/2009/01/image20.png"><img src="http://blog.cost.edu.cn/wenzk/files/2009/01/image-thumb20.png" border="0" alt="image" width="244" height="233" /></a></p>
<p>修改当前Session的配置（在标题栏上点击鼠标右键，选择“Change Settings”即可），在Connection-&gt;Tunnels</p>
<p>Source port：是在你本机监听的一个端口，也就是本机Socks代理的端口。</p>
<p>Destination：留空</p>
<p>类型选择：Dynamic（动态）</p>
<p>同样选择“Add”后选择“Apply”应用设置生效。</p>
<p><a href="http://blog.cost.edu.cn/wenzk/files/2009/01/image21.png"><img src="http://blog.cost.edu.cn/wenzk/files/2009/01/image-thumb21.png" border="0" alt="image" width="232" height="244" /></a></p>
<p>IE配置使用Socks代理方法如上图，使用IE访问互联网试试：</p>
<p><a href="http://blog.cost.edu.cn/wenzk/files/2009/01/image22.png"><img src="http://blog.cost.edu.cn/wenzk/files/2009/01/image-thumb22.png" border="0" alt="image" width="244" height="178" /></a></p>
<p>呵呵，测试而已。</p>
<p>记住，Socks代理利器：Sockscap，目前似乎最新版本是2.40。</p>
<p><strong>4、WinSCP与Pageant</strong></p>
<p>只要在客户端启动了Pageant，并且把相应的Key都加入到keylist中，在使用WinSCP的时候会自动使用Pageant中的私钥，无需使用密码。</p>
<p><a href="http://blog.cost.edu.cn/wenzk/files/2009/01/image23.png"><img src="http://blog.cost.edu.cn/wenzk/files/2009/01/image-thumb23.png" border="0" alt="image" width="244" height="171" /></a></p>
<p>之后选择Login即可，当然你也可以单独为某个主机选择一个私钥，个人比较习惯使用Pageant。</p>
<p><strong>5、Key Agent Forwarding</strong></p>
<p>前面已经介绍过使用Pageant的使用，在本机启用Pageant之后，登录任何服务器都不需要提供密码了，直接从Pageant取私钥进行验证。这种方式似乎有一点点缺陷，任何一台服务器都需要从A直接登录，即：</p>
<p>A &#8212;&#8212;&#8211;  B</p>
<p>|</p>
<p>C</p>
<p>必须从A登录B和A登录C，如果A登录B之后，想从B登录C，此刻系统仍然提示输入密码，试图通过密码验证来登录服务器。如果A无法直接访问C，最傻瓜的方法是A把私钥在B服务器上放一份，在从B登录C的时候使用B上面的私钥登录，这样大大的降低了私钥的安全性。</p>
<p>为了解决这样一个问题，Key Agent Forwarding就诞生了，其目的是只要你在A上开启了Pageant，你登录B之后，从B登录其它任何服务器，公钥验证都可以Forwarding到A上面来验证。即从B登录C也不需要输入密码了，在B上也不需要保存一份私钥文件。配置Key Agent Forwarding如下：</p>
<p><a href="http://blog.cost.edu.cn/wenzk/files/2009/01/image24.png"><img src="http://blog.cost.edu.cn/wenzk/files/2009/01/image-thumb24.png" border="0" alt="image" width="244" height="233" /></a></p>
<p>修改Session配置，Connection-&gt;SSH-&gt;Auth，选上Allow agent forwarding即可。</p>
<p>A &#8212;&#8212;  B &#8212;&#8212; C &#8212;&#8212; D</p>
<p>这样从A登录到B，在B通过ssh C可以直接使用公钥验证。</p>
<p>如果从在C上还希望ssh D也通过使用公钥验证，这在登录C的时候需要打开ssh的key agent forwarding，使用ssh –X C即可。</p>
<p><strong>6、关于配置文件（段老师提供）</strong></p>
<p>关于Session 配置的存储和备份，我补充一点，对于在多台计算机上使用putty或者系统备份与重装很有用：</p>
<p>1、Putty把session信息存储在注册表中，而不是配置文件里。要把配置信息导出来，可以用：</p>
<p>REG EXPORT HKCU\Software\SimonTatham\PuTTY Putty.reg</p>
<p>在新的计算机上导入：</p>
<p>REG IMPORT Putty.reg</p>
<p>2、使用另一个putty版本：portaPuTTY ，把session信息存储在配置文件，而不是注册表，可以算绿色软件了吧。软件下载地址：<a rel="nofollow" href="http://socialistsushi.com/2005/11/17/portaputty">http://socialistsushi.com/2005/11/17/portaputty</a></p>
<p><strong>7、其他</strong></p>
<p>X11 frowarding … 等等功能，大家用用Google吧，都是SSH的功能，在Putty上也能体现。</p>
<p><strong>结束语</strong></p>
<p>罗罗嗦嗦的讲了一大堆，我自己都晕了，希望大家不要晕，能给不熟悉SSH和Putty的用户起到一个抛砖引玉的作用，或许某一天你会从你嘴里说出“Great SSH”。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cost.edu.cn/wenzk/archives/58/feed</wfw:commentRss>
		</item>
		<item>
		<title>使用Live Writer无法发布带图片的日志</title>
		<link>http://blog.cost.edu.cn/wenzk/archives/9</link>
		<comments>http://blog.cost.edu.cn/wenzk/archives/9#comments</comments>
		<pubDate>Thu, 22 Jan 2009 10:00:34 +0000</pubDate>
		<dc:creator>wenzk</dc:creator>
		
		<category><![CDATA[未分类]]></category>

		<category><![CDATA[Live Writer]]></category>

		<category><![CDATA[图片]]></category>

		<category><![CDATA[域名]]></category>

		<category><![CDATA[日志]]></category>

		<guid isPermaLink="false">http://blog.cost.edu.cn/wenzk/?p=9</guid>
		<description><![CDATA[一直没有往这个博客发过带图片的日志，今天测试一下用Live Writer发布一个图片试试，但是结果却是让人预想不到的，居然提示日志不允许发布图片，建议使用FTP上传图片，于是登录到后台看看是否哪个地方设置不对了，但是看看设置，一切也是OK的，为什么呢？
&#160;
 
记得自己在东大的博客，也是Wordpress MU，以前在东大的博客发布带图片的日志是没有问题的，于是对比了这两个博客后台的设置，也没有比较出一个所以然。上网Google了一下，也没有满意的答复，最后无奈之下打算试试这个不太可能的方法。
因为博客的域名修改了，原来是blog1.ccert.edu.cn，现在是blog.cost.edu.cn，不管是否可以成功，先把域名修改过来，于是修改Live Writer的账户设置，把域名修改过来。继续重新发送该日志，嘿嘿，结果还成功了。
]]></description>
			<content:encoded><![CDATA[<p>一直没有往这个博客发过带图片的日志，今天测试一下用Live Writer发布一个图片试试，但是结果却是让人预想不到的，居然提示日志不允许发布图片，建议使用FTP上传图片，于是登录到后台看看是否哪个地方设置不对了，但是看看设置，一切也是OK的，为什么呢？</p>
<p>&#160;</p>
<p> <span id="more-9"></span>
<p>记得自己在东大的博客，也是Wordpress MU，以前在东大的博客发布带图片的日志是没有问题的，于是对比了这两个博客后台的设置，也没有比较出一个所以然。上网Google了一下，也没有满意的答复，最后无奈之下打算试试这个不太可能的方法。</p>
<p>因为博客的域名修改了，原来是blog1.ccert.edu.cn，现在是blog.cost.edu.cn，不管是否可以成功，先把域名修改过来，于是修改Live Writer的账户设置，把域名修改过来。继续重新发送该日志，嘿嘿，结果还成功了。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cost.edu.cn/wenzk/archives/9/feed</wfw:commentRss>
		</item>
		<item>
		<title>测试图片</title>
		<link>http://blog.cost.edu.cn/wenzk/archives/8</link>
		<comments>http://blog.cost.edu.cn/wenzk/archives/8#comments</comments>
		<pubDate>Thu, 22 Jan 2009 09:52:48 +0000</pubDate>
		<dc:creator>wenzk</dc:creator>
		
		<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://blog.cost.edu.cn/wenzk/?p=8</guid>
		<description><![CDATA[ 
用键盘上的PrtSC也可以只抓活动窗口，而不是全屏。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.cost.edu.cn/wenzk/files/2009/01/image.png"><img height="191" alt="image" src="http://blog.cost.edu.cn/wenzk/files/2009/01/image-thumb.png" width="244" border="0" /></a> </p>
<p>用键盘上的PrtSC也可以只抓活动窗口，而不是全屏。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cost.edu.cn/wenzk/archives/8/feed</wfw:commentRss>
		</item>
		<item>
		<title>又是一个支持WP的博客</title>
		<link>http://blog.cost.edu.cn/wenzk/archives/3</link>
		<comments>http://blog.cost.edu.cn/wenzk/archives/3#comments</comments>
		<pubDate>Fri, 09 Jan 2009 05:31:57 +0000</pubDate>
		<dc:creator>wenzk</dc:creator>
		
		<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://blog1.ccert.edu.cn/wenzk/2009/01/09/%e5%8f%88%e6%98%af%e4%b8%80%e4%b8%aa%e6%94%af%e6%8c%81wp%e7%9a%84%e5%8d%9a%e5%ae%a2/</guid>
		<description><![CDATA[发一篇博客，证明我来过，哈哈：）
]]></description>
			<content:encoded><![CDATA[<p>发一篇博客，证明我来过，哈哈：）</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cost.edu.cn/wenzk/archives/3/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
