最近查看linux系统日志:/var/log/secure,发现服务器出现大量暴力破解登录记录,并且是不同的IP帐号在尝试破解,所以不好写iptables来禁掉IP登录(太多了);又由于公司预算,没有固定的外网IP登录服务器,所以不好写iptabls只允许某些IP访问。因此准备使用密钥认证方式来登陆服务器,也避免了不必要的麻烦操作。

wKioL1f9rjHzH72-AAApOdGK8P0071.png-wh_50

 

1.配置sshd只允许使用public_key登录

cd /etc/ssh/

①先进行备份,并创建普通用户

cp sshd_conf sshd.conf.bak

useradd chengzhi

②sshd_conf配置

主要修改如下几个内容:

PermitRootLogin no # 默认为注释,先配置为禁止root用户登陆,允许root登陆太危险了。

##RSAAuthentication yes   #启用 RSA 认证(我创建的是DSA,所以没有开启这个选项)

AuthorizedKeysFile .ssh/authorized_keys # 验证公钥的存放路径

PubkeyAuthentication yes # 默认为注释,启用公钥认证

PasswordAuthentication no # 禁止密码认证,默认是打开的。

 

保存后,重新启动ssh服务。

RedHat,CentOS: service sshd restart

 

2.公钥生成

方法一(服务器生成密钥对)

在服务器中执行:

ssh-keygen -t dsa

可以得到两个文件,id_dsa是私钥,id_dsa.pub是公钥

复制这两个文件到本地windows下

cat .ssh/id_dsa.pub > /home/chengzhi/.ssh/authorized_keys将公钥放入到验证文件

 

方法二(由SecureCRT生成密钥对,此方法我没测试过)

点击工具--创建公钥

wKioL1f9rlqDuNoSAAAaY2S10Uo404.png-wh_50


wKiom1f9rl2jySusAAAsQE9w628948.png-wh_50


wKioL1f9rl2iB5MZAAAlr9P8vS0082.png-wh_50

如果不填写就是不加密密钥,填写就是加密密钥

wKioL1f9rnzALQ35AAAtsCSrlSM147.png-wh_50

 

密钥长度,一般默认就行

wKiom1f9roiTXeEoAAArOUFux0U787.png-wh_50

 

开始生成密钥中

wKiom1f9rq2hvje5AAAkS83D7j8814.png-wh_50


复制Identity.pub文件到服务器,放在home目录的.ssh子目录下,并执行

ssh-keygen -X -f Identity.pub > authorized_keys

 

3.配置SecureCRT使用公钥认证

打开会话选项

wKioL1f9rsfBsCg2AAA0GJGgcrs858.png-wh_50


wKiom1f9rsiD8s7eAABJj8RWog0524.png-wh_50

 

4.测试

重新用SecureCRT连接一下试试,能够直接登录就是成功了。