Linux之玩转SSH免密登录
环境准备 远程主机: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
文件夹是 700
,authorized_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://webshao.com/344.html