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 等が含まれる)- 左下端のアイコン→Remote-SSH: Connect to Host.. を選択。
SSHサーバを指定してログイン名+パスワード等を入れて接続。 - 成功すると別Windowが開き、リモートの操作ができるようになります。以下のようなかんじ。
リモートファイルがexploerに表示され、リモートデバックが行える。
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から操作。
MacのVNCクライアントは、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
※Mac側クライアントは、「Microsoft Remote Desktop 10」を使用。
GoogleChromeリモートデスクトップ
最後に、google のリモートデスクトップも試してみる。
- ubuntu側
Chromeでhttps://remotedesktop.google.com/ にアクセスして、googleアカウントでログイン。 「このデバイス」の「リモートアクセスの設定」の画面に従ってセットアップする。 - Mac側
同様にChromeでhttps://remotedesktop.google.com/ にアクセスしてログイン。
リモートのデバイスにubuntu側で設定したデバイス名がでてくるのでクリックして接続。
※リモートデスクトップ系では、googleが一番反応速度、機能面で使いやすかったです。
ー以上ー