linux设置SSH密钥登录
最近弄了个Linux云主机,每次上都有如下提示(各种被扫描和攻击…)
Last failed login: Tue Dec 12 07:55:36 CST 2017 from 219.146.144.254 on ssh:notty
There were 14011 failed login attempts since the last successful login.
Last login: Mon Dec 11 09:23:25 2017 from 180.110.80.73
研究后发现为Linux配置ssh密钥登陆并关闭密码登陆可以解决这个问题.
环境
服务器: CentOS 7
客户端: Win 10 1903
SSH登陆原理简单说明:
公钥相当于锁,私钥相当于钥匙。
生成公钥和私钥,并把公钥上传到服务器。以后在客户端登陆时,就可以使用私钥来进行验证。不再需要用户名和密码登陆 ,大大提高了服务器安全性。
前提
服务器必须安装了sshd服务.没有的可以使用yum来安装.
步骤
- 使用RSA算法, 生成ssh密钥. 默认保存在"~/.ssh"目录下
# 一路回车确认即可
ssh-keygen -t rsa
# 查看生成的密钥.id_rsa是私钥,id_rsa.pub是公钥
ll ~/.ssh/
- 把公钥存到默认ssh密钥位置. <当前用户>/.ssh/authorized_keys
cd ~/.ssh
# 将公钥追加到keys文件中,注意是追加.因为keys文件中可能记录了多个公钥.
cat id_rsa.pub >> ~/.ssh/authorized_keys
# 将文件权限改为只有当前用户可读可写,保证安全.
chmod 600 ./authorized_keys
- 打开ssh服务器的密钥登陆功能
修改SSH的配置文件/etc/ssh/sshd_config:
#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys
去调上面3行前面的#,保存后重启SSH服务。
#centos7
systemctl restart sshd.service
- 下载公钥和私钥到客户机
将密钥文件下载到本机.(推荐存放到~/.ssh目录)
客户机若是linux, 推荐使用sz命令(sudo yum install lrzsz).
window客户机, 则推荐使用免费的WinSCP.
- ssh客户端配置使用SSH key连接服务器(所有工具都大同小异,我用的是免费的xshell)
新建一个会话,并选择public-key的方式连接
浏览选择刚下载的私钥文件.确定.
- 正常登录.
在没有输入密码的情况下, 登录成功!
- 可选操作: 关闭密码登录
修改服务器的sshd配置文件/etc/ssh/sshd_config,找到下面1行:
PasswordAuthentication yes
# 修改为:
PasswordAuthentication no
保存后重启SSH服务。
systemctl restart sshd.service #centos7
再也不用看到登陆尝试失败的提示了, 完结!