之前还一直因为*unix(Ubuntu、Mac)系统下没有类似Windows的XShell、XFTP等工具苦恼,后来找了一些资料后,发现Linux系统经过一系列操作后也是可以很香地管理各Linux服务器。
个人在*unix系统下对Linux服务器群管理需求如下:
- 要可以记住Linux服务器密码的,我不想每次ssh或ftp操作都需要手动输入密码
- 可以通过别名登录Linux服务器,我记不住一大堆的Linux服务器IP啊
基于以上需求,结合*unix系统本身的ssh能力,我整理解决办法如下,总体而言是通过公钥身份认证连接远程服务器:
第一步,本地生成对称密钥
本地机器终端命令:
ssh-keygen
然后一直回车,就可以在 ~/.ssh/ 目录下找到 id_rsa 和 id_rsa.pub 两个文件,其中.pub后缀的是公钥。
第二步,将公钥上传至服务器
通过以下命令将公钥上传至目标服务器,命令执行后会自动寻找.ssh/id_rsa.pub文件:
ssh-copy-id root@xx.xx.xx.xx
会要求输入一次密码。输入正确密码后,会提示密钥已经上传成功。此时已经可以通过正常的ssh命令连接服务器而不需要输入密码了。同时scp文件传输命令也免密码。
至此,第一个需求点已经解决。
第三步,设置服务器别名
当管理的服务器数量众多时,我们很难记住每个服务器的IP,因此我们需要设置服务器别名,通过别名就可以直接登录。操作步骤如下:
- 在 ~/.ssh 目录下新建 config 文件(无任何后缀),若文件本来已存在,则无需再建;
- 在 conf 文件中编辑服务器别名,如下:
Host ubuntu
HostName 192.168.3.204
User root
Port 22
其中Host字段是别名,HostName是主机IP或域名,User是登录的用户名,Port是SSH端口(默认为22的话,这个字段可以省略)。有一点特别有趣的是,这些字段不区分大小写。
配置完后,即可以通过终端命令 ssh ubuntu 来实现对192.168.3.204服务器的登录。
至此,需求点二解决。