需求的产生
将ssh服务暴露于外网的时候,经常会遭到一些“有心”人的撞库操作,可以通过查看分析/var/log/auth.log 日志
cat /var/log/auth.log
May 16 08:41:43 user sshd[233979]: Invalid user xbmc from 127.0.0.1
May 16 08:41:43 user sshd[233979]: input_userauth_request: invalid user xbmc [preauth]
可以看到有xbmc的用户尝试登录失败。
每天面对如此多的尝试登录,看日志简直就像是苍蝇一样,烦的要命。有没有一劳永逸的方法解决这个问题呢?
有!
关闭用户名密码登录,开启秘钥登录。意思就是把密码锁换成了钥匙锁。
有人要敲门,有钥匙吗?
没有,只有密码!
什么?没有钥匙?滚粗!
生成秘钥
为了使用秘钥,我们必须自己生成一对秘钥,关于公钥和私钥的具体原理我在这里不在赘述,网上可以查到大量的文章。
生成秘钥可以按照以下步骤
在服务器上运行
user@host :~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): # 直接回车确认路径及文件按名字,也可以自己起名字
Enter passphrase (empty for no passphrase): #输入密钥锁码,或直接按 Enter 留空秘钥密码锁,这个密码是打开秘钥使用的,在此可以直接回车
Enter same passphrase again: #再输入一遍密钥锁码
Your identification has been saved in /home/user/.ssh/id_rsa. # 私钥生成
Your public key has been saved in /home/user/.ssh/id_rsa.pub. #公钥生成
The key fingerprint is:
0f:d3:e7:1a:1c:bd:5c:03:f1:19:f1:22:df:9b:cc:08
现在,在 user 用户的home目录中生成了一个 .ssh 的隐藏目录,内含两个密钥文件。id_rsa 为私钥,id_rsa.pub 为公钥
到此,秘钥就生成完毕了
服务器上安装秘钥
输入一下命令
cd /home/user/.ssh #进入秘钥所在 的目录
cat id_rsa.pub >> authorized_keys #将公钥转换成认证用
chmod 600 authorized_keys #修改权限满足认证要求
chmod 700 ~/.ssh #修改文件夹权限满足认证要求
关闭密码登录并开启ssh秘钥登录
编辑 /etc/ssh/sshd_config 文件
确保秘钥认证的2个配置是yes状态
RSAAuthentication yes
PubkeyAuthentication yes
关闭密码登录
PasswordAuthentication no
重启ssh服务
sudo service sshd restart
使用秘钥登录
将/home/user/.ssh/id_rsa 私钥下载到client的保存,注意,私钥的权限普通用户不能读写,需要修改权限或者提权才能复制。
使用SecureCRT
新建ssh连接
选择公钥,选择属性
点击使用会话公钥设置,点击路径选择按钮,选择从服务器下载下来的秘钥id_rsa
点击确定按钮
回到快速连接界面,记得把密码选项取消,然后点击连接就可以登录了
这样,就可以直接连接了