情景
存在一个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