gpt4 book ai didi

linux - 如何自动化 vnc+ssh 解决方案

转载 作者:太空宇宙 更新时间:2023-11-04 09:46:12 25 4
gpt4 key购买 nike

我想在我的工作机器上运行一个应用程序(称之为 firefox)。问题是我需要做一些复杂的 ssh tunelling 才能访问它,因为从外部阻止了对机器的访问,一些端口也在内部被阻止。所以我做了以下事情。

ssh -v -L 1200:serverC:22 user@serverB (locally)
ssh -v -L 5900:127.0.0.1:5900 -p 1200 user_from_serverC@127.0.0.1 (locally)
x11vnc -safer -localhost -nopw -once -display :0 (on serverC)
vinagre localhost::5900 (locally)

然后我在打开的 vnc 窗口中运行 firefox(比方说),一切正常。

但是我想要一个 bash 脚本来为我做这件事。我怎样才能使它自动化?

有两个问题。

  1. 我需要在上面的每个 ssh 之后保持登录状态,以便隧道工作,所以一个简单的 bash 脚本在第一步之后就停止了。
  2. 我不知道如何让应用程序在 vnc 窗口中自动运行。

理想情况下,我只需在本地输入“./remote-firefox”(例如)即可让这一切发生。

最佳答案

尝试:

x11vnc -safer -localhost -nopw -once -display :0 #Run manually on system_C

& 在本地系统上,

ssh -t -L 5902:localhost:5901 user_B@server_B 'ssh -t -L 5901:localhost:5900 user_C@server_C' &
#Note: Enable password-less (key based) authentication from "your_pc -> servB" & "servB -> servC"

vncviewer localhost:2 #Run on local system

注意:如果命令失败,请尝试更改端口号。在此示例中,我尝试按如下方式对其进行隧道传输:

your_PC:5902 <-> server_B:5901 <-> server_C:5900

我没有测试这个 2 级链(我不知道 x11vnc 的 -display 参数是否可以跨 ssh,但我认为应该可以。):

#Run both lines on local system
ssh -t -L 5902:localhost:5901 user_B@server_B "ssh -t -L 5901:localhost:5900 user_C@server_C 'x11vnc -safer -localhost -nopw -once -display :0'" &
vncviewer localhost:2

编辑:为了适应这个:

yes that's it. But annoyingly servB -> servC has port 5900 blocked. – Anush

#Run both lines on local system. This may be overhead, but should work.
ssh -t -L 5902:localhost:5901 user_B@server_B "ssh -t -L 5901:localhost:1200 user_C@server_C 'ssh localhost -L 1200:localhost:5900 & x11vnc -safer -localhost -nopw -once -display :0'" &
vncviewer localhost:2

关于linux - 如何自动化 vnc+ssh 解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16077752/

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