gpt4 book ai didi

ssh - Cygrunsrv 和 autossh : A way to embedd remote commands in the command line?

转载 作者:行者123 更新时间:2023-12-02 13:53:00 24 4
gpt4 key购买 nike

我在 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 的隧道,但它没有向 ServerA 发送 autossh 命令“autossh -M 4321 serverB -N”。
我试图逃避引用,但我所有的努力都没有产生任何影响,而且我没有看到 autossh 日志中发送了任何命令。

我认为问题与不是通过 cygrunsrv 创建的伪终端有关。

我想知道是否有办法修复我的 cygrunsrv 命令行以使其正常工作,还是应该考虑采用不同的方法?

最佳答案

Lionel,请尝试删除 AUTOSSH_NTSERVICE=yes来自 cygrunsrv 调用。正如/usr/share/doc/autossh/README.Cygwin 解释的那样:

Setting AUTOSSH_NTSERVICE=yes in the calling environment ... change[s] autossh's behavior in three useful ways:

(1) Add an -N flag to each invocation of ssh, thus disabling shell access. The idea is that if you're running autossh as a system service, you're using it to forward ports; it wouldn't make sense to run a shell session as a system service. (If you think this reasoning is wrong, please send a bug report to the author or Cygwin maintainer, and tell us what you're trying to do.)



尽管上面说了这些,但您似乎有充分的理由不想要 -N (抑制命令执行)在您的服务的 ssh 调用中。删除 AUTOSSH_NTSERVICE=yes应该照顾它。它还会有一些其他的小缺点,但您可能可以忍受它。有关详细信息,请阅读 README.Cygwin 的其余部分。

关于ssh - Cygrunsrv 和 autossh : A way to embedd remote commands in the command line?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8679083/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com