繁体   English   中英

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

[英]How to automate a vnc+ssh solution

我想在我的工作机器上运行一个应用程序(称为firefox)。 问题是我需要做一些复杂的ssh调整来访问它,因为从外部阻止了对机器的访问,并且内部也阻塞了一些端口。 所以我做了以下几点。

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

编辑:为了适应这个:

对,就是那样。 但令人讨厌的是servB - > servC阻塞了端口5900。 - 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM