如何将这两个命令减少为一个?我正在从客户端连接到 x11vnc 服务器,下面的两个命令已经可以工作。我只想一步一步完成:
第一个命令:
ssh -fNL 5901:localhost:5678 -i ~/.ssh/some_id_rsa [email protected]
第二:
vncviewer localhost:5901
从阅读手册页来看,-via 选项似乎可以做到这一点。不幸的是,手册页让我非常困惑。作为参考(不是我理解的),这是我的手册页所说的:
-via gateway
Automatically create encrypted TCP tunnel to the gateway machine before con‐
nection, connect to the host through that tunnel (TightVNC-specific). By
default, this option invokes SSH local port forwarding, assuming that SSH
client binary can be accessed as /usr/bin/ssh. Note that when using the -via
option, the host machine name should be specified as known to the gateway
machine, e.g. "localhost" denotes the gateway, not the machine where
vncviewer was launched. The environment variable VNC_VIA_CMD can override
the default tunnel command of
/usr/bin/ssh -f -L "$L":"$H":"$R" "$G" sleep 20. The tunnel command is exe‐
cuted with the environment variables L, H, R, and G taken the values of the
local port number, the remote host, the port number on the remote host, and
the gateway machine respectively.
答案1
这就是手册页想要表达的内容。我有以下设置。
vncviewer .-,( ),-.
__ _ .-( )-. gateway vncserver
[__]|=| ---->( internet )-------> __________ ------> ____ __
/::/|_| '-( ).-' [_...__...°] | | |==|
'-.( ).-' |____| | |
/::::/ |__|
笔记:上图是使用完成的ASCII。
它vncviewer
正在从我的笔记本电脑上运行。我可以从我的笔记本电脑运行以下命令并连接到vncserver
路由器后面的命令:
$ vncviewer vncserver_host:0 -via mygateway.mydom.com
这将立即将我连接到vncserver
.此命令显示在我的笔记本电脑上,有助于显示手册页试图解释的内容:
/usr/bin/ssh -f -L 5599:vncserver_host:5900 mygateway.mydom.com sleep 20
vncviewer
这是使用开关时自动构建的命令-via gateway
。
包括ssh
配置
您可以使用该~/.ssh/config
文件并将条目放入该文件中,如下所示:
Host *
IdentityFile ~/.ssh/id_dsa
或者您可以像这样定位特定主机:
Host mygateway
User sam
HostName mygateway.mydom.com
IdentityFile ~/.ssh/someother_id_rsa
Host
这将允许您像这样利用此文件中的条目:
$ vncviewer vncserver_host:0 -via mygateway