Linux SSH 连接安全设置

一.更换端口, 可以在一定程度上防止扫描攻击

  vim /etc/ssh/sshd_config

  将 port 一项从 22 更改为高位端口, 然后重启 ssh 服务

  systemctl restart sshd.service

 

二.禁止使用root账号登录, 允许使用root账号登录服务器是一个极其危险的行为!

  vim /etc/ssh/sshd_config

  MaxAuthTries 3    # 限制失败次数

    PermitRootLogin no # 禁止使用root账号登录

  重启 ssh 服务

 

三.关闭密码登录, 防止暴力攻击, 使用 非对称密钥对进行身份认证

  vim /etc/ssh/sshd_config

  RSAAuthentication  yes  # 开启RSA验证

  PubkeyAuthentication   yes  # 是否使用公钥验证

  AuthorizedKeysFile  .ssh/authorized_keys  # 保存公钥的文件的位置, 这里就是登录用户的家目录下的 .ssh目录, 可以根据自己的实际情况进行配置

  PasswordAuthentication  no  #禁止使用密码验证登陆

 

四.生成公钥私钥, 将公钥上传到服务器   

  1、确认服务器都已都已安装了ssh服务

  2、在本机上创建密钥对
    ssh-keygen -t rsa

    1).注意查看提示,如果出现提示系统已经生成了ssh-key,则不必生成

    2).如果需要重新生成ssh-key,所有的提示按enter键即可,也可以根据自己的需要输入自己的选项

    3).注意提示保存ssh-key的存放目

    4).完成以后进入到保存ssh-key的目录, 就可以看到id_rsaid_rsa.pub文件

  3、把公钥的内容追加拷贝到服务器上登录用户的家目录下的.ssh目录下的authorized_keys 文件(具体将公钥追加拷贝到那个文件, 根据ssh的配置文件的实际配置而定)

  4systemctl restart sshd.service  # 重启ssh服务


再次使用ssh远程连接服务器, 发现已不需要输入密码进行验证

 

注意: 如果使用ssh进行远程登录时 使用了sudo 超级管理员权限, 那么私钥就是当前服务器的root用户的私钥, 所以,也就是说需要把当前服务器root用户的公钥上传到目标服务器,才可以使用 sudo 超级管理员权限, 否则仍然需要输入密码(如果开启了允许输入密码进行身份验证)

 

原文地址:https://www.cnblogs.com/lowmanisbusy/p/11166022.html