※他の情報を十分にサーベイした上、自己責任で行ってください。
目標
外出先から自宅 mac に接続し, jupyter notebook でコーディングができる。
環境
概要のみ
mac
- OS: macos(Sierra)
windows
- OS: Windows10 Home Edition
mac(Sierra)をwindows10から操作する。
ssh 接続のみで十分であったが、vnc も試してみた。
ローカルネットワーク内の ssh 接続 & ssh tunneling で vnc 接続
サーバ側(mac)
sshのポート変更
sudo vim /etc/services
77 ssh 22/udp # SSH Remote Login Protocol$
78 ssh 22/tcp # SSH Remote Login Protocol$
の22を、未使用のポート番号に変更。(未使用ポートの確認はググる)
IPアドレスの確認
ifconfig
でわかるのでメモ。
ssh公開鍵の生成
cd ~/.ssh
ssh-keygen -t rsa
出てくる項目は y か Enter でスキップ。
公開鍵を編集する。
cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys
rm id_rsa.pub
秘密鍵を配置する。
chmod 600 id_rsa
id_rsaはクライアント側に送信する。
sshの設定
sudo vim /etc/ssh/sshd_config
以下のように編集(#外したり、yesをnoにしたり)
PeimitRootLogin no
PasswordAuthentication no
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
リモートログインの設定
[システム環境設定]>[共有]
で、リモートログインをオンにする。
ここでアクセスを許可されたユーザがクライアント側でログインする際のアカウントになる。
画面共有の設定
上記と同じ画面で、画面共有をオンにする。
日本語文字化け対策
sudo vim ~/.bash_profile
以下を追記
export LANG=ja_JP.UTF-8
設定を反映
source ~/.bash_profile
クライアント側(windows)
RLogin をインストール
- サーバのIPアドレス
- アカウント名、パスワード
- SSH認証キー(id_rsa)をインポート
以上でsshが接続できる。
ssh tunneling による vnc
[ファイル]>[サーバに接続]
で先ほどの設定ファイルを選択し、
[編集]
を押す。
[サーバ]>[プロトコル]>[ポートフォワード]
を選択。新規を作成し、以下のように設定
- Listened
- Hostname: localhost
- Port: 33333(適当)
- Connect
- Hostname: サーバのIPアドレス
- Port: 5800
5800はvncのポート番号。
これを保存し、ssh再接続。
UltraVNC をインストールし、接続先に
127.0.0.1::33333
を入力、アカウントのパスワードを入力すると接続できる。
外部ネットワークの ssh 接続 & ssh tunneling で vnc 接続
このサイトからグローバルIPアドレスを確認してメモしておく。
環境によっては定期的に変わってしまうので、ここらへんなどで固定IPを取得しておいてもよい。
ルーターの設定
ルーターの設定画面は、機種によってIPアドレスが異なる。例えば、ブラウザで192.168.0.1等につなぐと設定画面が現れる。
それぞれの機器のポートマッピング設定で、サーバIPのsshのIPを開く。
クライアントの設定
内部ネットワークの設定でサーバIPを入れたところに、グローバルIPを上書きすればOK。
Python環境の構築(Homebrew)
macにはネイティブで python2.7 がインストールされている。
執筆時点では、Homebrewのデフォルトpythyonが3系になっている。
Python3,pip
brew install python
venv
python -m venv env1
# activate
source env1/bin/activate
# deactivate
deactivate
jupyter notebook
pip install jupyter
# cinfig file emerge
jupyter notebook --generate-sshd_config
sudo vim ~/.jupyter/jupyter_notebook_config.py
# 起動してもブラウザが自動起動しないようにする。
c.NotebookApp.open_browser = False
パスワード設定(jupyter5.0以降)
jupyter notebook password
nbextended
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
ssh tunneling の接続
vncと同じことを、8888ポートに行えばよい。
ただし、クライアント側のポートも、未使用の別ポートに変えること。たとえば、
- Listened
- Hostname: localhost
- Port: 33334(適当)
- Connect
- Hostname: サーバのIPアドレス
- Port: 8888
と設定すれば、設定でssh接続し、クライアントブラウザで
127.0.0.1:8888
を打つと Jupyter に接続できる。