通过SSH转发端口

情景

存在一个Linux服务器,只开放22端口。通过ssh转发将服务转发到中转服务器。

命令

ssh -L 0.0.0.0:8888:localhost:80 liuyang@172.24.52.208 -p 22
nohup sudo autossh -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -N -L 0.0.0.0:1022:localhost:22 test@172.22.9.250 -p 22 -i /home/ylifs/.ssh/id_ed25519 > /dev/null 2>&1 &

前面是中转服务器的ip+端口
后面是目标服务器的ip+端口

Auto SSH

指定密钥

sudo autossh -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -N -L 0.0.0.0:1022:localhost:22 test@172.22.9.250 -p 22 -i /home/ylifs/.ssh/id_ed25519

指定密钥就是-i /home/ylifs/.ssh/id_ed25519
注意的是这里是客户端用私钥。

改为系统服务

sudo nano /etc/systemd/system/autossh-tunnel.service
[Unit]
Description=AutoSSH Tunnel for Port 1022->22
After=network.target
[Service]
User=test  # 指定运行用户(避免sudo)
ExecStart=/usr/bin/autossh -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -N -L 0.0.0.0:1022:localhost:22 test@172.22.9.250 -p 22 -i /home/ylifs/.ssh/id_ed25519
Restart=always
RestartSec=10  # 失败后10秒重试
StandardOutput=syslog  # 日志输出到syslog
StandardError=syslog

[Install]
WantedBy=multi-user.target

开机自启

sudo systemctl daemon-reload
sudo systemctl start autossh-tunnel
sudo systemctl enable autossh-tunnel  # 开机自启

查看日志

sudo journalctl -u autossh-tunnel -f  # 实时日志

停止并禁用服务

sudo systemctl stop autossh-tunnel      # 停止服务
sudo systemctl disable autossh-tunnel   # 禁用开机自启

删除文件

sudo rm /etc/systemd/system/autossh-tunnel.service
posted @ 2025-11-18 15:37  ylifs  阅读(13)  评论(0)    收藏  举报