记录下Linux下ssh服务常用的配置修改,想到什么写什么,不定期更新文章, 无特殊说明的话都是基于Red Hat系的Linux发行版。

ssh_config与sshd_config

ssh_config与sshd_config,存在于“/etc/ssh”目录下的两个SSH服务的配置文件。

ssh_config: 作为ssh客户端主动发起连接,访问其他服务器的ssh服务器时使用的配置文件。

sshd_config: 作为ssh服务端被连接,被其他ssh客户端访问时服务调用的配置文件。

ssh端口号修改

常见于云端服务器的需求,更改ssh端口为高位随机端口,防止互联网非法攻击。

在sshd_config文件中的“#Port 22”下加一行“Port XXXX”,然后重启sshd服务。若启用了防火墙则还放通需要放通的端口。 不过我个人喜欢修改防火墙上ssh规则对应的端口,Linux防火墙是默认放行了ssh服务的,不过墙上的ssh默认是22端口, 我们可以通过命令修改它。

# 查看防火墙上当前放行的服务与端口,默认servies中会包含“ssh”
firewall-cmd --list-all

# 查看ssh规则的端口,默认情况下在ports端口中应该是22
firewall-cmd --info-service=ssh

# 修改ssh规则中定义的端口号,以2222为例
firewall-cmd --service=ssh --add-port=2222/tcp --permanent
firewall-cmd --service=ssh --remove-port=22/tcp --permanent
firewall-cmd --reload

感觉,这里应该拿到防火墙的内容去🤔

ssh拒绝root密码认证

常见于云端服务器的需求,注意不是禁止root使用密码登录,而是认证,使用root用户尝试ssh登录时, 会直接拒绝密码输入,关闭当前会话。在sshd_config文件的末行中加入以下内容,随后重启sshd服务。

# 匹配root用户,密码认证模式拒绝,保留缩进表示层级关系。
Match User root
    PasswordAuthentication no

tips:经常看配置文件的同志应该都知道,“#XXXXX”表示配置默认值,“# XXXXXX”表示普通的注释信息🫡