linux ssh 增加访问端口

embedded/2025/1/21 17:59:22/

在 Linux 系统中,SSH 默认使用 22 端口。为了增强安全性或满足特定需求,可以通过修改 SSH 配置来增加或更改 SSH 访问端口。以下是具体步骤:


1. 修改 SSH 配置文件

SSH 的配置文件通常位于 /etc/ssh/sshd_config。使用文本编辑器(如 vimnano)打开该文件:

sudo vim /etc/ssh/sshd_config

2. 增加或修改端口

在配置文件中找到 Port 配置项。如果不存在,可以手动添加。例如,增加一个额外的端口 2222

Port 22
Port 2222
  • 可以同时指定多个端口,SSH 会监听所有指定的端口。
  • 如果需要完全替换默认端口,可以将 Port 22 注释掉或删除,只保留新端口。

3. 保存并退出编辑器

  • vim 中,按 Esc,然后输入 :wq 保存并退出。
  • nano 中,按 Ctrl + O 保存,然后按 Ctrl + X 退出。

4. 更新防火墙规则

如果系统启用了防火墙(如 ufwfirewalld),需要允许新端口通过防火墙。

使用 ufw(Ubuntu/Debian)

sudo ufw allow 2222/tcp
sudo ufw reload

使用 firewalld(CentOS/RHEL)

sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload

使用 iptables

sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
sudo service iptables save

5. 重启 SSH 服务

修改配置后,需要重启 SSH 服务使更改生效:

sudo systemctl restart sshd

6. 测试新端口

使用 ssh 命令测试新端口是否生效:

ssh username@your_server_ip -p 2222
  • username 替换为你的用户名,your_server_ip 替换为服务器 IP 地址。
  • 如果连接成功,说明新端口配置正确。

7. (可选)禁用默认端口

如果希望完全禁用默认的 22 端口,可以在 SSH 配置文件中注释掉或删除 Port 22,然后重启 SSH 服务。


注意事项

  1. 备份配置文件:在修改前,建议备份 SSH 配置文件:
    sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
    
  2. 确保新端口未被占用:使用以下命令检查端口是否已被占用:
    sudo netstat -tuln | grep 2222
    
  3. 防止锁定自己:在测试新端口之前,确保当前 SSH 会话不会断开,或者通过其他方式(如控制台)访问服务器,以防配置错误导致无法连接。

通过以上步骤,你可以成功增加或更改 SSH 访问端口,提升系统的安全性。

遇到问题1

修改ssh端口后,启动失败失败,报错error: Bind to port 2222 on :: failed: Permission denied.

(base) [root@node-01 wangzy-p]# systemctl status sshdsshd.service - OpenSSH server daemonLoaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)Active: active (running) since Tue 2025-01-21 00:29:06 CST; 1s agoDocs: man:sshd(8)man:sshd_config(5)Main PID: 147506 (sshd)Tasks: 1Memory: 1.1MCGroup: /system.slice/sshd.service└─147506 /usr/sbin/sshd -DJan 21 00:29:06 node-01 systemd[1]: Starting OpenSSH server daemon...
Jan 21 00:29:06 node-01 sshd[147506]: /etc/ssh/sshd_config line 10: Deprecated option RSA...ion
Jan 21 00:29:06 node-01 sshd[147506]: Could not load host key: /etc/ssh/ssh_host_dsa_key
Jan 21 00:29:06 node-01 sshd[147506]: error: Bind to port 2222 on 0.0.0.0 failed: Permis...ed.
Jan 21 00:29:06 node-01 sshd[147506]: error: Bind to port 2222 on :: failed: Permission ...ed.
Jan 21 00:29:06 node-01 sshd[147506]: Server listening on 0.0.0.0 port 22.

解决方案:

iptables -F
setenforce 0
systemctl restart sshd

这三行代码分别用于 清空防火墙规则关闭 SELinux 的强制模式重启 SSH 服务。以下是每行代码的详细解释:


  1. iptables -F
  • 作用:清空 iptables 的所有防火墙规则。
  • 解释
    • iptables 是 Linux 系统中用于管理网络流量(如防火墙规则)的工具。
    • -F 参数表示 flush,即清空指定链(chain)中的所有规则。如果不指定链,默认清空所有链(如 INPUTOUTPUTFORWARD 等)。
    • 执行后,所有自定义的防火墙规则将被删除,系统将恢复到默认的允许所有流量的状态。
  • 使用场景
    • 当需要快速清除所有防火墙规则时。
    • 在调试网络问题时,排除防火墙规则的影响。

  1. setenforce 0
  • 作用:将 SELinux 的模式设置为 宽松模式(Permissive Mode)
  • 解释
    • SELinux(Security-Enhanced Linux)是 Linux 的一个安全模块,用于提供更严格的访问控制。
    • SELinux 有三种模式:
      1. Enforcing:强制模式,所有违反策略的操作都会被阻止并记录。
      2. Permissive:宽松模式,违反策略的操作不会被阻止,但会记录日志。
      3. Disabled:完全禁用 SELinux。
    • setenforce 0 将 SELinux 设置为宽松模式,允许所有操作,但仍会记录日志。
  • 使用场景
    • 当 SELinux 阻止某些操作时,可以临时设置为宽松模式以排查问题。
    • 在调试或测试环境中,避免 SELinux 的严格限制。

  1. systemctl restart sshd
  • 作用:重启 SSH 服务。
  • 解释
    • systemctl 是 Linux 系统中用于管理系统服务的命令。
    • sshd 是 SSH 服务的名称,负责处理远程登录请求。
    • restart 参数表示重启服务(先停止,再启动)。
    • 执行后,SSH 服务会重新加载配置文件并重新启动。
  • 使用场景
    • 修改 SSH 配置文件(如 /etc/ssh/sshd_config)后,需要重启服务使更改生效。
    • 当 SSH 服务出现问题时,重启服务以恢复功能。

注意:

  1. iptables -F 会清空所有防火墙规则,可能导致系统暴露在网络中。建议在执行前备份规则,或确保系统处于安全环境中。
  2. setenforce 0 是临时修改 SELinux 模式,重启系统后会恢复为原模式。如果需要永久修改,可以编辑 /etc/selinux/config 文件。
  3. systemctl restart sshd 会中断当前的 SSH 连接。如果正在通过 SSH 操作服务器,建议使用 systemctl reload sshd 重新加载配置而不中断服务。

通过这三行代码,可以快速清空防火墙规则、关闭 SELinux 的强制模式并重启 SSH 服务,适用于调试或配置系统时的常见操作。


http://www.ppmy.cn/embedded/155837.html

相关文章

EXCEL+Python搞定数据处理(第一部分:Python入门-第2章:开发环境)

一、Anaconda Python发行版 1.安装 在清华大学镜像网站下下载软件 Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirrorhttps://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/?CM&ODhttps://mirrors.tuna.tsinghua.edu.cn/anaconda…

Linux下PostgreSQL-12.0安装部署详细步骤

一、安装环境 postgresql-12.0 CentOS-7.6 注意:确认linux系统可以正常连接网络,因为在后面需要添加依赖包。 二、pg数据库安装包下载 下载地址:PostgreSQL: File Browser 选择要安装的版本进行下载: 三、安装依赖包 在要安…

SparkSQL数据模型综合实践

文章目录 1. 实战概述2. 实战步骤2.1 创建数据集2.2 创建数据模型对象2.2.1 创建常量2.2.2 创建加载数据方法2.2.3 创建过滤年龄方法2.2.4 创建平均薪水方法2.2.5 创建主方法2.2.6 查看完整代码 2.3 运行程序,查看结果 3. 实战小结 1. 实战概述 在本次实战中&#…

使用nginx搭建通用的图片代理服务器,支持http/https/重定向式图片地址

从http切换至https 许多不同ip的图片地址需要统一进行代理 部分图片地址是重定向地址 nginx配置 主站地址:https://192.168.123.100/ 主站nginx配置 server {listen 443 ssl;server_name localhost;#ssl证书ssl_certificate ../ssl/ca.crt; #私钥文件ssl_ce…

【MySQL篇】使用mysqldump导入报错Unknown collation: ‘utf8mb4_0900_ai_ci‘的问题解决

💫《博主介绍》:✨又是一天没白过,我是奈斯,从事IT领域✨ 💫《擅长领域》:✌️擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控;并对SQLserver、NoSQL(…

精通Python (10)

一,基于tkinter模块的GUI GUI是图形用户界面的缩写,图形化的用户界面对使用过计算机的人来说应该都不陌生,在此也无需进行赘述。Python默认的GUI开发模块是tkinter(在Python 3以前的版本中名为Tkinter),从这…

Linux:EXT2文件系统

✨✨所属专栏:Linux✨✨ ✨✨作者主页:嶔某✨✨ 理解硬件 磁盘 磁盘,顾名思义就是用磁性来存储信息的。磁盘是一种永久性存储介质,在计算机中,磁盘几乎是唯一的机械设备。与磁盘相对应的就是内存,但是内存…

final修饰的用法

1、final修饰类 被final修饰的类不可以在被继承。 比如在Java中String就是final修饰的不可以被继承 2、final修饰成员变量 同时final也可以修饰局部变量 final int N5; 3、final修饰静态变量 final修饰静态的成员变量,(在方法中不能定义静态的属性…