我已经设置了远程/反向隧道cloud server <- in-house server
并且可以http://cloudserver.com:8001
成功访问。
在内部服务器中,我手动执行以下命令,它成功运行
/usr/bin/ssh -N -vvv -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -R 8001:127.0.0.1:80 [email protected]
当我将其设置为系统服务时(带 GUI 的 Ubuntu 服务器)服务似乎正在运行,但隧道尚未建立。
我的parking-tunnels.service
[Unit]
Description=Parking Tunnels
After=network.target
[Service]
Type=simple
Restart=always
RestartSec=15
ExecStart=/usr/bin/ssh -N -vvv -i /home/some-user/.ssh/mykey -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -R 8001:127.0.0.1:80 [email protected]
User=some-user
Group=some-group
StandardInput=tty-force
[Install]
WantedBy=multi-user.target
journalctl -u parking-tunnels.service
Apr 21 18:05:06 dcs2 systemd[1]: Stopping Parking Tunnels...
Apr 21 18:05:06 dcs2 systemd[1]: parking-tunnels.service: Succeeded.
Apr 21 18:05:06 dcs2 systemd[1]: Stopped Parking Tunnels.
Apr 21 18:05:06 dcs2 systemd[1]: Started Parking Tunnels.
Apr 21 18:06:13 dcs2 systemd[1]: Stopping Parking Tunnels...
Apr 21 18:06:13 dcs2 systemd[1]: parking-tunnels.service: Succeeded.
Apr 21 18:06:13 dcs2 systemd[1]: Stopped Parking Tunnels.
Apr 21 18:06:13 dcs2 systemd[1]: Started Parking Tunnels.
- 我还尝试过使用
User=
和Group=
不使用 ssh 选项-f
-t
-T
-g
。 - 我发现这
StandardInput=tty-force
是必需的,否则服务无法启动。 - 也尝试过
ssh -f
,Type=forking
但服务甚至无法加载。 - 我没有忘记奔跑
sudo systemctl daemon-reload
- 云服务器有
GatewayPorts yes
.我在云服务器中有防火墙,但在修复此问题之前我已禁用它。 - ssh 到云服务器不需要凭据,因为我已经共享了密钥。当询问手动执行密码时,我不知道服务是否有问题。
当服务运行时,我可以看到它,ps aux | grep ssh
但隧道尚未建立。甚至从 ps 复制/粘贴命令也可以成功运行。
作为服务运行时出现什么问题?
更新
StandardInput=tty-force
正在将所有日志从ssh -vvv
另一个 tty 传输,这就是没有显示日志的原因。
也仅ssh -N
是必需的。
我可以验证隧道,因为客户端(我的本地电脑)的防火墙已启用。
抱歉这个帖子。 感谢大家的帮助。