xshell最佳实践

XShell是一款Windows下非常优秀的远程连接Linux主机的工具,是平常使用不可缺少的工具。使用了多个年头,总结一些很实用的技巧,与大家分享。

复制和粘贴
由于在linux的Shell下,Ctrl+c是中断当前指令,这个快捷键和win系统下的复制快捷键冲突,在Xshell中,提供了其它的快捷键来执行这些操作:
复制:Ctrl+Insert
粘贴:Shift+Insert
 
Xshell的复制和粘贴比较强大,但是默认不支持Ctrl+Shift+C和Ctrl+Shift+V,实际上Xshell支持自定义功能键,在Key Mapping当中点击New…然后输入Ctrl+Shift+C,然后在弹出的Edit对话框当中的Function中选择Menu,在Action中选择Copy,同理Ctrl+Shift+V也一样设置即可,其实还有很多快捷键可供选择,且可以自定义。

粘贴还有一个键就是鼠标中键,另外你还可以设置点鼠标右键就是粘贴,设置选项在这:
Tool->Options->General->Mouse
xshell 4:Tool->Options->Keyboard and Mouse->Mouse
Middle-button:设置粘贴(默认)、弹出右键菜单、弹出当前连接的属性设置窗口
Right-button:弹出右键菜单(默认)、弹出当前连接的属性设置窗口
 
这里可以选择设置中键或右键的具体功能,如设置用鼠标右键可将粘贴板内容复制到终端,像putty那样。另外按下鼠标滚轮可以实现将已经复制的内容快速粘贴。

将当前Shell中的内容复制到”记事本”中
有时候需要把shell中的一些内容临时复制到”记事本”中,如果再打开一个记事本,再复制粘贴就显得麻烦了。

XShell中内置了这一功能,使用很简单,就是选中内容,鼠标右键,选择”To Notepad”,再选中’Select Area’或者’All’或者’Screen’,前者将把前面整个屏幕的输出复制到记事本中,而后者只会将当前可见的部分复制。

日志记录
设置好一个登陆会话之后,选择属性然后在弹开的窗口当中选择’高级->日志记录’,然后在’日志选项’勾选Start logging upon connection并选择记录方式,然后在’日志文件’中选择’使用以下文件’。
xshell_log_setting

在日志文件中选择要记录session的路径,如果勾选’Overwrite when the specified file aleardy exists’的话则会覆盖之前的日志,但是如果日志带了%t参数也就无所谓了,这个参数是名称精确到秒,如果不是极端条件也覆盖不到。还有一个选项是’启动会话日志记录时询问’,这个是在会话连结的时候提示你把日志存放在那个路径,建议直接用前面一个省心不少。

快速选择当前行
这个很简单,就是在shell界面下快速点三次鼠标就选中当前行了,这样就可以用上面的复制功能将其复制到剪贴板中。

快速打开Sessions对话框
有时候打开XShell后希望能直接打开Sessions对话框,这时候只要在Shell界面的(要打开’Address Bar’选项)的地址栏 里中输入’open’即可。或直接使用’Alt+O’即可打开上次打开的Sessions所在目录的对话框。

迁移连接信息
在XShel中,每个保存的Session连接信息都是保存到.xsh(就是ini文件,可以用文本编辑器打开)文件中的。它的默认路径是
“%APPDATA%\NetSarang\Xshell\Sessions”

即:C:\Users\用户名\AppData\Roaming\NetSarang\Xshell\Sessions

可直接拷贝这些xsh文件到新的xshell的相同目录即可使用。

最小化到系统托盘
XShell默认最小化是不会到系统托盘的,但是有个选项可以修改,设置在:Tools->Options->Advanced->’Minimize to system tray’打钩即可,尽管这并不是很实用。

退出时关闭确认对话框
选择在这:Tools->Options->Advanced->’Confirm connection close when session exits’
还有一个:Tools->Options->Advanced->’Confirm connection close when XShell exits’

快速切换打开的Tab
快捷键:Alt+1~9 或者Ctrl+Tab 或者Shift+Tab

设置:Tools->Options->’Menu & Short Keys’

数字小键盘输入
如果不设置的话,输入数字小键盘,会显示乱码。

属性页面’Properties’->Terminal->’Initial VT Modes’->’Set as normal’选择即可。
xshell_use_num_key

自定义文字颜色
如图设置,就可以得到多种颜色的文字字体。
xshell_cust_font_clor

设置命令快捷按钮
当你管理操作多个ssh主机时,不得不重复输入相同的命令,xshell可以设置快捷按钮,一键输入你设置的命令。

xshell_qcs

Tools->’Quick Command Sets…’

在将其添加好后,将’View’->’Quick Commands’选项打开,这样在xshell的底部就有它们的标签,点击它后将会在终端里执行。

这里加一个别名为’nsl’的命令执行:
xshell_qcs_ex

将命令发送到多个ssh会话终端
也就是发送同一命令到已经登陆的多个主机,回车会将自动执行。这样就省去了重复键入的工作,提高了操作效率,但前者是要知道在做什么。

打开相应的功能:选择View->’Compose Bar’,这样在xshell的底部会有一个输入框,可以在其中录入想要执行的命令及其参数;最左端的小箭头点开后还可以设置将框内的指令发送到到当前xshell所有的会话(To All Sessions)还是所有的xshell(To All Xshell),默认为当前所有会话,当前你也可以只针对当前这一个会话(To Current Session),仅为调试所用。
xshell_send_more_cmd

注意:xshell可以开启多个实例,一个实例又可以开启多个tab会话。

设置xshell使用代理
详情请参考:对xshell三种端口转发的认识

上传下载
在主机里安装rz、sz,就可以直接上传下载文件,不用sftp或者其他上传下载工具了。这对于下载上传小型文件非常方便,。
通过apt来安装:
apt-get install lrzsz

用法:
# sz 文件名
即可下载文件到本地。

# rz 
就会跳出窗口让你选择上传的文件,然后上传。

个人更喜欢用sftp工具,通过Ctrl+Alt+F可以调出该sftp工具,如果安装了xsftp工具,将弹出一个gui类型像ftp工具一样可操作,否则将会出现cmd的操作界面。

xshell_sftp_cmd_begin

xshell_sftp_cmd_help

中文乱码的解决

这个问题与几个方面有关:ssh连接工具编码、当前会话的locale、应用软件输出的编码。只有这三个地方的编码设置为一样或兼容时,才能正常显示。
xshell_tool_code_select

查看当前用户的locale
xshell_tool_user_locale

Linux下修改用户locale,请参考:http://www.freeoa.net/osuport/sysadmin/linux-mod-user-locale_2267.html

下列以mysql编码调整为例,查看mysql这个应用的会话编码:
xshell_tool_mysql_code

会话使用的是gbk的编码,如果所查询的库表不是以会话中所显示的编码,则需要修改当前的会话编码:mysql>set names gbk;

修改后,查询出来的结果就应该是正常的,当然这需要终端和系统会话的支持,下面是连接工具的编码是utf-8,但系统的编码是“en_US.ISO8859-1”时通过对gbk的数据库查询出来的结果:
xshell_tool_mysql_code_err0

修改当前shell环境的语言编码为utf8时:
$ export LC_ALL=”en_US.utf8″

查看出来的结果依然是无法正常显示的:
xshell_tool_mysql_code_err1

修改为:export LC_ALL=”zh_CN.utf8″,结果还是一样,改为gbk后也是如此。那么可能是问题就是连接工具的编码设置的问题了,将其从utf8改为’Chinese Simplied(GBK)’,系统级的编码也为gbk时,查询的结果是正常的。如果将系统级的改为’utf8′(zh_CN或en_US)时,查询结果都是能正常显示的。

目前中文编码兼容性最好的是gb18030,不过出于很多原因,gbk是广泛使用的中文编码(windows中文环境的默认编码),而gb2312比较老旧了。可以修改整个系统的为支持中文默认的编码。
# vi i18n #加入以下内容
LANG=”zh_CN.GB18030″
LANGUAGE=”zh_CN.GB18030:zh_CN.GB2312:zh_CN”
SUPPORTED=”zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en”
SYSFONT=”lat0-sun16″

用密钥登录
如果不想每次在登录ssh时都输入密码(当然你也可以保存密码,保存后也是安全的,无法反解),可以设置使用ssh auto login方式,这种方法在linux之间登录是非常常见了,在xshell中也可以使用这种方式。在一定程序可防止他人的对ssh服务器通过暴力穷举来登录服务器,相比于密码方式要安全一些,前提是这个key一定要做好保密,当然可以对这个key设置一个统一的密码,省去为不同的机器设置不同密码。
xshell_tool_key_man

在选择好密钥类型和长度后,直接下一步继续,保存文件,最终Key生成结束。

把生成的key内容直接写到(追加)被登录机器的该用户家目录的’.ssh’下 /home/user/.ssh/authorized_keys 文件中。
xshell_tool_key_gen

初次需要导入刚才保存的 Key,必须将其导入到xshell中,才能为主机登录时有可选的密钥。
xshell_tool_key_login

输入密码,如果有的话。

关于sshd服务器的认证配置

# 口令认证
PasswordAuthentication yes #使用口令认证
PubkeyAuthentication no #不使用非对称密钥认证
PermitEmptyPasswords no #不允许使用空密码的用户登录

#非对称密钥认证
PasswordAuthentication no #不使用口令认证
PubkeyAuthentication yes #使用非对称密钥认证
UsePam no #yes的话非对称密钥验证失败,仍然可用口令登录
AuthorizedKeysFile .ssh/authorized_keys #用户认证使用的公钥。

转载自:http://www.freeoa.net/osuport/sysadmin/xshell-best-practice_1893.html

About 智足者富

http://chenpeng.info

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>