多段ssh状態でjupyter notebookを使う話
先日、サークルの先輩から多段のssh接続をしている環境下でローカルからjupyter notebookを起動する方法を質問されたので、その時調べたものをまとめます。まあ、実践していないので 今度試すとき用のメモって感じ
ですね。
多段sshの設定
ssh接続する際に勝手に踏み台サーバを経由してくれるように設定します。以下の設定はクライアント側で行います。
~/.ssh/config
に設定ファイルがあるので、テキストエディタで編集(以下のコマンド)。
$ vim ~/.ssh/config
テキストエディタで~/.ssh/config
を開いたら以下のように編集します。
Host fumidai
Hostname (踏み台サーバのip)
User (接続時のユーザ名)
FowardAgent yes
Host main(ここの名前は後で使用しますのでなんでもOKです)
Hostname (接続サーバのip)
User (ユーザ名)
ProxyCommand ssh -W %h:%p fumidai
このように編集することにより、main
に接続する際に自動的にfumidai
が経由され、踏み台時には9行目のProxyCommand
に書かれたコマンドが実行されることになります。なお9行目における%h
はホスト名、上記の場合はmain
が、p
はポート番号が入り特に指定しなければ22になります。ただし、今回はjupyter
notebook側で指定したポート番号を指定することになります。
これで設定は完了です。接続する際には
$ ssh -f main(これは先ほどHostに書いた名前) -L 8888:localhost:8888 -N
とコマンドを打つと行けると思います。
jupyter notebook 側の設定
jupyter notebookをlocalhost以外から接続できるようにサーバ側で設定を行います。以下の作業はサーバ側で行います。
1 jupyter notebookのパスワード設定
パッケージ4.3からはセキュリティが強化され、jupyter notebookに接続する際にはパスワードを求められるようです。このパスワードの確認は以下のようにインタプリタで確認します。
$ ipython
In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[3]: 'sha1:...'
2
コンフィグファイルを作成
jupyter notebookは次のファイルに作成します。pythonファイルなのが面白いですね。
$ mkdir ~/.jupyter
$ cd ~/.jupyter
$ vim jupyter_notebook_config.py
中身は以下のように設定します。なお、ポート番号は接続の際に使用するので適切に設定してください。
c = get_config()
c.NotebookApp.ip='*'
c.NotebookApp.password = 'sha1:...'
c.NotebookApp.open_browser=False
c.NotebookApp.port=8888
以上でサーバ側の設定は終了です。一度ログアウトして再度接続します。
jupyter notebookの起動
先ほどの方法でローカルからサーバに接続します。なお、ポートは先ほどコンフィグで設定したものを利用します。
ssh -f main(これは先ほどHostに書いた名前) -L 8888:localhost:8888 -N
サーバでjupyer notebookを起動します。この時、
...(省略)
[I 21:34:44:918 NotebookApp] The Jupyter Notebook is running at:
[I 21:34:44:918 NotebookApp] http://localhost:8888
みたいな表示が出るらしいのでローカルから表示されたアドレスに接続して完了です。その際、パスワードを求められるようですが、先ほど表示させたものを入力します。
多段ssh状態でjupyter notebookを使う話
先日、サークルの先輩から多段のssh接続をしている環境下でローカルからjupyter notebookを起動する方法を質問されたので、その時調べたものをまとめます。まあ、実践していないので 今度試すとき用のメモって感じ ですね。
多段sshの設定
ssh接続する際に勝手に踏み台サーバを経由してくれるように設定します。以下の設定はクライアント側で行います。
~/.ssh/config
に設定ファイルがあるので、テキストエディタで編集(以下のコマンド)。[1]テキストエディタで
~/.ssh/config
を開いたら以下のように編集します。このように編集することにより、
main
に接続する際に自動的にfumidai
が経由され、踏み台時には9行目のProxyCommand
に書かれたコマンドが実行されることになります。なお9行目における%h
はホスト名、上記の場合はmain
が、p
はポート番号が入り特に指定しなければ22になります。ただし、今回はjupyter notebook側で指定したポート番号を指定することになります。これで設定は完了です。接続する際には
とコマンドを打つと行けると思います。
jupyter notebook 側の設定
jupyter notebookをlocalhost以外から接続できるようにサーバ側で設定を行います。以下の作業はサーバ側で行います。
1 jupyter notebookのパスワード設定
パッケージ4.3からはセキュリティが強化され、jupyter notebookに接続する際にはパスワードを求められるようです。[2]このパスワードの確認は以下のようにインタプリタで確認します。
$ ipython In [1]: from notebook.auth import passwd In [2]: passwd() Enter password: Verify password: Out[3]: 'sha1:...' # これをコピーしておく
2 コンフィグファイルを作成
jupyter notebookは次のファイルに作成します。pythonファイルなのが面白いですね。
$ mkdir ~/.jupyter $ cd ~/.jupyter $ vim jupyter_notebook_config.py
中身は以下のように設定します。なお、ポート番号は接続の際に使用するので適切に設定してください。
以上でサーバ側の設定は終了です。一度ログアウトして再度接続します。
jupyter notebookの起動
先ほどの方法でローカルからサーバに接続します。なお、ポートは先ほどコンフィグで設定したものを利用します。
サーバでjupyer notebookを起動します。この時、
みたいな表示が出るらしいのでローカルから表示されたアドレスに接続して完了です。その際、パスワードを求められるようですが、先ほど表示させたものを入力します。
vim
vim
はテキスト編集アプリなので、インストールされていない場合はvi
でもemacs
でもOS標準のやつでもなんでも大丈夫です。 ↩︎https://jupyter-notebook.readthedocs.io/en/latest/security.html#server-security ↩︎