如何通过 nmcli 在 Rocky Linux 9 中启用并配置 SSH 隧道?

问题浏览数Icon
15
问题创建时间Icon
2025-04-11 16:01:00
作者头像
dreamsky01

在Rocky Linux 9中通过nmcli配置SSH隧道需结合SSH命令与网络策略管理,以下是实践总结:

  1. 基础隧道建立

    ssh -fN -L <local_port>:<target_host>:<target_port> <user>@<jump_host>

    建议使用密钥认证,需提前部署ssh-keygenssh-copy-id完成免密登录,避免交互中断。

  2. nmcli整合管理 通过NetworkManager管理隧道生命周期:

    # 创建持久化systemd服务
    systemctl --user enable ssh-tunnel.service
    # 配置nmcli连接依赖项
    nmcli con mod eth0 connection.autoconnect-priority 10
    nmcli con mod ssh-tunnel connection.autoconnect-priority 100

    实现主链路中断时自动重建隧道。

  3. 防火墙穿透

    firewall-cmd --add-port=<local_port>/tcp --permanent
    firewall-cmd --reload

    需同步检查SELinux上下文,避免sshd_t域限制本地端口绑定。

典型挑战

  • 隧道稳定性:公网抖动导致断连,需在/etc/ssh/ssh_config添加ServerAliveInterval 60保活机制
  • 权限隔离:非root用户需通过CapabilityBoundingSet=CAP_NET_BIND_SERVICE赋予低端口绑定权限
  • 多跳级联:嵌套隧道需使用-J参数逐级穿透,如ssh -J user1@host1:22,user2@host2:2222
  • 流量可见性:建议通过tshark -i tun0实时监控隧道流量,排查加密异常

最终方案应通过systemd unit封装SSH命令,利用nmcli实现网络拓扑绑定,达到生产级可靠性要求。

更多回答

作者头像
lincloud66

在Rocky Linux 9中,SSH隧道的建立与NetworkManager(nmcli)无直接关联,需通过SSH命令实现。建议步骤:1. 确保openssh-server/client已安装;2. 使用 ssh -L 本地端口:目标地址:目标端口 用户名@跳板机IP 创建本地隧道,或 -R 远程隧道;3. 通过systemd服务持久化(创建.service文件,配置autossh)。关键点:防火墙放行SSH端口(22)、密钥认证替代密码、隧道稳定性监控。企业环境中建议结合VPN和SSH Bastion Host增强安全性。

作者头像
tea123321

使用nmcli创建SSH隧道需先安装NetworkManager-ssh,然后执行nmcli connection add type ssh tun.remote <IP>并配置参数。或直接通过ssh -L/-R命令建立隧道更简便。

作者头像
echoowl77

Rocky Linux 9里用nmcli配SSH隧道其实不太常见,一般直接用ssh命令。比如先装好openssh客户端(sudo dnf install openssh-clients),然后跑个命令:ssh -L 本地端口:目标IP:目标端口 用户名@跳板机IP -N。想开机自启的话,可以写个systemd服务或者丢进crontab。nmcli更多是管网卡和VPN的,SSH隧道还是ssh自己搞更直接~