vzな尺のblog

〜まだ 1 epoch 目〜

GPUマシン環境整備3 〜 外出先MacBook ⇨VPN ⇨自宅GPUマシン使用

目的

外出先から自宅GPUマシンを使えるようにする。 ※VPNは別途設定済み。

SSHのサーバとtmuxを入れる

sudo apt install -y openssh-server
sudo apt install -y tmux


クライアント側(Mac)で古い鍵を削除

sshdを再インストールするとssh-keygenでキーが再生成されるので、前のキーが登録されているクライアントから接続すると 「鍵が変わってるよ」旨のエラーがでる。以下のようにknown_hostsからホストのキーを削除することで対処。
(本当は鍵を取っておいて再利用するべきなのでしょうが・・・)

ssh-keygen -R example.com


ホームディレクトリを共有(samba)にする

ubuntu標準のネットワーク共有フォルダを設定。

  • Nautilusでプロパティ→ローカルネットワーウ共有 で設定。(ゲストはなし)
  • samba用パスワード設定
$ sudo smbpasswd -a hogeuser


VSCodeでRemoteDevelopemntを使う

Visual Studio Code Insiders + Remote Development Extensionを入れると、あたかもローカルと同じようにリモートを操作できるようになる。 とても便利。

〜クライアント側の作業です〜

  • 現時点でRemoteDevelopmentするにはは、vscodeの通常版ではなく、Insiders版が必要なようです。
    Download Visual Studio Code Insiders からDLして入れます。

  • vscode(insiders版。以下vscode)を立ち上げ Remote Development Extension Pack」をインストール
    (このPackに、Remote-SSH / Remote-Containers / Remote-WSL 等が含まれる) f:id:vz-shark:20190902084859p:plain

  • 左下端のアイコン→Remote-SSH: Connect to Host.. を選択。
    SSHサーバを指定してログイン名+パスワード等を入れて接続。 f:id:vz-shark:20190902084941p:plain
  • 成功すると別Windowが開き、リモートの操作ができるようになります。以下のようなかんじ。
    リモートファイルがexploerに表示され、リモートデバックが行える。 f:id:vz-shark:20190902094206p:plain

jupyterをリモートアクセスできるようにする

デフォルトだと、ローカルからしかアクセスできないようなので変更する。 バインドを、127.0.0.1→0.0.0.0にする

$ ipython

In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password: [パスワードを入力]
Verify password: [パスワードを再度入力]

Out[2]: 'sha1: [ハッシュ化されたパスワード]'  
  • ~/.jupyter/jupyter_notebook_config.py を編集。
    存在しない場合は、$ jupyter notebook --generate-configで生成。 以下の設定を追加。
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8888
c.NotebookApp.password = u'sha1:XXXXXXX' # 先ほどのハッシュ値

結論

上記、ssh + tmux + samba + vscode(remote development) + jupyter で快適。
リモートデスクトップも試しましたが、反応速度等がきになり使ってません。

番外編(リモートデスクトップ関係)

リモートデスクトップ系もいくつか試してみましたが使ってません。上記結論通りです。 以下は、試したことのメモ。

VNC(Vino)

  • 画面共有を有効にする アクティビティ→設定→共有→画面共有を「アクティブ」にする

  • VNCの 暗号化通信を無効にする。Mac標準のクライアントでは、暗号化未対応のため「互換性のないバージョン〜」というエラーになる。また暗号化無しの方が反応速度良い。

$ gsettings set org.gnome.Vino require-encryption false 

※若しくは ubuntuソフトウェアから「Dconf Editor」をインストールしてGUIから操作。

  • ubuntuにログインした状態でMacから接続。
    ubuntu側はログイン状態にしないと繋がらない。 結構、表示の遅延がきになる・・・



MacVNCクライアントは、Nulana - Remotix for Macが体感的に早いが$50とお高い。Download VNC Viewer for macOS | VNC® ConnectはフリーだがMac標準クライアントより機能は充実、体感速度は変わらない。

XRDP

上記vncが体感速度がイマイチなのでRDPを使ってみる。

#インストール
$ sudo apt-get -y install xrdp

#new_cursorsの無効化
sudo sed -e 's/^new_cursors=true/new_cursors=false/g' \
 -i /etc/xrdp/xrdp.ini
 
#xrdpサービスの再起動
sudo systemctl restart xrdp
 
#xsessionファイルの作成
D=/usr/share/ubuntu:/usr/local/share:/usr/share:/var/lib/snapd/desktop
cat <<EOF > ~/.xsessionrc
 export GNOME_SHELL_SESSION_MODE=ubuntu
 export XDG_CURRENT_DESKTOP=ubuntu:GNOME
 export XDG_DATA_DIRS=${D}
 export XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg
EOF
 
#Authentication Requiredダイアログの回避
cat <<EOF | \
   sudo tee /etc/polkit-1/localauthority/50-local.d/xrdp-color-manager.pkla
 [Netowrkmanager]
 Identity=unix-user:*
 Action=org.freedesktop.color-manager.create-device
 ResultAny=no
 ResultInactive=no
 ResultActive=yes
EOF
 
sudo systemctl restart polkit
  • ubuntu側をログオフした状態でMacから接続。 セッションが先優先となるようで、後にセッション開始しようとすると繋がらない。
    体感速度は大分いい感じ・・・

Mac側クライアントは、「Microsoft Remote Desktop 10」を使用。

GoogleChromeリモートデスクトップ

最後に、googleリモートデスクトップも試してみる。

リモートデスクトップ系では、googleが一番反応速度、機能面で使いやすかったです。



ー以上ー