ssh工具小窍门
对于经常和linux服务器打交道的人来说,使用ssh登录服务器肯定是家常便饭了,当然登录非常简单,使用下面的命令就可以登录了
ssh user@ip_address -p port
如果你windwos环境下,你或许会使用putty或者xshell这样可视化工具来保存你的登录凭证,用以快速方便的登录你的服务器去执行一些命令,更有甚者还会部署一些http网页面板形式的客户端来做这些操作.
其实我想说的是,这些操作除了特殊的场合之外,根本就是本末倒置了.ssh本身其实已经提供了这个简化登录的功能.接下来就让我们来体验一下 命令行的ssh
带来的极致体验吧
.ssh目录
正常来说,如果我们需要远程登录linux服务器,那么我们一定会有一个terminal(终端),因此我们所有做的一切操作都应该是在命令行下呈现的,对于不会使用linux的普通用户,不包含在本文的涵盖范围内
一般来linux下我们都应该会有一个.ssh目录,一般在~/.ssh
这个位置,里面保存我们的ssh登录信息
# 文件结构如下
~$ tree
.
├── authorized_keys
├── config
├── id_rsa
├── id_rsa.pub
└── known_hosts
- authorized_keys ssh服务器的已授权秘钥信息
- ssh config文件
- id_rsa ssh默认的私钥文件
- id_rsa.pub ssh默认的公钥文件
- known_host ssh已知主机足迹
当然,如果你的目录甚至没有这些文件,甚至连.ssh目录都没有的话,也没有关系,ssh已经很贴心的为我们准备好这些东西了
生成自己的秘钥对
一般来说,ssh登录是不需要输入密码的,输入密码不仅不安全,而且效率低下,使用秘钥登录才是安全又正确的做法,所以我们首先需要一个秘钥
使用ssh-keygen命令,然后一路回车就能得到一个秘钥对了,当然如果你想个性化一点,比如想要配置一个自己的邮箱什么的,可以使用下面的命令
ssh-keygen -t rsa -C "crisen@crisen.org"
然后一路回车就可以得到你的密钥对了
拷贝自己的公钥到服务器
当然仅仅有公钥还是不能无密码登录的,你还需要把你的公钥(id_rsa.pub)里面的内容拷贝到服务器的authorized_keys文件中,当然你可以自己用密码登录到服务器,然后用vim打开authorized_keys,接着把你的公钥文件的内容复制进去,只是强大的ssh工具怎么能允许如此低下的操作呢?
- 强大的ssh-copy-id命令会来解决你的烦恼
# 拷贝公钥到服务器
# user对应你需要登录的用户名 一般来说都是root
# ip_address 对应服务器的ip地址
sh-copy-id user@ip_address
使用这个命令之后,系统会提示你需要输入密码,然后使用
ssh user@ip_address
就能直接登录服务器了,这样就非常方便了吧? 不,其实还不够,因为我懒得连用户和ip地址都不想输入
便捷的config文件
如果你仅仅只有一台服务器,并且ip地址很好记的话,使用ssh user@ip_address
的方式确实是足够了,但是如果我几十台linux服务器,并且每个服务器的ip都没有规律并且很复杂呢?想想都觉得可怕吧,正常人是不可能记得住那么多ip的,所以贴心的ssh已经帮我们准备好了config文件,可以让你为每一个服务器设置别名
现在假设我有三台服务器,分别如下
服务器名称 | 登录用户 | 服务器地址 | 服务器端口 |
---|---|---|---|
web服务器 | www | 192.168.1.11 | 22 |
mysql服务器 | mysql | 192.168.10.11 | 2222 |
redis服务器 | redis | 192.168.100.11 | 2200 |
不同段的ip地址,不同的登录用户,不同的登录端口,使用ssh登录看起来是不是感觉要疯,很难记得住吧,接下来让我们配置一下config文件
一般来说这个文件是不存在,因此需要我们手动创建,名字就是config,位置为~/.ssh/config
# 使用vim命令编辑config文件
vim ~/.ssh/config
# 配置下面的内容
Host www
hostname 192.168.1.11
user www
port 22
Host mysql
hostname 192.168.10.11
user mysql
port 2222
Host redis
hostname 192.168.100.11
user redis
port 2200
- Host 对应服务器的别名 也就是登录的标识
- hostname 服务器的ip地址
- user 登录的用户
- port ssh端口
配置好以后,接下来登录服务器就简单了
# 登录web服务器
ssh www
# 登录mysql
ssh mysql
# 登录redis
ssh redis
这个配置不仅仅可以给ssh命令使用哦,你甚至可以在scp的时候使用这个别名
# 拷贝web服务器的www目录到本地当前目录
scp -r www:/data/wwwroot/www ./
尾语
这样看起来命令行下使用ssh是不是比图形界面更加的高效简洁呢?赶紧打开你的终端试试吧