提高服务器安全,使用ssh证书登录服务器

提高服务器安全,使用ssh证书登录服务器

使用密码登录服务器,如果密码过于简单会有一定的安全隐患。可能会被暴力破解。

生产环境的服务器,建议通过证书登录,证书比密码更安全。不容易被破解,而且数据的传输是加密的,可以防止中间人攻击

在本地生成密钥对

在Windows客户端,生成密钥对的方法有很多,ssh客户端可以生成,Git客户端可以生成,安装Openssl可以生成,Jdk的keytools也可以生成。

使用Git客户端生成密钥的(需要本地安装了Git),在CMD控制台执行

ssh-keygen -t rsa 

密钥对会在自己的HOME目录的.ssh文件夹中

image

  • id.rsa 是私钥,千万要保护好
  • ids.rsa.pub 是公钥

服务器配置

编辑ssh配置文件

vim /etc/ssh/sshd_config

修改配置项

PermitRootLogin no
	* 是否禁用ROOT登录(非必须的)

PubkeyAuthentication yes
	* 是否允许证书登录

PasswordAuthentication yes
	* 是否允许使用密码进行登录
    * 可以设置为 no,那就只能用证书登录了

StrictModes no	
	* 是否检查用户`home`或相关档案的权限数据
	* 可能会导致不能登录,设置为: no

AuthorizedKeysFile %h/.ssh/authorized_keys	
	* 指定公钥文件位置

上传公钥到服务器

把公钥内容,写入到 ~/.ssh/authorized_keys 文件中

公钥本身就是个文本文件而已,直接复制,粘贴到 authorized_keys 就可以

如果你需要在多处登录,例如公司一台电脑,家里一台电脑。那么就把它们的公钥都写入这个文件。
一行,一个公钥。

重启ssh服务

确定正确的配置了ssh,以及上传了公钥后才执行

systemctl restart sshd.service