Centos设置SSH密钥登陆,解决云服务器被尝试登陆的问题


最近弄了个云主机,每次上都有如下提示(各种被扫描和攻击…)

 

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

 

研究后发现配置ssh密钥登陆并关闭密码登陆可以解决这个问题.

以下内容为在Centos7下操作.

 

ssh登陆原理简单说明:

公钥相当于锁,私钥相当于钥匙。

生成公钥和私钥,并把公钥上传到服务器。以后在客户端登陆时,就可以使用私钥来进行验证。不再需要用户名和密码登陆 ,大大提高了服务器安全性。

  1. 生成ssh密钥

首先确保服务器已经装了ssh服务,不过现在linux服务器都自带吧。

ssh-keygen -t rsa #这里使用rsa算法,-t用于指定加密算法

   

   

查看生成的密钥.id_rsa是私钥,id_rsa.pub是公钥

ll /root/.ssh/

   

  1. 把公钥存到默认ssh密钥位置. 当前用户/.ssh/authorized_keys

    mkdir .ssh #如果没有.ssh目录,则需要创建

    cat id_rsa.pub >> /root/.ssh/authorized_keys #将公钥追加到keys文件中,注意是追加.因为keys文件中可能记录了多个公钥.

       

    chmod 600 ./authorized_keys #将权限改为只有当前用户可读可写,保证安全.

       

  2. 打开ssh服务器的密钥登陆功能

       

    修改SSH的配置文件/etc/ssh/sshd_config :

    #RSAAuthentication yes

    #PubkeyAuthentication yes

    #AuthorizedKeysFile .ssh/authorized_keys

    去调上面3行前面的#,保存后重启SSH服务。

    systemctl restart sshd.service #centos7

       

  3. 下载公钥和私钥到客户机

    必须两个文件都下,且要放到一个目录下.(有些ssh工具只要私钥就行)

    我这使用windows scp(ftp软件)将密钥文件下载到本机.

       

  4. 使用windows下的ssh客户端配置密钥连接服务器(所有工具都大同小异,我用的是免费的xshell)

    新建一个会话,并选择public-key的方式连接

       

    浏览选择刚下载的私钥文件.确定.

       

    登陆成功!

       

       

       

  5. 关闭密码登录

    修改SSH的配置文件/etc/ssh/sshd_config,找到下面1行:

    PasswordAuthentication yes

    修改为:

    PasswordAuthentication no

    保存后重启SSH服务。

    systemctl restart sshd.service #centos7

       

    再也不用看到登陆尝试失败的提示了, 完结!

       

       


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM