web-dev-qa-db-ja.com

1つのステップでSSH経由のクライアントVNC接続を確立する(たとえば、-viaオプションを使用)

これらの2つのコマンドを1つに減らすにはどうすればよいですか?クライアントからx11vncサーバーに接続していますが、以下の2つのコマンドはすでに機能しています。私はそれを1つのステップでやりたいだけです:

最初のコマンド:

ssh -fNL 5901:localhost:5678 -i ~/.ssh/some_id_rsa [email protected]

そして2番目:

vncviewer localhost:5901

Manページを読むと、-viaオプションでそれができるようです。残念ながら、manページは私を非常に混乱させます。参考までに(私が理解しているわけではありませんが)、これが私のマニュアルページの内容です。

   -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.
3
MountainX

これは、manページが言おうとしていることです。私は次の設定をしています。

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

注:上記の図は asciio を使用して作成されました。

vncviewerは私のラップトップから実行されています。私のラップトップから、次のコマンドを実行して、ルーターの背後にあるvncserverに接続できます。

$ vncviewer vncserver_Host:0 -via mygateway.mydom.com

これにより、すぐにvncserverに接続されます。このコマンドは私のラップトップに表示され、manページが説明しようとしていることを示すのに役立ちます。

/usr/bin/ssh -f -L 5599:vncserver_Host:5900 mygateway.mydom.com sleep 20

これは、-via gatewayスイッチを使用したときにvncviewerが自動的に作成するコマンドです。

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
4
slm