Ssh

通過 SSH 一步建立客戶端 VNC 連接(例如,使用 -via 選項)

  • October 23, 2021

如何將這兩個命令減少為一個?我正在從我的客戶端連接到 x11vnc 伺服器,並且下面的兩個命令已經工作。我只希望一步完成:

第一個命令:

ssh -fNL 5901:localhost:5678 -i ~/.ssh/some_id_rsa rocky@example.com

第二:

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.

這就是手冊頁想要表達的意思。我有以下設置。

 vncviewer         .-,(  ),-.    
  __  _         .-(          )-.           gateway           vncserver 
 [__]|=|  ---->(    internet    )-------> __________ ------> ____   __ 
 /::/|_|        '-(          ).-'        [_...__...°]       |    | |==|
                    '-.( ).-'                               |____| |  |
                                                            /::::/ |__|

**注意:**上圖是使用asciio完成的。

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

引用自:https://unix.stackexchange.com/questions/83795