Linux服务器实现无密登陆

自己最近弄了台Linux系统的服务器,上面放了个人小站,经常会上去更新自己的代码什么乱七八糟的管理。因为经常登陆的缘故,总是感觉SSH连接时,输入ssh user@host -P port一长串登陆信息后,每次还要都输入密码。笔者实在忍受不了每次输密码的繁琐,决定试试无密码登陆。

无密码登陆的原理

无密码登陆就是指用户在不需要密码的情况下就可以登陆服务器。这里的没有密码并不是真的没有密码,我们采用的是公钥私钥对进行身份验证,从而实现无密码登陆。
无密码登陆的采用的协议

无密码登陆采用的协议,简单说是SSH即一种建立在应用层和传输层基础上的安全协议,为计算机上的Shell(壳层)提供安全的传输和使用环境。关于详细的信息,各位可自行 Google。

无密码登陆的具体实现

  1. 在本机生成公钥/私钥对,适用于unix系的系统

    1
    ssh-keygen -t rsa -P '' -C 'xxx@163.com'
  2. 敲回车键即可,然后会在当前用户的根目录下生成.ssh目录,.ssh目录下会有id_rsa和id_rsa.pub两个文件

  3. ssh连接到远程服务器,将id_rsa.pub的内容,复制到服务器用于远程连接的用户的根目录下的.ssh目录下的authorized_keys文件内保存并退出,断开远程连接。

  4. 我们使用ssh重新连接远程服务器,发现此时连接远程服务器已经不需要输入服务器用户的密码

基于别名连接远程主机的具体实现

但是,每次ssh连接都会输入每台主机的用户名、ip地址及端口,对于管理一台服务器还可以接受,但是管理的服务器不只一台时,每台服务器的用户名、ip地址、端口都需要记忆,这是相当吃力的,但如果我们给每台服务器设置一个别名就容易记忆的多。此时我们就可以基于主机别名进行远程连接。

基于别名的配置很简单,就是在本机的用户根目录下的.ssh目录下,创建一个名为config的文件,文件内容如下:

1
2
3
4
5
6
7
8
9
10
Host 别名1
HostName 主机名或主机IP
Port 端口
User 用户名
IdentityFile 密钥文件的路径
Host 别名2
HostName 主机名或主机IP
Port 端口
User 用户名
IdentityFile 密钥文件的路径

上面的配置可以缺省,不需要每一个都填写。有了这些配置,就可以这样用 ssh 登陆服务器了:

1
ssh 别名

这样是不是简单了很多呢。