我在Windows XP上使用cygrunsrv和autossh来创建服务,该服务构建到远程服务器的隧道,但我也想创建从远程服务器到另一服务器的另一隧道。
我可以通过以下命令行来实现:
autossh -M 5432 serverA -t 'autossh -M 4321 serverB -N'
但是当我想通过cygrunsrv在cygwin中进行设置以使其作为服务工作时:
cygrunsrv -I TUNNEL -p /usr/bin/autossh -a "-M 5432 serverA -t 'autossh -M 4321 serverB -N'" -e AUTOSSH_NTSERVICE=yes -e AUTOSSH_POLL=20 -e AUTOSSH_GATETIME=30
它没有完全正常工作。该服务正在正确创建到ServerA的隧道,但没有将autossh命令“autossh -M 4321 serverB -N”发送到ServerA。
我试图转义报价,但是我的所有努力没有任何作用,并且在autossh日志中没有看到发送任何命令。
我认为问题与不是通过cygrunsrv创建的伪终端有关。
我想知道是否有一种方法可以修复cygrunsrv命令行以使其正常工作,或者我应该考虑使用其他方法吗?
最佳答案
Lionel,请尝试从cygrunsrv调用中删除AUTOSSH_NTSERVICE=yes
。正如/usr/share/doc/autossh/README.Cygwin解释的那样:
尽管上面说了什么,似乎您有充分的理由在服务的ssh调用中不要-N
(它抑制了命令的执行)。删除AUTOSSH_NTSERVICE=yes
应该注意这一点。它还有其他一些小缺点,但是您可以忍受它。详细阅读README.Cygwin的其余部分。
关于ssh - Cygrunsrv和autossh:一种在命令行中嵌入远程命令的方法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8679083/