PuTTY 中文教程
作者:柴锋  2006年11月
Web:www.chaifeng
email: putty-tutorial [0x40] chaifeng [0x2E] com
Links:le/View?docid=ajbgz6fp3pjh_2dwwwwt
更新记录
2006-11-29
初步完成想写的这些东西
2007-06-11
PuTTY 的最新版本到了0.6;修改了一下 SSH 隧道;添加了 SSH 反向隧道;添加了用 SSH 做代理服务器;
2007-09-03
补充了几个 FAQ
2008-05-04
很久没有更新过了,这次加上一个小技巧吧,如何安全、方便的使用 vnc,远程连接 vnc 不需要密码。
2008-08-12
刚刚在 lifehacker 看到 Google Docs 的几个小技巧 ,这篇文章终于有目录了 ^_^
2009-04-11
补充了一个 FAQ,如何保存登录的会话,下次登录还可以看到上次登录的界面。
另外,昨天刚刚从 QCon Beijing 2009 的大会现场回来,祝贺这次 QCon 大会的成功召开。
版权声明
This document is licensed under a Creative Commons License.
Creative Commons Deed 署名 2.5
Creative Commons Attribution 2.5
您可自由:
复制、发行、展览、表演、放映、广播或通过信息网络传播本作品
创作演绎作品
对本作品进行商业性使用
惟须遵守下列条件:
署名. 您必须按照作者或者许可人指定的方式对作品进行署名。
对任何再使用或者发行,您都必须向他人清楚地展示本作品使用的许可协议条款。
如果得到著作权人的许可,您可以不受任何这些条件的限制。
您的合理使用以及其他权利不受上述规定的影响。

这是一份普通人可以理解的法律文本(许可协议全文) 的概要。
免责声明
1. PuTTY 中文教程
a. 更新记录
b. 版权声明
c. 序言
d. 一些基本知识
e. 简介
f. 安装
g. 第一印象,开始登录一台远程主机
h. 首次登录一台主机时
i. 又看到了中文乱码
j. 怎么还是乱码?
k. 在 PuTTY 里面怎样选中,复制和粘贴?
2. 实时保存会话
a. 关于注销登录的一些事情
b. 窗口保存的输出有点少,前面的都看不到了
c. 新建一个会话时,还有些东西再啰嗦一下
i. 保持连接,不要自动断开
ii. 自动登录用户
iii. 自动设置环境变量
iv. 设置代理服务器
v. 自动执行一个命令
vi. 数据自动压缩传输,变相的提高传输速率
vii. 无需口令登录
viii. X11 转发能够让你在 Windows 上使用 Linux 的程序
乱码文字生成ix. 用 SSH Tunnels(SSH 隧道),突破防火墙
d. 象特洛伊木马一样建立一条 SSH 反向隧道
e. 把 PuTTY 作为一个安全的代理服务器来使用
i. 设置 PuTTY 的默认设置
ii. 备份 PuTTY 的设置
iii. 删除 PuTTY 的设置
f. 用 PuTTYgen 来生成密钥,以后可以不用密码登录服务器了
i. 开始用 PuTTYgen 创建密钥
ii. 用密钥登录服务器的流程
g. Pagent 加载密钥,每次开机后只需要输入一次密钥口令
h. 用 SSH 来传输文件
i. PSCP 的使用
ii. 再来看看 PSFTP
iii. 其他可选的 SFTP 客户端
i. 用 Plink 更方便快捷的执行远程主机上的命令
j. 用假象去迷惑敌人
k. Tips(小技巧)
l. FAQ(常见问题)
m. 附录
序言
懒,是一个优点,有些时候还是要学一学才能会了的。
                                                  —— 柴锋(1979-      )

我的这些文字是从这几年来的 PuTTY 使用经验中慢慢得来的,也不仅仅是介绍 PuTTY,还包括了一些相关的软件,比如:优秀的 FTP 工具 FileZilla、功能强大的 SFTP 客户端 WinSCP。
杂七杂八的乱说了一些,这里把大致内容罗列如下:
最简单的使用,登录 SSH 主机
中文乱码的处理
PuTTY 常用配置的说明
o 复制、粘贴
o 保存会话
o 注销
o 自动登录用户名
o 自动设置环境变量
o 设置代理服务器
o 自动执行命令
o 备份、删除 PuTTY 的设置
PuTTY 的 X11 转发
如何用 PuTTY 建立 SSH 隧道
如何用 PuTTY 建立反向的 SSH 隧道,像个特洛伊木马一样突破防火墙
把 PuTTY 作为一个安全的代理服务器
o 安全的上网不被嗅探
o 避免 MSN 等聊天工具被监听
怎样用 PSCP、PSFTP 安全的传输文件
o 功能强大的 SFTP 客户端 WinSCP
用 PuTTYgen 生成密钥,登录 SSH 主机不再需要口令
Pagent 代理密钥,每次开机只需要输入一次密钥口令
Plink 简单而又迅速的执行 SSH 主机上的程序
常见问题
除了上面的这些,还夹杂了一些 PuTTY 使用上的技巧、服务器配置的一些安全建议。说起来这是一些有关 PuTTY 的使用教程,其实也就是 SSH 的参考教程,绝大多数的内容在其他系统或软件上也都是一样的。不同的是参数、配置、命令行之类的,只要会了一个,其他也就触类旁通了。
一些基本知识
如果你已经知道 SSH、Telnet、Rlogin 这是什么,就跳过这一部分,看下面的吧。
(以后补充,暂时空下)
简介
PuTTY 的:nd.org.uk/~sgtatham/putty/,截止到 2006年11月,发布的最高稳定版本是 0.58 2007年6月,发布的最高稳定版本是 0.6。

PuTTY 是一个跨平台的远程登录工具,包含了一组程序,包括:
PuTTY (Telnet 和 SSH 客户端)
PSCP (SCP 客户端, 命令行下通过 SSH 拷贝文件,类似于 Unix/Linux 下的 scp 命令)
PSFTP (SFTP 的命令行客户端,类似于 FTP 的文件传输,只不过使用的是 SSH 的 22 端口,而非 FTP 的 21 端口,类似于 Unix/Linux 下的 sftp 命令)
PuTTYtel (仅仅是一个 Telnet 客户端)
Plink (命令行工具,执行远程服务器上的命令)
Pageant (PuTTY、PSCP、Plink 的 SSH 认证代理,用这个可以不用每次都输入口令了)
PuTTYgen (用来生成 RSA 和 DSA 密钥的工具).
虽然包含了这么多,但平时经常见到只是用 PuTTY 登录服务器,完全没有发挥出 PuTTY 的强大功能。
PuTTY 作为一个组件也存在于很多的软件中,比如 FileZilla、WinSCP
在后面的文字中,如非特别说明,默认的登录的协议是 SSH。毕竟用 PuTTY 主要就是登录 SSH 主机,用 Telnet、RLogin 没法体现出 PuTTY 的强大功能。
安装
下载页面在这里:nd.org.uk/~sgtatham/putty/download.html
PuTTY 需要安装么?需要么?需要么?真的需要么?不需要。PuTTY 是一个准绿软件,说它绿是因为直接就能使用,完全没有任何的安装程序。准绿是指 PuTTY 的所有配置都保存到了注册表,如果不记得备份注册表中的相关内容,下次重装机器所有配置就没了,
而且配置也不方便用闪存盘随身携带。但是 PuTTY 的配置删除还是蛮方便的,运行时指定个参数 -cleanup 就可以清除 PuTTY 的所有配置信息。
第一印象,开始登录一台远程主机
运行 PuTTY 就可以看到下面这个界面
在这里输入服务器的 IP 或主机名,选择好登录协议,还有协议的端口,如果希望把这次的输入保存起来,以后就不需要再重新输入了,就在第4步输入好会话保存的名称,比如:mail-server,或者干脆就是主机的地址,点击保存就可以了。
最后点下面的 Open 按钮,输入正确的用户名和口令,就可以登录服务器了。
首次登录一台主机时
第一次登录时,会看到这个对话框
这是要告诉你登录的主机密钥指纹,点 Yes 就保存起来,以后就不会再弹出这个窗口,然后就正常登录。点 No 不保存,下次还是要提示你,然后也可以正常登录。如果一台主机我们只是临时登录一下,当然就是点 No 了。Cancel 就是取消,也就是取消了这次登录。
如果你曾经登录过这台主机,但是又弹出来这个对话框,可能有以下几种情形:
主机重新安装了操作系统
这台主机可能有多个IP,这次用的是另外一个 IP
有其他不怀好意的主机来冒充,诱骗我们登录,窃取隐秘信息
前两个情形很常见,一般点 Yes 就行了。后面这个嘛……唔……唔……,点 No/Cancel,再去询问相关的主机管理人员。
又看到了中文乱码
成功登录主机后,输入命令,这……这……显示,又是乱码。唉,中文乱码是一个老生常谈的问题,提起来就头大。原因嘛,不外乎字符集、终端编码之类的,还是可以解决的。
PuTTY 的默认字体和字符集并不适合中文显示, 在窗口标题上点击右键,选择
在打开的配置窗口左边选择 Appearance,在右边点 Font settings 里面的 Change 按钮,选择好中文字体,比如:宋体、新宋体之类的
字体选择好了,还要确定字符集。
选择配置窗口左边的 Translation,在右边的 Received data assumed to be in which character set 下拉列表中选择最后一个“Use font encoding”,最后点下面的 Apply 按钮就生效了。
重新执行命令 ls -l,就可以正常看到中文了
怎么还是乱码?
如果还是乱码的话,就执行以下命令,看看系统的字符集
echo $LANG $LANGUAGE
哦,原来系统的字符集是 UTF-8 呀。重新返回上面选择字符集的那一步, 选择配置窗口左边的 Translation,在右边的 Received data assumed to be in which character set 下拉列表中选择“UTF-8”
这下99%的情形下,汉字是不会有乱码了。最后,总之一下 PuTTY 中乱码的解决办法:
先看看系统的字符集,如果是 UTF-8 的,那就简单了,选择好中文字体,然后编码选择 UTF-8 就行了。
如果编码是 GB2312、GBK、GB18030,当然也包括 BIG5这些,在 PuTTY 的编码选择中看不到这些编码,那就选择最后一个“Use font encoding”,绝大部分情况下这样就没啥问题了,反正我是没碰到有什么例外的情况。
现在的 Linux 如果默认语言选择为中文,默认的编码就是 UTF-8 了。以前安装 Redhat AS 3 时,语言选择为中文,默认的编码是 zh_CN.gb2312, zh_CN.gb18030,好像从 AS 3 update 6 开始,包括现在的 AS4、AS5,中文的默认编码都成了 zh_CN.utf8。至于 Debian、Ubuntu 等等这些上面,好像一直都是 UTF-8。
至于是使用 UTF-8呢,还是用 GB2312、GBK 或者 GB18030呢?我个人还是倾向于 UTF-8。毕竟我们使用的大多数软件都是国外的,处理中文编码多多少少有些问题,PuTTY 自然也不例外。
下面的这个图上,我把终端编码修改为 zh_CN.utf8,然后也按照前面的所说的方法把 PuTTY 的字符集修改为 UTF-8。然后在终端中输入汉字“柴锋”,按左方向键,可以看到汉字显示很正常。
我重新把终端的编码修改为 zh_CN.gb2312,同样的,把 PuTTY 的字符集修改为最后一个“Use font encoding”。还是在终端上输入汉字“柴锋”,按下左方向键以后,会看到汉字乱码了。
至于用哪个编码,主要还是看领导的决定了,我们的领导就喜欢 GBK,连 GB18030 都不行。以前在用 Debian 的时候,好像默认都不支持 GBK 编码。这几年公司的开发在汉字编码问题上出过几次麻烦,还不就是在 ISO8859-1, GB2312/GBK/GB18030和UTF-8上折腾来折腾去。
给大家看一张 emacs 的截图,看看上面的这么多语言的文字共同显示,这个会是用 GB2312/GBK/GB18030 的编码么?
用 UTF-8 也不是为了要在一个屏幕上显示好几种不认识的文字,也不一定非要是跟国际接轨弄个外包给老外开发程序做个其他语言的界面让老外用,起码不要在那么多编码里折腾了,顶多两个 ISO8859-1 和 UTF-8。发发牢骚,下面继续……