设置 PuTTY 的默认设置.docx
《设置 PuTTY 的默认设置.docx》由会员分享,可在线阅读,更多相关《设置 PuTTY 的默认设置.docx(34页珍藏版)》请在冰豆网上搜索。
设置PuTTY的默认设置
设置PuTTY的默认设置
每次登录主机,无一例外的修改字体,修改字符集,修改窗口的大小,指定私钥文件,允许X11转发,……
几台主机还好说,几十个上百个主机这样三天两头的设置也会让唐僧烦了的。
选中一个先前配置好的会话,点Load按钮。
然后修改SavedSessions会话名称和HostName这里的主机地址,点Save
如果在SavedSessions这里和上面的HostName清空,点Save按钮,就可以把设置保存为默认设置。
备份PuTTY的设置
用PuTTY最不爽的就是,它把所有的设置都保存到注册表了,本来这不是什么问题。
但是难免会重装一下机器,用下面的命令可以备份PuTTY的所有设置
regedit/ePuTTY.config.reg"HKEY_CURRENT_USER\Software\SimonTatham\PuTTY"
删除PuTTY的设置
如果只是在其他机器上临时用了一个PuTTY,用完以后想删除PuTTY的配置,就在控制台里输入如下的命令:
putty.exe-cleanup
用PuTTYgen来生成密钥,以后可以不用密码登录服务器了
PuTTYgen是密钥生成器,用来生成一对公钥和私钥供PuTTY、PSCP、Plink、Pagent来使用。
直接运行PuTTYgen可以看到如下的界面。
点击Generate按钮就开始生成一个公钥和私钥对,生成完毕后,点下面的Saveprivatekey就可以把私钥保存起来,扩展名是.ppk的文件。
Load按钮可以把先前保存的私钥重新打开,然后做些修改,比如修改注释和私钥口令,或者把PuTTY格式的私钥转换为OpenSSH格式的。
开始用PuTTYgen创建密钥
单击Generate按钮,然后你会看到进度条上面有个提示“Pleasegeneratesomeradomnessbymovingthemouseovertheblankarea.”,意思就是让你用鼠标在空白区域随机移动。
随着鼠标在空白区域的移动,进度条会一直走下去。
停止移动鼠标,进度条也就停止了。
那我们就移动鼠标,直到进度条走满为止。
等进度条走完之后,会出现下面的界面
最上面那个大大的只读文本框里面是公钥,用来保存到OpenSSH的authorized_keys文件中,这个文件中的每一行都是一个公钥。
默认情况下,这个文件位于Linux用户主目录的.ssh/子目录中,如果文件和目录都不存在,可以直接创建。
但是创建的文件、目录和用户主目录($HOME,$HOME/.ssh,$HOME/.ssh/authorized_keys)的权限有个限制就是对除了本帐户的其他所有帐户都要求是只读的,否则的话,即使公钥、私钥都匹配无误,也是无法登入系统的。
这是SSH服务器的一个安全要求,因为如果别的帐户可以修改你的authorized_keys的话,恶意的增加一个公钥,那对方不用你的帐户口令也能以你的帐户登入系统了。
对于一些特殊要求,你可以在SSH服务器的配置文件sshd_config中用指令
StrictModesno
来取消这个限制。
在sshd_config的帮助手册中可以看到
StrictModes
Specifieswhethersshdshouldcheckfilemodesandownershipof
theuser’sfilesandhomedirectorybeforeacceptinglogin.This
isnormallydesirablebecausenovicessometimesaccidentally
leavetheirdirectoryorfilesworld-writable.Thedefaultis
“yes”.
小技巧:
每次修改authorized_keys这个文件时,你可以用如下的命令来修改,确保所有的文件属性和权限无误
mkdir-p$HOME/.ssh&&touch$HOME/.ssh/authorized_keys\
&&chmodgo-w$HOME$HOME/.ssh$HOME/.ssh/authorized_keys&&vim$HOME/.ssh/authorized_keys
还有一个要强调的是那个Keycomment,这是密钥的注释,一定要修改。
因为这个密钥是给自己用的,所以最起码要输入自己的名字,用默认的注释很容易和其他人的密钥混淆的。
如果担心自己的密码忘记了,可以在后面加上密码提示,当然了,不要让别人用注释猜出你的密钥口令。
比如,我可以把注释修改为
ChaiFeng[20061120]w.z.
后面的w.z.就是我的密码提示,能猜出来么?
呵呵
输入注释,上面的公钥也会随之发生变化。
现在最重要的是,输入自己的密钥口令。
就是Keypassphrase和Confirmpassphrase这个两个输入框。
如果不输入口令,直接保存私钥会看到这个提示。
为了安全起见还是输入口令吧,要不任何人得到这个私钥都可以不用口令登入系统了。
最后单击Saveprivatekey来保存私钥吧,保存到自己认为安全的地方,比如存放到私人的USB闪存盘上。
需要登录时,插上USB闪存盘。
登录完毕后就可以把USB闪存盘取下来,哈哈,这样子就比较安全了。
大家也注意到了,还有个Savepublickey按钮,这个是保存SSH2格式的公钥,有些SSH服务器要求用这种格式的公钥文件。
一般情况下,我们是不需要的,所以这里也就保存了。
以后还想的话,就用PuTTYgen把私钥Load出来,然后再保存也可以。
用密钥登录服务器的流程
上面杂七杂八的说了一堆创建密钥时的事情,大家会不会已经有些乱了呢?
我把这个过程再罗列一遍:
1如果没有公钥/密钥对,就用PuTTYgen创建一个,已经有了就可以忽略这一步。
一个公钥/密钥对可以用在不同的服务器上,所以也不需要重复创建,关键要有足够强健的密码和安全的存放。
2象先前一样输入帐户名和口令登录到主机上。
3输入如下命令,来编辑authorized_keys文件
mkdir-p$HOME/.ssh&&touch$HOME/.ssh/authorized_keys\
&&chmodgo-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的图标,出来这样一个界面。
很简洁的,AddKey是添加私钥,RemoveKey是把选中的私钥从Pagent中卸载了。
好,现在单击AddKey按钮添加私钥,我把这个演示用的私钥保存到C:
\了
然后会出现输入密钥口令的对话框,输入正确的密钥后,单击OK
这时,在Pagent的窗口中就能看到我们的私钥已经装载上去了。
现在打开PuTTY,选择先前保存的Session,双击一下。
只要自动登录用户名设置上,主机上改帐户的authorized_keys文件里也有匹配的公钥。
哈哈,发现没有?
完全不需要口令,我们已经登录到系统了。
在Pagent的图标上点右键,也可以快捷的选择已经保存的会话。
建议大家把Pagent放到启动组里面,这样每次一开机,Pagent自动运行,然后我们只需要把私钥装载一下,然后我们就可以一直享受自动登录系统的乐趣了。
再配合上以后会讲到的Plink、PSCP这些,我们可以实现很多工作的自动化进行。
完全不需要每次输入用户名、口令、输入又长又多的命令,再做一些烦躁的文件备份,最后还得记得注销系统,难道不觉得麻烦么?
这一切烦恼很快就会远离我们了,继续往下看吧。
用SSH来传输文件
PuTTY提供了两个文件传输工具
∙PSCP(PuTTYSecureCopyclient)
∙PSFTP(PuTTYSFTPclient)
PSCP通过SSH连接,在两台机器之间安全的传输文件,可以用于任何SSH(包括SSHv1、SSHv2)服务器。
PSFTP则是SSH-2中新增的特性,使用的是新的SFTP协议,使用上与传统的FTP类似。
事实上PSCP如果发现SFTP可用,PSCP就会使用SFTP协议来传输文件,否则还是SCP协议。
PSFTP与PSCP相比,PSFTP的优点是可以与服务器进行交互,遍历服务器上的文件系统,在一个会话中上传或下载多个文件。
而PSCP只能一次传输一个文件,传输完毕后立刻终止会话。
PSCP的使用
在控制台直接执行pscp可以看到帮助
C:
\>pscp
PuTTYSecureCopyclient
Release0.58
Usage:
pscp[options][user@]host:
sourcetarget
pscp[options]source[source...][user@]host:
target
pscp[options]-ls[user@]host:
filespec
Options:
-Vprintversioninformationandexit
-pgpfpprintPGPkeyfingerprintsandexit
-ppreservefileattributes
-qquiet,don'tshowstatistics
-rcopydirectoriesrecursively
-vshowverbosemessages
-loadsessnameLoadsettingsfromsavedsession
-Pportconnecttospecifiedport
-luserconnectwithspecifiedusername
-pwpasswloginwithspecifiedpassword
-1-2forceuseofparticularSSHprotocolversion
-4-6forceuseofIPv4orIPv6
-Cenablecompression
-ikeyprivatekeyfileforauthentication
-batchdisableallinteractiveprompts
-unsafeallowserver-sidewildcards(DANGEROUS)
-sftpforceuseofSFTPprotocol
-scpforceuseofSCPprotocol
C:
\>
可以看出PSCP的使用是很简单的,把常用的几个选项说一下:
∙-q安静模式,传输文件时什么也不显示,否则会显示出文件的传输进度,默认是关闭的
∙-Pport指定服务器的SSH端口,注意这个是大写字母P,默认是-P22,如果主机的SSH端口就是22,就不用指定了
∙-luser指定以哪个用户的身份登录主机,如果没有指定,则PSCP会在PuTTY保存的同名Session中获得默认的用户名称。
用户名称也可以和主机名称写在一起,用@分割开,比如:
username@server
∙-pwpasswd指定登录时所用的口令为passwd
∙-ikeyfile就是指定登录时所用的密钥文件
最后面指定的主机名也可以是PuTTY中保存的Session名称。
比如我们在PuTTY中保存了一个名为foobarserver的会话,而我们所在的网络又的确没有名为foobarserver的主机名称。
而在这个foobarserver会话中保存的主机名称是demo-server,保存的自动登录的用户是taylor。
那么用命令
pscpc:
\autoexec.batfoobarserver:
backup/
∙就把本地的c:
\autoexec.bat复制到了主机demo-server上的用户taylor所在的主目录下的backup子目录中(这个路径可能是/home/taylor/backup
所以PSCP大致用法的例子就是:
pscp-P22-ic:
\path\your-private-key.ppk-Cusername@server:
/remote/path/
下面还是用一些实例来说明会比较简单一些:
把本地的C:
\path\foo.txt复制到远程主机192.168.6.200的/tmp目录下
pscpc:
\path\foo.txt192.168.6.200:
/tmp
把本地的C:
\path\foo.txt复制到主机192.168.6.200的/tmp目录下,但是以主机上的用户taylor的权限执行
pscpc:
\path\foo.txttaylor@192.168.6.200:
/tmp
或者是
pscp-ltaylorc:
\path\foo.txt192.168.6.200:
/tmp
把本地的C:
\path\foo.txt传送到主机192.168.6.200的/tmp目录下,但是主机的SSH端口是3122
pscp-P3122c:
\path\foo.txt192.168.6.200:
/tmp
把本地的C:
\path\foo.txt复制到主机192.168.6.200的用户taylor的主目录下
pscpc:
\path\foo.txttaylor@192.168.6.200:
.
把主机192.168.6.200上的用户taylor主目录下的所有*.tgz文件拷贝到本地的c:
\backup目录中,如果SSH版本是SSHv1,那这个命令就会出错。
pscptaylor@192.168.6.200:
*.tgzc:
\backup
再来看看PSFTP
在控制台执行命令psftp-h,可以得到psftp的帮助
C:
\>psftp-h
PuTTYSecureFileTransfer(SFTP)client
Release0.58
Usage:
psftp[options][user@]host
Options:
-Vprintversioninformationandexit
-pgpfpprintPGPkeyfingerprintsandexit
-bfileusespecifiedbatchfile
-bcoutputbatchfilecommands
-bedon'tstopbatchfileprocessingiferrors
-vshowverbosemessages
-loadsessnameLoadsettingsfromsavedsession
-luserconnectwithspecifiedusername
-Pportconnecttospecifiedport
-pwpasswloginwithspecifiedpassword
-1-2forceuseofparticularSSHprotocolversion
-4-6forceuseofIPv4orIPv6
-Cenablecompression
-ikeyprivatekeyfileforauthentication
-batchdisableallinteractiveprompts
C:
\>
用法与PSCP大同小异,虽然有个-load选项,其实这个没啥用,后面用主机名的时候,与PSCP一样直接用上会话名称就可以了。
用PSFTP登录到服务器上以后,操作与FTP差不多,这里简单的说一下吧:
∙open登录主机
open[username@][port]
比如:
oopentaylor@demo-server3022
就是以用户taylor的身份,登陆到主机demo-server上,SSH端口是3022
oopendemo-server
登陆demo-server,这里的demo-server可以是PuTTY中已经保存的会话名称,也可以是主机的名称,如果主机名称与会话名称相同,以会话名称为准。
∙close关闭SFTP连接
这个没啥说的,close就关闭了SFTP连接
∙quit结束本次的SFTP会话
也没啥用法,就是关闭了PSFTP这个程序
∙help[command]帮助
直接打help就可以看到帮助指令,后面指定上一个命令就可以查看该命令的帮助,比如:
helpopen
∙cd[directory]改变当前目录
∙pwd察看当前目录
∙lcd[directory]改变本地目录
∙lpwd察看本地当前目录
∙get[-r]从服务器下载一个文件/目录,这个命令不能用通配符,参数-r可以递归下载整个目录
∙put[-r][dest]把文件/目录上传到服务器,这个命令不能用通配符,参数-r可以递归上传整个目录
∙mget[-r]从服务器下载一批文件/目录,可以用通配符,-r的含义与get一样
∙mget[-r][dest]把一批文件/目录上传到服务器,可以用通配符,-r的含义与put一样
∙reget[-r]从服务器续传下载一个文件/目录,这个命令不能用通配符,-r的含义与get一样
∙reput[-r][dest]把一批文件/目录续传上传到服务器,这个命令不能用通配符,-r的含义与put一样
∙dir[directory]列目录
∙ls和dir一样
∙chmod[file|directory]改变文件的权限,与Unix的chmod命令类似
∙del删除文件,要注意的是del只能删除文件
∙rm与del一样
∙mkdir创建一个目录
∙rmdir删除一个空目录,只有空目录才可以被删除
∙mv改名/移动。
如果源和目的都是文件或目录,则是改名。
如果目的是目录的话,则是移动。
∙!
在本地命令前加一个感叹号,就可以直接执行
其他可选的SFTP客户端
FileZilla:
[url][/url]
WinSCP:
[url][/url]
用Plink更方便快捷的执行远程主机上的命令
Plink是PuTTY的命令行连接工具,主要用于自动化工作的处理。
直接在控制台执行plink,可以看到Plink的帮助
C:
\>plink
PuTTYLink:
command-lineconnectionutility
Release0.58
Usage:
plink[options][user@]host[command]
("host"canalsobeaPuTTYsavedsessionname)
Options:
-Vprintversioninformationandexit
-pgpfpprintPGPkeyfingerprintsandexit
-vshowverbosemessages
-loadsessnameLoadsettingsfromsavedsession
-ssh-telnet-rlogin-raw
forceuseofaparticularprotocol
-Pportconnecttospecifiedport
-luserconnectwithspecifiedusername
-batchdisableallinteractiveprom