共计 2489 个字符,预计需要花费 7 分钟才能阅读完成。
这篇文章将为大家详细讲解有关 Ubuntu 下如何使用 OpenSSH,丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
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”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。