putty 知多少
最常用的windows下的ssh客户端,也许就是putty了。至少我不知道还有其他的。但是对于putty,似乎很多人只知道下载回来之后,双 击,输入ip,然后登陆使用。其实putty有很多地方设定一下,就可以让你的生活变得轻松很多。这里介绍一下常用的log系统,如何免密码登陆机器,如 果在windows上直接通过putty显示linux中的xwindow中的图形界面程序。以及如何使用加密通道给自己做代理,也包含了如何防止SSL 中的man in the middle ***。还有基本的如何在cmd的指令模式中使用ssh,scp等等功能
下载:
putty的官网大家随便google百度bing都能找到:http://www.chiark.greenend.org.uk/~sgtatham/putty/
建议直接下载widnows的安装包(包括所有工具)至于为何除了putty.exe本身我们还需要其他的工具呢?这个看到后面就会揭晓
完整包的下载在这里: http://the.earth.li/~sgtatham/putty/latest/x86/putty-0.60-installer.exe
建 议直接安装在c:/putty这个目录下。因为这样等下添加目录path的时候会比较省事。如果您安装在其他地方,后面请将文章中所有出现c: /putty/的地方替换成你自己的安装途径[内建是Program Files或者Program Files (x86)]这个文件夹。
完整的安装包会给我们提供以下几个程序
pageant: 钥匙管理程序
plink: putty的指令模式(cmd下用)
pscp: 等于是linux下的scp (安全的传送文件的协议)
psftp: sftp客户端
putty: 这个就是大家用的最多的主程序了
puttygen: ssh 的钥匙成产/转换程序。
putty
从主程序putty开始吧。putty是我用过的最好的windows上的ssh客户端了。secureCRT我们公司有买,所以我也用过,总觉得没有putty来的顺手。另外secureCRT价格不菲。(我严重不提倡做电脑的人用盗版)
主程序开启很容易,双击就好,废话,这个谁都知道。。。
这里讲解一putty的设定为主。
第一段是logging,也就是记录。你可以把你每次开启putty的东西全部都记录到log里面去。这样做有两个好处,第一是你自己可以看。第二是可以给别人看。
putty的内定设定是不记录log的。在Session logging这里,你可以选择
None: 不记录
Printable output: 适合打印的log记录
All Session output:所以putty的窗口的显示
SSH packets: ssh 封包级别的记录
SSH packets and raw data: ssh的封包级记录以及所有的raw数据(原始数据
通常来说,如果准备记录,那么 All session output就可以了
下一个选择是log file name: 你的log的名称,这个看个人爱好。我认为内建的putty.log就可以了。如果你想根据时间来记录,putty也可以提供好像linux中的log名称记录方式。
&Y=年
&M=月
&D=日
&T=时间
&H=连接的主机名称 (linux那个机器)
例如我设定log为: putty-&H-&Y-&M-&D.log 然后我在2010年4月3日早上6点连接到机器maclinux,那么我的log名称将会是: putty-maclinux-2010-04-03-18.log
之后的选项是让putty设定如果已经有了这个log的文件名,那么putty应该如何处理。
Always overwrite it
Always append to the end of it
Ask the user every time
这里提供3种方式,第一个是覆盖之前的log,重新写,第二个是接着之前的log继续写下去。第三个是每次询问使用者应该如何处理。
Flush log file frequently: putty内建是开启这个选项的。这个选项开启putty会第一时间把log写入硬盘。如果你做的东西有很多的显示,这个可能会影响到putty的效率 (要不停的写硬盘)如果不选择这个选项,那么putty将会间隔一段时间才写进log。
log中最后的设定是 Options specific to SSH packet logging
一同提供两个选项: Ommit know password field: 这里选择后,putty不会记录跟密码相关的东西,另外一个是Omit session data: 这个选项会将会不记录 session 数据。 包括终端中的session data跟 forward (TCP, X11, 验证) 关于forward的东西后面会讲到。
Terminal
Terminal 主设定,基本不需要改动
键盘设定 (keyboard)没特殊要求,也是不用动的就好。Bell 也是一样(除非你爱好听声音)
这里说一下Features里面的设定。Features里面有一个设定需要更改(我只知道需要这一个)
就是 Disable application keypad mode
如果这个不选择,那么你在vim这类程序中,小键盘(数字键)就没法正常使用。只要选择了Disable application keypad mode那么小键盘就可以正常的在vim中使用了。
window
windows中我通常会加大Lines of scrollback 的值。这样的putty会找窗口的记录的时候,会保持很多行的记录。方便查找之前的资料。我个人来说,设定在200000行记录,基本一个星期内的东西, 只要我putty窗口不关闭,都能找回来看到(我没开log的)
Appearance: 这里里面可能唯一需要改动的就是字体跟大小了。我是用 Courier New 10号字-12号之间(根据屏幕大小决定)
Translation: 这里注意一个Character set的设定。如果你想中文显示无误,最好设定你的显示字符。我是用UTF-8 (我linux跟windows都是UTF-8的)这样不管输入显示中文就都没有问题了。
下面是个测试:我首先用UTF-8的编码,然后去显示一个文件。这里看到中文没有问题,然后我更改putty设定用VSCII编码,去显示同一个文件,中文就是乱码了。
Colours: 这里设定终端的颜色。如果选择的 Use system colours那么就是白底黑字的。把这个选项不要打钩,你就可以设定任何你喜欢的颜色(我通常用颜色区分不同类型的窗口)颜变设定很简单,RGB值,可 以直接手动输入,也可以点击Modify那个按键从色谱中选择
Default Foregound: 前景颜色
Default Bold Foreground: Bold时的前景颜色
Default Background: 背景颜色
Default Bold Background: Bold时的背景颜色
Cursor Text:光标文字颜色
Cursor Colour: 光标颜色
至于后面的,就是详细的,你可以把某个颜色显示成另外的颜色。假设我把 ANSI Red (187,0,0)给成其他颜色(0,255,0)那么红色就成了绿色了。基本来说,最常用的就是Default Foreground颜色了。很少看到某个BT的人去单独每个颜色都换换的。
下面是随便的几个颜色
connection
这里需要设定一下。有人问,为什么我putty连接着过一段时间没用就自己断了呢?因为linux系统可以判断你一段时间没有任何动作就把你T出去。就好像群里太久不说话,群主就会T你一样。
这里有个选项是: Seconds between keepalives (0 to turn off) 这里设定发送 keepalive的封包时间。0就代表关闭(这个就是一段时间不用会断线的原因)这里可以随便设定一个值。我自己是放5,就是说每5秒发送一个 keepalive 封包告诉主机,我还活着。
SSH
ssh 下面有几个选项的,这个也应该是大家最关注的东西。
在ssh主选项上,没什么必须要动的。不过我自己是设定:只用 ssh v2 协议并且优先的演算用 AES,通常来说这里保持不动就可以。
Auth 这里有几个地方关注一下:
Attempt authentication using pageant : 这个就是说允许我们用 Pagenant 来做免密码的 ssh key 登陆 (后面会说)
Attempt “Keyboard-interactive” auth: 允许键盘做互动登陆
Allow agent forwarding: 这个很有用。就是说可以把你的ssh 的 key 直接 forward 到你连接的主机去。(就是linux 中 ssh -A 的作用)
Allow attempted changes of username in SSH-2: 大家都是知道,正常情况如果你ssh连接一个机器,可以有几次输入密码的机会,但是只有一次输入用户名的机会。在ssh-2中,你设定有多次输入用户名的 机会。防止。。。用户名输错了,只好关闭putty重新开一个窗口。
这里解释一下 (3) 的 Agent forwarding: 正常情况,如果你用ssh key登陆,是不问你密码的。直接就可以进入主机了。例如我有2台主机A跟B,两台主机我都放了我的ssh key,可以免密码登陆。从putty登陆到A,这个时候是不问我密码的,直接就登陆了,但是在A里面,如果我直接从linux中用ssh登陆B,则需要 密码。开启了Agent forwarding之后的作用就是,你从putty登陆A不需要密码,从A登陆B也不需要密码。你的ssh key被传给了A
X11
这个也是我的最爱。开启Enable X11 forwarding
有些时候,需要偶尔跑个linux的窗口程序,或者有时候需要用到。那么在windows上如何显示linux中的window呢?用linux的 都知道,linux的X是server-client的模式。也就是说,你用任何一个linux连接到其他linux中,都可以直接在本地显示远端的 linux窗口界面。ssh本身也提供这样的功能,在linux中,你给ssh -X的选项,就可以直接做X11的forward了。
putty中也有这个功能,当然了,你的window要有个X才可以,好在有免费的可以用。
windows下面有个叫做xming的程序(2.2MB)可以让你用,下面的地址可以下载到。直接安装就好。
http://sourceforge.net/projects/xming/
安装后开启xming,你是看不到什么东西的,只有在你windows的右下多个X的小图标,但是你已经有了一个windows上的X了。
ssh到你的服务器,直接输入你想跑的程序,显示就会出现在你的widnows上了
先来看看linux中最出名的xeye吧
gnome的about,没错,我是在windows上显示的
当然了,你要是够BT,整个gnome桌面用ssh跑去windows都可以(我曾经做过)不过如果跑很多图像的东西,最好是局域网,走internet的话,速度不怎么样。
关于putty,最后还有一个不能不说的东西,就是ssh通道。相信知道这个并且用这个的人一定很多了。ssh通道有几个最大的用处。
防止网页MIM(man in the middle)***
MIM也算是臭名昭著了,也许有些人不是很了解,但是介绍MIM已经超出putty的内容了。这里简单说一下,MIM就是一个机器在你跟服务器之 间,对你来说,它假装是服务器,对服务器它又假装是你。这样就可以在中间窃取你的信息(例如密码)无线网尤其危险(很多人上无线不会去真的看是否有2个同 样的ip在arp里面吧)有线网络虽然没有无线那么容易做(在你家隔壁放个无线路由就行)但是也可以做到。甚至可以直接从dhcp开始下手。但是有一点所 有的MIM都没有办法的,那就是ssh。ssh有finger pirnt的key。这个至少目前我不知道有什么方法可以假冒。如果别人在ssh中就做MIN的话,你连接一眼就能看到,你主机的finger print变了。如果是使用ssh key连接,密码都不会送出去的。所以安全很多。我本本上网的时候,只要是看需要保密的网页(银行,股票等等)100%一定是走ssh tunnel的。不然。。。搞不好那天就看到银行空了
让你可以游览公司内网网页(如果公司对外不开网页只开ssh)
我们公司内部有很多网页,外面无法看到。内网的东西,只能通过***挂公司网络才可以。我是懒人,不是那么系统***,再说公司有几个进入点(刚好 我喜欢的那个)还是IPsec的***,众所周知,cisco为了让大家多花钱,根本不支持也不打算支持64位windows的IPsec。(ssl ***版权单算的)linux下面还好,随便都能上去。windows就是个头痛的问题了。好在ssh无所不在,我可以把网页都走ssh通道从公司内部去 看。
增加游览速度
这个看具体网络设定。通常大公司的网络中有很多QoS的设定,那么大家都是知道,普遍的QoS中,http跟ftp都是尾巴,ssh优先级别高多 了。所以如果外面还有个不受QoS限制的机器,那么我们可以把网页通过ssh通道跑去那台不受QoS的机器,再通过那台机器来上网。这个也是我们公司的实 例了,公司因为统一的管理要求,有一些管理的页面在美国加州。正常情况,在网页输入网址,你就http通过公司的***一路到了加州那边,然后再显示给 你。可是http在QoS里面是尾巴的东西,游览速度那个慢呀。好在我有全球ssh的账号。找个公司加州的机器ssh过去,然后网页走ssh的通 道,ssh在我们部门(我们是系统管理)的QoS级别是非常高的(保证系统管理的流畅性)所以网页速度提升5-10倍!
废话了这么多,开始说设定。最简单的设定,开一个dynamic port做tunnel。
在Tunnels选项里面,Source port输入一个随便的port(给1024以上比较好)我这里输入5555
然后点Add,就这么简单。正常登陆你的ssh吧,你已经给自己开了一个tunnel了。
如何使用呢?这里firefox为例(IE或者其他的一样)就是设定代理那里。选择socks代理就可以
代理ip是你的本机(127.0.0.1)代理端口就是你上面输入的地方,然后确定就可以。这样你所有的网页,会从ssh走到你登陆的那个主机去,然后通过那个主机再做网页请求再发送回来。
这里还有一个地方(IE我不知道怎么改,从来不用那个)就是DNS,如果你为了方式MIM***,或者要看公司内部网页(公司有自己的DNS呀)那么DNS怎么办呢?firefox可以有个设定,然你所有的DNS请求也从SOCKS去做。
在firefox的地址栏输入about:config
然后更改network.proxy.socks.remote_dns为true就好了。这样dns也就都从你的ssh到目标机器去做了。
putty 图形界面部分,大致就这么多吧。以后有什么想到的,再补上去。 对了差点忘记,所有的东西设定好之后,记得再putty的左边中点一下Session,然后点右边的Default Settings然后点Save,这样就保存了。不然你设定的所有东西,关闭后下次开启就没有了
更加方便高效的使用putty套件
首先来设定一下windows的环境。我的电脑,鼠标右键单击,选择属性,然后设定环境变量,在path中添加c:/putty/
这样我们就可以在cmd中直接使用putty了。
先说putty吧,putty可以直接从cmd里面开启的,也就是说你可以直接给 putty user@ip 就打开putty然后连接过去了。如果你用ssh,密码什么都不用,直接进入。多方便。
想给密码也可以,如果不介意密码用明文打出来 puty -pw 密码 user@ip 就可以
例如我有个用户 test 密码是 12345在192.168.100.2这台机器上
putty -pw 12345 [email protected]
这样直接就开启了putty连接到192.168.100.2以用户test登陆密码是12345
puttygen 以及 pageant: 使用ssh key 无密码登陆系统
linux下面的ssh-keygen大家应该都熟悉。puttygen就是做这个用的
使用很简单,打开程序,点选 Generate 就可以了。
完成后你会看到这样的一个屏幕。
key passphrase: 这里输入你私钥匙的密码,后面的confrim passphrase再次输入密码缺人
如果你不输入密码也可以,这样加载钥匙的时候不会问你密码,好处,加载的时候省掉输入密码,坏处。。。任何人得到你的私钥匙都可以无密码进入你所有的有公钥匙的机器
选择save public key把公共钥匙保存在一个文件
选择save private key把私钥匙保存在一个文件中
开启私钥匙很简单,双击那个文件就可以,如果你输入了密码,这里会问你一次密码。如果没有输入,就。。。什么也不到(windowws右下窗口会多个蓝色小标志而已)
不同的机器你可以存不同的钥匙,pageant会帮你管理这些钥匙。
puttygen还有一个功能,就是把你的key转化成openssh所有的钥匙格式。因为putty跟openssh(你linux中的ssh) 所用的格式不同。putty直接产生的私钥匙在linux中是无法用的。所以puttygen提供一个转换程序,这里只要选择Export OpenSSH key就可以了。这样就会帮你生成一个openssh可以使用的钥匙。
顺便说一下对linux不了解的人。你公钥匙是要复制到你linux自己账号下面的.ssh/authorized_keys 这个文件中。
例如root的就在 /root/.ssh/authorized_keys
如果是用户 test的,就在 /home/test/.ssh/authorized_keys
权限要600才可以
pageant基本没什么特殊的用法。打开后看到你在pagent里面的钥匙。可以增加或者删除。增加钥匙也可以直接在新的钥匙文件双击。
添加了钥匙之后,进入有公钥匙的机器就不需要密码了
上面的图是我直接从windows的cmd里面用plink以root账号去192.168.100.1里面开一个xclock到我windows上的结果
中间就没有密码询问了。
同理,上面开启ssh通道
Plink -> putty的纯指令×××面模式
是否很多人想念linux中的ssh可以直接给指令的?通常最长见到的就是有时候为了方便,一个for loop然后直接用ssh然后给一堆指令过去
这个就是plink的存在了。基本来说跟putty指令用法一样,但是不给你那个多余的窗口界面,最大的功能有2个
一个是远端直接跑脚本或者指令,另外一个就是我们前面提到的ssh通道,用putty开多麻烦,pink直接可以搞定
还是用上面的test那个用户
plink -pw 12345 [email protected] “cat /etc/issue”
直接返回结果到你的cmd,跟linux中的ssh是一样的
再来个例子,直接在widnows开启一个linux下的窗口程序(这里用xclock为例)
plink -X -pw 12345 [email protected] “xclock”
这样就直接在windows显示你主机下面的xclock程序了。那个-X就是说我们要做ssh fordward的意思
另外一个例子,这个是我常用的
plink -D 5555 -N -pw 12345 [email protected]
这样就开启了一个ssh的通道在5555这个端口,-D 5555是说我们在5555开dynamic通道,至于这个-N,这个是告诉系统说,我们并不需要login的shell,只要通道就好
做成一个bat文件,双击就直接开启通道了,你还可以有一堆的bat,确定开通道去不同的机器等等。这个自己玩玩都会找到个子最适合自己的方法
pscp & psftp
两个个没啥好多说的,一个是scp一个是sftp的程序。都是指令的。用法跟plink一样的。参数基本跟linux的差不多