我的配置:
debian 10.9
4.19.0-19-amd64
OpenSSH_7.9p1 Debian-10+deb10u2, OpenSSL 1.1.1d 10 Sep 2019
autossh 1.4g
GNU bash, 5.0.3(1)-release (x86_64-pc-linux-gnu)
我开始一项服务/etc/systemd/system/myshh.service
ExecStart=/home/user/ssh_run
开始我的脚本ssh_run
这只是我尝试过的 SSH 和 AUTOSSH 的众多示例中的两个
ssh_运行脚本
#!/bin/bash
ssh -f -NT -o "ServerAliveInteval=30" -o "ServerAliveCountMax=2" \
-R 5555:localhost:443 -l [USER] [IP] -p [PORT] -i [KEY-WITHOUT-PASSWORD]
EXECUTE NEXT COMMAND
或者
#!/bin/bash
/usr/bin/autossh -f -NT -o "ExitOnForwardFailure=yes" \
-R 5555:localhost:443 -l [USER] [IP] -p [PORT] -i [KEY-WITHOUT-PASSWORD]
EXECUTE NEXT COMMAND
当我从 shell 中单独执行命令时,它可以工作
ssh -f -NT ......
当我只执行脚本时它起作用
./ssh_run
当我启动服务但它不起作用
/etc/systemd/system/myshh.service
时-f
所有 3 个命令均不执行接下来的命令
问题:
当我启动服务时/etc/systemd/system/myshh.service
,使用脚本./ssh_run
并用于-f
后台,现在执行下一个命令,但是服务退出,状态代码为 0,但没有 ssh 或 autosshps aux | grep [s]sh
或ps aux | grep [a]utossh
systemctl status myshh.service
我也检查了没有grep
错误journalctl
服务停止或重新启动,结果相同,我尝试使用和不使用Restart=30
或在服务中Restart=always
Environment="AUTOSSH_GATETIME=0"
我阅读了所有堆栈站点的大部分帖子,并尝试了搜索引擎,没有找到解决方案,我尝试,,(command)
....没有结果...exec
bash -c
现在我的问题/疑问:
我如何在后台的 bash 脚本中执行 ssh/autossh 远程端口转发命令,即从服务启动,以执行下一个命令。
答案1
如果有人遇到同样的问题,这篇文章现在可以拯救我的日子:
添加Type=forking
到我的服务文件中/etc/systemd/system/myshh.service
。
现在我可以在 bash 脚本中执行 ssh/autossh 远程端口转发命令以及-f
后台执行选项,即从服务启动,以执行脚本中的下一个命令/更多命令。
包含相关信息的帖子的其他链接: