ssh - Systemd SSH隧道服务失败,而命令在命令行中工作
问题描述
我一直在尝试设置一个 SSH 反向隧道 Systemd 服务,用于自动将我的非公共 IP 计算机公开到 Internet 以进行 SSH。我有两种不同的服务,一种指向我自己的服务器(另一台具有公共 IP 的计算机),它工作正常,另一种尝试使用serveo.net(通过 ssh 客户端的 TCP 隧道免费服务)。我的服务对我自己的服务器运行良好,但对 Serveo 失败。
我的服务定义如下:
[Unit]
Description=Setup a remote tunnel to serveo.net
Wants=network-online.target
After=network-online.target
StartLimitIntervalSec=0
[Service]
User=ssh-tunnel
Group=ssh-tunnel
ExecStart=/usr/bin/ssh -T -o ServerAliveInterval=60 -i /var/lib/ssh-tunnel/id_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ExitOnForwardFailure=yes -R myalias:58227:localhost:22 serveo.net
Restart=always
RestartSec=60
[Install]
WantedBy=multi-user.target
在终端中执行相同的命令时,它可以正常工作:
sudo -u ssh-tunnel -g ssh-tunnel /usr/bin/ssh -T -o ServerAliveInterval=60 -i /var/lib/ssh-tunnel/id_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ExitOnForwardFailure=yes -R myalias:58227:localhost:22 serveo.net
我可以看到我自己的服务器和 Serveo 之间的唯一行为差异是 Serveo 具有一种交互式命令界面。
有人对 Systemd 服务有类似的问题吗?
解决方案
Serveo 需要一个交互式外壳。你想添加
[服务] StandardInput=tty-force
强制使用与 serveo 配置一起使用的 shell
推荐阅读
- drools - 可以将 Activiti 与 Drools 规则引擎集成
- excel - 在 Excel 列中查找匹配值
- python - Python:与 --data-urlencode 等效的 python 的 requests.posts 命令是什么?
- html - 为什么基本悬停颜色不适用
- powershell - Microsoft Azure Blob 存储更新
- vue-cli - 如何将 `vue ui` 绑定到另一个 IP?(vue-cli 3)
- r - 在R中提取字符串
- makefile - 关于make文件语法理解的初学者问题
- vba - 标记列中给定值的连续值。VBA
- javascript - React Native TypeError:网络请求失败