命令行下的ssh小窍门

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是不是比图形界面更加的高效简洁呢?赶紧打开你的终端试试吧

发表评论

电子邮件地址不会被公开。