Linux服务器免密码登录
简介
当拥有一台服务器时,最先保证的是安全,而保证安全的方式有很多,譬如避免开放过多的端口,尽量避免使用默认端口,登录口令尽量复杂,其中登录口令是进入服务器的第一道防线,但有时候复杂的口令即阻挡了外来人也阻挡正常登录(密码太复杂了),所以有没有一种既简单又能有效防止被破解的方法呢?当然有,免密登录就是最简单有效的方法
步骤
1、在windows系统的cmd命令行上执行生成密钥对命令
1 | ssh-keygen |
例子:
1 | ssh-keygen -t rsa -C "Ubuntu" -f "tecent_VPS" # 给服务器的Ubuntu用户 |
参数解释
| 参数 | 解释 |
|---|---|
| -t rsa | 采用rsa加密方式 |
| -f | 生成文件名 |
| -C | 备注 |
2、将生成的id_rsa.pub公钥内容复制到远程服务器上的/.ssh/authorized_keys(不存在则手动创建)
1 | touch /.ssh/authorized_keys #文件不存在时手动创建 |
3、导入密钥,打开xshell->工具->用户密钥管理者->导入选项,导入刚刚生成的id_rsa密钥文件
4、登录服务器,选择密钥登录并选择刚刚导入成功的密钥文件,即可完成无密码登录。
5、(可选)取消密码登录,加强服务器安全性。
1 | vim /etc/ssh/sshd_config #编辑ssh配置文件 |
原理
免密登录服务器利用非对称加密原理,简单来说使用两个密钥(公钥和私钥),公钥加密传输数据,私钥解密接收数据;公钥是公开的,私钥是保密的。
免密登录原理如下( 图片来自于网络)
图解,server A免登录到server B:
1、在A上生成公钥私钥。
2、将公钥拷贝给server B,要重命名成authorized_keys(从英文名就知道含义了)
3、Server A向Server B发送一个连接请求。
4、Server B得到Server A的信息后,在authorized_key中查找,如果有相应的用户名和IP,则随机生成一个字符串,并用Server A的公钥加密,发送给Server A。
5、Server A得到Server B发来的消息后,使用私钥进行解密,然后将解密后的字符串发送给Server B。Server B进行和生成的对比,如果一致,则允许免登录。
参考文章
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 心流!
评论
TwikooValine








