提高安全性VPS修改SSH端口及从密码改为密钥登录

VPS值
2023-12-01 / 0 评论 / 156 阅读 / 正在检测是否收录...

6005d0a469ed9d8392dc5a3334f2bffe.jpeg

一、修改端口

  1. Debian、Ubuntu等系统比较简单
    (1)输入下列命令

    nano /etc/ssh/sshd_config

在修改端口之前,先添加一个端口,找到 Port 进行修改
将Port 22 去掉#
并添加新端口
Port 10022
修改之后,进行保存
(2)重启
systemctl restart sshd

2.Centos稍微复杂点
(1)输入下列命令

nano /etc/ssh/sshd_config

在修改端口之前,先添加一个端口,找到 Port 进行修改
将Port 22 去掉#
并添加新端口
Port 10022
修改之后,进行保存

(2) 向防火墙中添加修改的端口
假设端口修改为12345,向防火墙中添加端口的命令为:

firewall-cmd --zone=public --add-port=12345/tcp --permanent

reaload 防火墙规则:

firewall-cmd --reload

查看端口是否添加成功:

 firewall-cmd --zone=public --query-port=17186/tcp

注意: 这里的设置是在 CentOS 7 版本下的操作 , 低于 CentOS 7的版本不支持
防火墙如果未启用,可通过下列命令打开:

systemctl start firewalld

查看防火墙状态:

systemctl status firewalld

(3)向SELinux中添加修改的SSH端口
在向SELinux中添加端口之前需要先安装SELinux的管理工具 semanage (如果已经安装了就直接到下一步) :

yum provides semanage

在这里我们看到运行 semanage 需要先安装其依赖工具包 policycoreutils-python :

yum install policycoreutils-python

安装好之后,可以直接使用 semanage 命令:
查询当前 ssh 服务端口:

 semanage port -l | grep ssh

向 SELinux 中添加 ssh 端口:

semanage port -a -t ssh_port_t -p tcp 12345

验证 ssh 端口是否添加成功:

semanage port -l | grep ssh

添加成功之后就可以重启 ssh 服务了:

serivce sshd restart

————————

二、改用密钥登录
以Debian为例:
1.首先打开xshell等工具创建密钥,如xshell->工具(T)->新建用户密钥生成向导(W)
密钥类型: ECDSA 密钥长度选择 521 位->下一步
再次下一步->名称可修改,这里默认 id_ecdsa_521 接着输入给密钥设的密码->下一步
保存为文件,默认在..Xshell\Sessions文件夹中,文件名 id_ecdsa_521.pub

2.上传以及测试
cd /root/.ssh/

  • 安装上传工具
    apt-get install lrzsz
  • 上传
    rz -be
  • 查看是否上传成功
    ls
    authorized_keys id_ecdsa_521.pub
  • 如果没有authorized_keys 需要先创建

    touch authorized_keys && chmod 700 /root/.ssh/ && chmod 600 /root/.ssh/authorized_keys 
    cat id_ecdsa_521.pub >> authorized_keys && chmod 600 authorized_keys
  • 如果碰到.ssh文件夹不存在
ssh localhost -p 21755
  • 如果没改过端口 就是ssh localhost
输入yes
输入root密码
  • 如果提示密钥没在电脑上注册

root目录下键入以下命令

chmod 700 .ssh
cd .ssh
chmod 600 *
service sshd restart

断开ssh,重新连接,使用密钥登录

3.禁止密码登录

注意:验证了密钥能正常登陆之后,再执行以下步骤(避免无法远程连接服务器)

  • 这三条可以一起复制在xshell中执行

    sed -i 's/^#\?\(PubkeyAuthentication\s*\).*$/\1yes/' /etc/ssh/sshd_config;
    sed -i 's/^#\?\(PasswordAuthentication\s*\).*$/\1no/' /etc/ssh/sshd_config;
    sed -i 's/^#\?\(ChallengeResponseAuthentication\s*\).*$/\1no/' /etc/ssh/sshd_config
  • Restart SSH service

    systemctl restart sshd
  • 如果禁止密码登录失效(常见于ubuntu)

    删除50-cloud-init.conf文件或者在50-cloud-init.conf配置文件中配置禁止密码登陆参数

    vim /etc/ssh/sshd_config.d/50-cloud-init.conf 

(1)修改为

PasswordAuthentication no
PubkeyAuthentication yes

(2)保存退出 然后重启SSH

systemctl restart ssh

完毕。

0

评论 (0)

取消