とりあえずの記録

はじめは同学科の人向けのナレッジまとめでした

SSH踏み台サーバ経由のVNC接続

自宅のMac miniにて,Chrome Remote Desktopがうまく動いてくれないのでVNCが効くようにした.

Host AVNCで接続したい端末.今回はmacOS
Host B:HostAに接続可能なSSHサーバ(踏み台).今回はRHEL(Linux).
Host C:HostBに接続可能なクライアント端末.今回はWindows

とする.

Host A:VNCサーバ・SSHサーバを有効に

Macの場合,[システム環境設定]→[共有]の中の

  • [画面共有]
  • [画面共有]→[VNC使用者が画面を操作することを許可]
  • [画面共有]→[VNC使用者が画面を操作することを許可]→[パスワード]を設定
  • [リモートログイン]
  • [リモートログイン]→[リモートユーザのフルディスクアクセスを許可]

にチェックを入れる.
(本件とは関係ないが,ここでAirPlayレシーバーにもチェックを入れておくとiPhone/iPadなどからMacの画面にミラーリングできるようになる.)

また,[システム環境設定]→[省エネルギー]の中の

  • [ネットワークアクセスによるスリープ解除]

にチェックを入れて,スリープに入っても自動で復帰してくれるようにしておく.

Host B:特にすることはない

外からSSHでログインできる & Host AにSSHでログインできるならば問題ない.
Host A宛の公開鍵やConfigなどは生成しなくてよい.

Host C:VNCSSH接続設定

SSH設定(踏み台,ポートフォワード)

ssh-keygen -t ecdsa -b 521 などにより,
 秘密鍵 ~/.ssh/id_ecdsa
 公開鍵 ~/.ssh/id_ecdsa.pub
が存在しているとする.

このとき,~/.ssh/configに以下の通り記述する.
コメントに沿って,適宜値を変更する必要がある.

# ここから
Host *

    ServerAliveInterval 60
    ServerAliveCountMax 10
   
Host host_A
    # host_A内のユーザ名を指定
    User hoge
    # host_C内にある,host_Aとの認証に使用する秘密鍵を指定
    IdentityFile ~/.ssh/id_ecdsa
    # 踏み台設定.後ろ2つは,host_Bから見たhost_AのIPアドレスorFQDN,SSHのポート番号.
    ProxyCommand ssh host_B nc -w 10 192.168.0.10 22
    # ポートフォワード.host_Aの5900ポートをhost_Cの5901として使用できるようにしている.
    LocalForward 5901 192.168.0.10:5900
   
Host host_B
    # host_B内のユーザ名を指定
    User huga
    # host_C内にある,host_Bとの認証に使用する秘密鍵を指定
    IdentityFile ~/.ssh/id_ecdsa
    # host_BのIPアドレスorFQDNを指定
    HostName 203.0.113.14
    # sshのポート番号
    Port 22
# ここまで

host_Cの ~/.ssh/id_ecdsa.pub の中身をhost_A・host_Bの ~/.ssh/authorized_keys に追記した上で,PowerShellコマンドプロンプトなどで ssh host_Bssh host_A が通ることを確認しておく.

VNC設定

RealVNCより,VNC Viewerをダウンロード,インストールする.

ここで,PowerShellコマンドプロンプトなどで ssh host_A を実行したままにしておく.

インストールが完了したら,VNC Viewerでは127.0.0.1:5901に接続できるか確認.

動作確認 & おまけ

ここまでで,

  1. ssh host_A を立ち上げている間,
  2. VNC Viewer でhost Aに接続できる

ようになっている.

しかし,都度この手順を踏むのも面倒なので自動化してみる.

VNC Viewerを立ち上げ,[File]→[Export connections...]から,適当なディレクトリに接続設定をエクスポート.

VSCodeなどで新規ファイルを作成し,

@rem ここから
start ssh host_A -N
start C:\Users\piyo\127.0.0.1-5901.vnc
@rem ここまで

をauto.batなどのファイル名でデスクトップなどに保存.

以降,auto.batをクリックすると自動でSSHVNCコネクションが確立する.

参考

qiita.com

qiita.com

qiita.com