十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章将为大家详细讲解有关Ubuntu下如何使用OpenSSH,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
创新互联建站-专业网站定制、快速模板网站建设、高性价比英吉沙网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式英吉沙网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖英吉沙地区。费用合理售后完善,10多年实体公司更值得信赖。
1.私key登陆
无论你使用哪个客户端软件都会有设置使用key的选项,ssh命令也不例外。默认情况下,ssh会读取用户宿主目录的.ssh里的id_rsa这个文件。这里有个小插曲:笔者原来的key是用secureCRT生成的。保存的时候会提示是用secureCRT私有格式还是openssh格式。笔者当时用的secureCRT格式,放到这个目录以后,你看那个着急啊,死活不好使。后来又用secureCRT重新保存成openssh格式才可以(重新保存不是重新生成哟,想想后面有那么多服务器要一个一个重新放上去就会没有重新生成的欲望)。还有一点要注意的是,一定要是id_rsa这个文件名哟,不然的话急死你也不知道啥原因(当然了后面学习到使用配置文件的时候,你会知道还有identity和id_dsa,到时候想用啥名随心所意)。再有就是这个文件的权限是600,不然的话ssh也不会买帐的哟。
2.指定用户名
每个人都会有自己喜欢的用户名,像笔者就喜欢用rainbird,所以笔者登陆系统的时候用户名也是rainbird。而你连接的服务器不会判断你当前的用户名,然后给你建立一个帐号哟。默认使用“ssh ip”的时候。ssh会判断你当前是否有配置文件指定默认的用户名,没有的话再判断你在命令里有没有使用ssh -l rainbird ip或者ssh rainbird@ip这样的格式,没有的话,它就会默认取你当前系统登陆的用户名。来连接远程的系统。如果你每次连接的用户要用的用户名都一样而又不是rainbird比如说root的话,每次都要输入-l或者user@ip这样的形式是不是很烦呢?反正输入的东西越多效率就越低。前面有提到ssh会先判断是否有配置文件。
经过笔者的学习发现:ssh会读取两个配置文件:一个是~/.ssh/config,没有的话就会去读/etc/ssh/ssh_config。呵呵,这也是linux的工作理念:每个用户都会有自己个性的配置文件,所以用户默认会使用统一的配置文件。抱着试试看的想法,笔者vi ~/.ssh/config,写入User竟发现讲法高亮了,看来就是它,于是写入:
User root
保存退出以后,再ssh ip的时候,竟发现真得以root@ip的形式连接了:
[rainbird@rainbird ~]$ssh 192.168.5.18
root@192.168.5.18's password:
3.指定连接的端口和密码
在设定了默认连接的用户名以后,笔者算是尝到了甜头。于是开始仔细研究/etc/ssh/ssh_config这个配置文件。笔者以前也只是知道有这么个文件,还真没仔细的看过。这一研究不要紧,许多问题都迎刃而解。***引起笔者注意的两行是:
# Port 22
# Protocol 1,2
这两行的意思就是说,默认连接的端口是22,默认连接使用的ssh协议1,2都可以。直接打开~/.ssh/config把这两行也加去:
Port 1222
Protocol 2
是不是又省去了很多东西呢?
4.添加便于访问的主机名
这点严格来说算不上是ssh命令独有的。无论使用哪种客户端软件都会有保存会话的功能,但是ssh命令有没有读取默认会话配置的功能呢?笔者也想了很长时间,但是没找到解决办法。其实笔者就是觉得每次都要ssh xxx.xxx.xxx.xxx有点太累,主要是笔者对数字天生不感冒。咋办呢?老大说,你直接用域名不就得了?嗯?域名好记,但是好记是好记,也不短啊,咋办呢?直接写hosts得了!因为域名的出现是因为hosts不够用了。在hosts够用的情况下,为啥不用hosts呢?再说不但一劳永逸,还节省了解析时间,一举两得。于是乎:sudo vi /etc/hosts
xxx.xxx.xxx.xxx web
以后再访问web的时候,直接ssh web。嗯,有点符合linux的简洁高效的思想了。
5.ssh 中文乱码问题
世界真美好。丰富多彩,五彩缤纷。linux下正常显示中文的问题,一直是笔者最关心的问题。当使用ssh登陆到中文环境的linux服务器上时,中文还是乱码。咋办呢?这天生一对的东西,能不能解决这个问题呢?答案是肯定的。在/etc/ssh/ssh_config有这么一句话:
SendEnv LANG LC_ALL
这个选项默认是打开的,意思是发送系统语言环境。网上有说可以写成SendEnv LANG=en.US.UTF-8 LC_ALL=en.US.UTF-8。但是根据笔者的理解:当LC_ALL设置的时候,LANG就算设置了也要服从LC_ALL的,所以笔者直接在~/.ssh/config里加入了这句:
SendEnv LANG LC_ALL=en.US.UTF-8
哈哈,中文就正确显示了。生活真美好!
6.ssh客户端启用ssh key转发
Linux系统中有一个自动转发key的功能,在远程到一台linux再ssh其它机器的时候可以用你本机的私key自动去验证,极大的提高的工作效率和安全性。这个功能用普通的ssh命令可不可以实现呢?答案还是那么的肯定!但是要分两步走,首先vi ~/.ssh/config加入:
ForwardAgent yes
然后再执行命令:
ssh-add
它会默认把~/.ssh/id_rsa加到你的中转代理里。哇卡卡,我胡汉三又回来了~~~
7.防止断开连接
ssh服务端,出于安全和节省资源的考虑,会把一段时间不活动的会话自动断开。虽然经过前面的改造你连接一台机器已经是很省事的事儿了。但是出去抽根儿烟回来,就要再这么登陆一次,让人感觉实在不爽。那咋办呢?俗话说:上有政策,下有对策。
vi ~/.ssh/config
ServerAliveInterval=60
关于“Ubuntu下如何使用OpenSSH”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。