来到ubuntu下以后,以前在windows下积累的“高效”办公的习惯都要重新改写。首当其冲的就是服务器的远程管理工作。今天的主角就是会伴随openssh-server一同发布的openssh-client。而且默认不安装openssh-server的情况下,大多的发行版也会默认集成这个东东。笔者以前在远程登陆到linux系统以后也会经常用里面的ssh命令再连到其它的机器,但是今天所提到的大部分的东西都是在笔者使用ubuntu以后才慢慢知道的。这个朴实无华的小东东究竟有什么样的能量呢?下面就由笔者来分享这次的一个个小甜点:
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或者sshrainbird@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'spassword:
3.指定连接的端口和密码
在设定了默认连接的用户名以后,笔者算是尝到了甜头。于是开始仔细研究/etc/ssh/ssh_config这个配置文件。笔者以前也只是知道有这么个文件,还真没仔细的看过。这一研究不要紧,许多问题都迎刃而解。最先引起笔者注意的两行是:
Port 22
Protocol 1,2
这两行的意思就是说,默认连接的端口是22,默认连接使用的ssh协议1,2都可以。直接打开~/.ssh/config把这两行也加去:
Port 1222
Protocol 2
是不是又省去了很多东西呢?