Linux之玩转SSH免密登录

日期:2019年08月12日 作者: 分类:运维 浏览:260
环境准备
远程主机:CentOS 7.6(IP:47.108.88.51)
本地主机:macOS 10.14.6

一、为什么使用SSH免密码登录

我们需要登录远程Linux主机时,传统方式使用账号密码通过 ssh2 协议进行远程连接,而免密登录是使用 ssh-keygen 生成的公钥私钥对进行远程登陆,这种方式有如下两个显著优点:

  • 方便:不需要输入密码
  • 安全:由于不需要输入密码,登陆过程就不会有密码传输,能避免密码泄漏

二、开始配置牛逼的SSH免费密码登录

为了方便使用,先做一些优化设置。

首先通过账号密码登录远程Linux主机,使用自己熟悉的文本编辑器编辑 /etc/ssh/sshd_config 文件,确保如下内容:

# 开启公钥登录
PubkeyAuthentication yes

# 配置公钥文件
AuthorizedKeysFile .ssh/authorized_keys

# 下面两行表示每 60 秒尝试与客户端通信,最多3次,为了防止长时间没有操作而断开连接
ClientAliveInterval 60
ClientAliveCountMax 3

1、生成SSH密钥和公钥

执行如下命令:

ssh-keygen -b 4096 -t rsa
  • -t :表示密钥类型是rsa
  • -b :指定密钥长度

遇到询问,一路回车到底就可以。

2、配置远程主机上的公钥

注意文件和文件夹的权限,.ssh 文件夹是 700authorized_keys 文件是 600

3、本地主机安装私钥

在本地用户目录下创建 .ssh 文件夹,并将权限设置为 700

然后将远程主机上的私钥 id_rsa 复制到本地的 .ssh 文件夹,并设置权限为 600

此时已经可以无密码登录远程主机了

至此,基础的无密码登录就实现了!!!

三、进阶玩法

1、安全登录root账户

在上面的例子中,实现无密码登录后,我们仍然可以通过账号密码登录,为了安全,我们可以设置远程主机,禁止root用户通过账号密码登陆,只允许root使用公钥私钥对进行远程登陆,防止密码泄漏。

编辑远程主机上的 /etc/ssh/sshd_config,配置如下项目

PermitRootLogin without-password

然后重启 ssh 服务

至此,已经无法通过账号密码登录root账户,必须通过公钥私钥对进行无密码登录。

2、设置远程主机别名

无密码是挺方便的,但远程主机太多呢?ip地址太难记呢?不怕,可以设置主机别名!

首先在本地主机的用户目录中创建如下文件:

touch ~/.ssh/config

然后编辑该文件,配置如下:

然后就可以通过别名登录了

3、使用vscode实现远程开发

具体操作,请听下回分解!

四、注意事项

  • 公钥文件 id_rsa.pub 是用于远程主机,使用时需要将其重命名为 authorized_keys ,并设置权限为 600
  • 私钥文件 id_rsa 是用于本地主机,此文件相当于我们远程主机的钥匙,千万不能泄漏,使用时权限也要设置为 600

所以,私钥文件我们要从远程主机上删除

 

标签:

除非注明,戊辰人博客文章均为原创,转载请以链接形式标明本文地址

本文地址:https://wanglu.info/2019/08/1346.html