putty: telent和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。


安装

putty是一个准绿色软件,说它绿色是因为直接能使用,完全没有任何的安装程序。准绿色是指putty的所有配置都保存到了注册表,如果不记得备份注册表中的相关内容,下次重装机所有配置就没了,而且配置也不方便用闪存盘随身携带。但是putty的配置删除还是挺方便的,运行时指定个参数-cleanup就可以清除putty的所有配置信息。


实时保存会话

这次更改配置参数了,关闭窗口后,下次使用还是要重新选择的,麻烦。
还是回到上面修改配置的哪个地方,选择左边的 Session,在右边选择要覆盖的会话名称,或者重新输入一个新的名称,点击 Save 按钮保存。


关于注销登陆的一些事情

成功登录主机后,也能正常看到中文了。这样,我们就可以完成大部分的工作。最后要关闭窗口了,该怎么办呢?我见过很多人,包括我们公司负责专职维护的同事,都是直接点击窗口上的关闭按钮,完全没有理会弹出警告窗口,直接点击了 Yes。

这样做是不对的,首先这不是正确的注销方式,应该输入命令 exit 来正常注销; 其次直接关闭窗口后,你的登录其实还在服务器上,如果一连多次的这样强制关闭窗口,用命令 w 或者 who 命令查看时,可以看到很多的用户还在系统上登录,占用了系统的资源。最重要的是,你的这次登录可能只是为了启动一下 WebLogic 或者其他什么应用服务器,直接关闭窗口后,可能会导致你的业务在随后的几分钟内也被终止,这应该不是你所希望看到的吧。

如果上述的理由是每次要输入 exit 然后回车,比较麻烦。你可以用快捷键 Ctrl+d 来注销登录,一般情况下,快捷键一按窗口都直接关闭了,还省了两次鼠标点击。
在前面说道保存会话时,大家或许也注意到,下面有个 Close window on exit 有三个选项:

  • Always (不管怎样,窗口总是要关闭的)

  • Never (无论是否有程序还在运行,都不要关闭窗口)

  • Only on clear exit (这个是默认选中的,只有在本次登录中运行的程序都正常终止或者在后台运行,窗口才关闭)

有的程序在执行时,虽然在命令最后面加上 “&”就能放到后台运行。但是正常注销登录后,窗口没有被自动关闭,还能看到程序的输出,这时强制关闭窗口还是可以的。为了避免这种情形,可以使用 nohup 命令。
用法嘛就是: nohup 命令 命令参数,这样就可以了。

窗口保存的输出有点少,前面的都看不到了

执行了一个命令,输出了好多东西,但是默认的配置下,PuTTY只保存了最后200行的内容,满足不了我们的需求。
还是在标题栏上点右键选择 Change settings...,在配置窗口的左边选择 Window,修改右边的 Lines of scrollback,改大点,比如 20000、80000的

在上面的 Set the size of the window 里设置的是窗口显示的行数和列数,默认是 24 行、80 列,根据自己的需要来修改吧。
When window is resized 这个选项配置的是,当窗口大小发生改变时该采取什么动作。

  • Change the number of rows and columns(这个是默认的,改变窗口大小时,自动修改行数和列数)

  • Change the size of the font(这个是根据窗口的大小来修改字体的大小,窗口最大化的时候,字都是很大的)

  • Change font size only when maximised(只有在窗口最大化的时候才改变字体大小)

  • Forbid resizing completely(完全禁止改变窗口大小,一了百了)

在现代的 Unix/Linux 主机上,默认选项已经不存在任何问题了。如果是 Solaris 8 这样的老式 Unix 上最好用第2或第4个选项。
第3个选项嘛,要求你的屏幕不是宽屏的,选中这个选项以后,大家可以先把窗口往窄的缩一下,然后最大化窗口,哈哈,满足一下不是宽屏的虚荣心。
顺便说一下,在 PuTTY 中的前后翻页,与 Linux 终端一样,用 Shift+PageUp/PageDown 来上下翻页,而 Ctrl+PageUp/PageDown 则是一行一行的。


设置代理服务器

这个经常用到,设置方法大同小异,注意选择好 Proxy type(代理服务器的类型)就可以了。
代理服务器的地址填写到 Proxy hostname 这里,Port 就是代理服务的端口(HTTP代理常用端口有 3128、8080,Socks5代理常用端口有 1080)
Exclude Hosts/IPs 这里是填写排除的主机地址和IP,有些地址不需要代理,就在这里填写。
有些代理需要认证,用户名填写到 Username,密码则填写到下面的 Password。


数据自动压缩传输,变相的提高传输速率

还是前面的那个界面,Protocol options 里面有个 Enable compression,这个选项的意思就是传输时压缩数据,在连接速度不变的情况下,变相的提高了传输速率。一般的 SSH 服务器都会允许这个选项的,所以还是选中好了。

无需口令登录

在 Connection-〉SSH-〉Auth 这里面有两个需要了解的,以后在讲到 PuTTYGEN 和 Pagent 时会详细介绍的。
一个是 Allow agent forwarding,作用是允许私钥代理的转发。
另外一个是最下面的 Private key file for authentication,选择私钥认证文件。
这 两个可以让你用 SSH 登录不用输入主机口令,但是私钥的口令还是需要输入的,如果使用了私钥代理 Pagent ,私钥口令也可以省略。再配合前面提到的自动指定用户名登录,可以实现自动登录主机。登录到主机上以后,用 SSH 登录另外一个同样配置了相同的私钥认证的主机,也可以不用再次输入口令。
这些可以大大减轻了我们的重复工作,不用单调枯燥的输入用户名和口令,但是这样使用有个后遗症就是如果主机密码没有在另外一个地方记录下来的话,这个密码很快会忘记的,好处嘛,密码可以设置的很长很变态 XD。


用 PuTTYgen 来生成密钥,以后可以不用密码登录服务器了

PuTTYgen 是密钥生成器,用来生成一对公钥和私钥供 PuTTY、PSCP、Plink、Pagent 来使用。
直接运行 PuTTYgen 可以看到如下的界面。

点击 Generate 按钮就开始生成一个公钥和私钥对,生成完毕后,点下面的 Save private key 就可以把私钥保存起来,扩展名是 .ppk 的文件。
Load 按钮可以把先前保存的私钥重新打开,然后做些修改,比如修改注释和私钥口令,或者把 PuTTY 格式的私钥转换为 OpenSSH 格式的。

开始用 PuTTYgen 创建密钥

单击 Generate 按钮,然后你会看到进度条上面有个提示“Please generate some radomness by moving the mouse over the blank area.”,意思就是让你用鼠标在空白区域随机移动。随着鼠标在空白区域的移动,进度条会一直走下去。停止移动鼠标,进度条也就停止了。那我们就移动鼠 标,直到进度条走满为止。

putty详细使用说明_第1张图片


等进度条走完之后,会出现下面的界面

putty详细使用说明_第2张图片

最上面那个大大的只读文本框里面是公钥,用来保存到 OpenSSH 的 authorized_keys 文件中,这个文件中的每一行都是一个公钥。默认情况下,这个文件位于 Linux 用户主目录的 .ssh/ 子目录中,如果文件和目录都不存在,可以直接创建。

但 是创建的文件、目录和用户主目录($HOME, $HOME/.ssh, $HOME/.ssh/authorized_keys)的权限有个限制就是对除了本帐户的其他所有帐户都要求是只读的,否则的话,即使公钥、私钥都匹配 无误,也是无法登入系统的。这是 SSH 服务器的一个安全要求,因为如果别的帐户可以修改你的 authorized_keys 的话,恶意的增加一个公钥,那对方不用你的帐户口令也能以你的帐户登入系统了。对于一些特殊要求,你可以在 SSH 服务器的配置文件 sshd_config 中用指令

StrictModes no

来取消这个限制。在 sshd_config 的帮助手册中可以看到

     StrictModes
             Specifies whether sshd should check file modes and ownership of
             the user’s files and home directory before accepting login.  This
             is normally desirable because novices sometimes accidentally
             leave their directory or files world-writable.  The default is
             “yes”.

小技巧:每次修改 authorized_keys 这个文件时,你可以用如下的命令来修改,确保所有的文件属性和权限无误

mkdir -p $HOME/.ssh && touch $HOME/.ssh/authorized_keys \
&& chmod go-w $HOME $HOME/.ssh $HOME/.ssh/authorized_keys && vim $HOME/.ssh/authorized_keys

还有一个要强调的是那个 Key comment,这是密钥的注释,一定要修改。因为这个密钥是给自己用的,所以最起码要输入自己的名字,用默认的注释很容易和其他人的密钥混淆的。如果担 心自己的密码忘记了,可以在后面加上密码提示,当然了,不要让别人用注释猜出你的密钥口令。比如,我可以把注释修改为

ChaiFeng [20061120] w.z.

后面的 w.z. 就是我的密码提示,能猜出来么?呵呵

输入注释,上面的公钥也会随之发生变化。
现在最重要的是,输入自己的密钥口令。就是 Key passphrase 和 Confirm passphrase 这个两个输入框。
如果不输入口令,直接保存私钥会看到这个提示。为了安全起见还是输入口令吧,要不任何人得到这个私钥都可以不用口令登入系统了


最后单击 Save private key 来保存私钥吧,保存到自己认为安全的地方,比如存放到私人的 USB 闪存盘上。需要登录时,插上 USB 闪存盘。登录完毕后就可以把 USB 闪存盘取下来,哈哈,这样子就比较安全了。
大 家也注意到了,还有个 Save public key 按钮,这个是保存 SSH2 格式的公钥,有些 SSH 服务器要求用这种格式的公钥文件。一般情况下,我们是不需要的,所以这里也就保存了。以后还想的话,就用 PuTTYgen 把私钥 Load 出来,然后再保存也可以。


用密钥登录服务器的流程

上面杂七杂八的说了一堆创建密钥时的事情,大家会不会已经有些乱了呢?我把这个过程再罗列一遍:

  1. 如果没有公钥/密钥对,就用 PuTTYgen 创建一个,已经有了就可以忽略这一步。一个公钥/密钥对可以用在不同的服务器上,所以也不需要重复创建,关键要有足够强健的密码和安全的存放。

  2. 象先前一样输入帐户名和口令登录到主机上。

  3. 输入如下命令,来编辑 authorized_keys 文件mkdir -p $HOME/.ssh && touch $HOME/.ssh/authorized_keys \&& chmod go-w $HOME $HOME/.ssh $HOME/.ssh/authorized_keys && vim $HOME/.ssh/authorized_keys

  4. 把这个文本框里的公钥粘贴到 vim 中去,需要说明几点:这个文本框里的内容是一行的,粘贴到 vim 中时,别忘了按字母 o 这个键,否则的话,粘贴进去后,开头的 ssh-rsa 会变成 sh-rsa,为什么呢?哈哈,想想吧。为什么不按字母键 i 呢?这个在 vim 中不就是插入么?原因是我很懒,按字母 o,我可以节省一次按回车键。虽然按大写 O 也行,那我不是还得再按一下 Shift 键么?别 忘了,在 PuTTY 中默认的粘贴可是按鼠标右键哦,然后按一下 ESC 键,然后输入 :wq 保存退出,等等,大家先别着急的输入 :wq,既然输入冒号还得按下 Shift 键,那我们就干脆直接两下大写的字母 Z,也就是 ZZ。怎么样?vim 也一样保存退出了吧。这次又节省了一次按键和两次寻找字母的移动,把懒得优良传统再一次在实践中发扬光大。

  5. 如果已经有了私钥,第4步里的那个公钥忘记保存了,就用 PuTTYgen 把这个私钥 Load 上去,然后重新复制一下公钥吧。

  6. 在 PuTTY 的配置 Connection->SSH->Auth 这里面,指定上私钥,然后记得保存 Session,以后就不需要重复这一步了。

  7. 最好也指定上自动登录的用户名,还记得这里吗?

  8. 开始登录吧,这次你会看到一个不同于以往的登录提示现 在输入的口令可不是主机上这个账户的口令了,而是先前创建的这个密钥的口令。以后不管这个账户的口令是什么,即使再复杂,也和我们没关系了。只要这个账户 的 $HOME/.ssh/authorized_keys 文件中,有我们的公钥,我们就随时用匹配的私钥都可以登录了。配合后面提到的 Pagent,我们连输入密钥口令这一步也可以忽略过去。

  9. 登录成功了,别忘了按 Ctrl+d 注销哦。

以后这些步骤就不需要再重复了,只需要打开 PuTTY 后,双击一下保存的会话名称,输入密钥口令。



Pagent 加载密钥,每次开机后只需要输入一次密钥口令

终于轮到 Pagent 出场了,双击一下 Pagent.exe,嗯,没反应?再双击一下,咦?出来个提示,说已经运行了。

看看右下角吧,在这里呢

双击一下 Pagent 的图标,出来这样一个界面。很简洁的,Add Key 是添加私钥,Remove Key 是把选中的私钥从 Pagent 中卸载了。

好,现在单击 Add Key 按钮添加私钥,我把这个演示用的私钥保存到 C:\ 了

然后会出现输入密钥口令的对话框,输入正确的密钥后,单击 OK

这时,在 Pagent 的窗口中就能看到我们的私钥已经装载上去了。

现在打开 PuTTY,选择先前保存的 Session,双击一下。只要自动登录用户名设置上,主机上改帐户的 authorized_keys 文件里也有匹配的公钥。哈哈,发现没有?完全不需要口令,我们已经登录到系统了。
在 Pagent 的图标上点右键,也可以快捷的选择已经保存的会话。

建 议大家把 Pagent 放到启动组里面,这样每次一开机,Pagent 自动运行,然后我们只需要把私钥装载一下,然后我们就可以一直享受自动登录系统的乐趣了。再配合上以后会讲到的 Plink、PSCP 这些,我们可以实现很多工作的自动化进行。完全不需要每次输入用户名、口令、输入又长又多的命令,再做一些烦躁的文件备份,最后还得记得注销系统,难道不 觉得麻烦么?这一切烦恼很快就会远离我们了,继续往下看吧。





备份 PuTTY 的设置

用 PuTTY 最不爽的就是,它把所有的设置都保存到注册表了,本来这不是什么问题。但是难免会重装一下机器,用下面的命令可以备份 PuTTY 的所有设置

regedit /e PuTTY.config.reg "HKEY_CURRENT_USER\Software\SimonTatham\PuTTY"


删除 PuTTY 的设置

如果只是在其他机器上临时用了一个 PuTTY,用完以后想删除 PuTTY 的配置,就在控制台里输入如下的命令:

putty.exe -cleanup