- 1. SSH鍵の作成
- 2. アカウント作成
- 3. ログイン確認とパスワード変更
- 4. 簡単にサーバに繋ぐための設定
- 5. サーバ上で自分の Python 環境を構築する
- 6. 研究室資源の利用仕方
- Credit
localuser@localhost ~ $ mkdir ~/.ssh
# mkdir: cannot create directory /home/localuser/.ssh: File exists (githubを設定したら既に作られたはず)
localuser@localhost ~ $ ls ~/.ssh
id_ed25519 id_ed25519.pub # 他のssh鍵があるかもしらない(github用鍵とか)
localuser@localhost ~ $ ssh-keygen -t rsa
Enter file in which to save the key (/home/localuser/.ssh/id_rsa): # 同directory下に同名の鍵ないか確認、あるなら別の名前を入力(/home/localuser/.ssh/別の名前)、ないならenterで確認。ここからは名前変えてないと仮定し、`id_rsa`でデモするので注意してください。
xxxx passphrase xxxx: # そのまま enter (passphraseを使わない)
作ったid_rsa.pub
(public key) とid_rsa
(private key) を、パソコン替えるなどの時でも見つかるように、ちゃんと保管してください。
id_rsa.pub
、"希望のユーザ名" を笹野さんに送る。さすれば笹野さんから"初期パスワード"が貰える。注意するのは以下の二点
id_rsa
(private key) を送るのではない- ユーザ名は誰なのか区別できるようなのを選んでください(中国語の名前は姓がよくかぶるので、名前のローマ字でよいでしょう)
localuser@localhost ~ $ ssh -i ~/.ssh/id_rsa <username>@cr.fvcrc.i.nagoya-u.ac.jp
# そしてパスワードを入力
This is the Z Shell configuration function for new users ... # 2 (recommended by admin) を入力してenter, デフォルトのzsh設置を使う
username@fvcrc-gateway ~ % yppasswd
# そして指示に従ってパスワードを変更する
他のサーバに繋がってみる
username@fvcrc-gateway ~ % ssh fvcrc03
# 先ほど設定したパスワードを入力
username@fvcrc03 ~ %
# CTRL + d でこの (gatewayから06に繋ぐ)ssh session からログアウト
username@fvcrc-gateway ~ %
# CTRL + d でこの (localからgatewayに繋ぐ) ssh sessionからログアウト
localuser@localhost ~ $ # localに戻った
毎回長いコマンドgatewayに入って、また別の入りたいサーバに繋ぐのはすごく面倒から、以下の設定で簡単に任意のサーバに繋ぐことができる。(註:研究室のネットワーク以外のところは、唯一 public address を有する fvcrc-gateway しか見えないので、一旦 fvcrc-gateway に繋がないと、他のサーバに繋げないことを、心に留めておくよいでしょう)
~/.ssh
の下で config
という名前のファイルを作成し、中には以下のように記述して保存する
Host lab-gateway
HostName cr.fvcrc.i.nagoya-u.ac.jp
User <username>
IdentityFile ~/.ssh/id_rsa
ForwardAgent yes
Host lab03 # ユーザが付ける任意区別しやすいサーバのニックネーム
HostName fvcrc03
User <username>
ProxyCommand ssh -W %h:%p lab-gateway
# 以下はfvcrc03を定義するblockと同じの理屈で各サーバに名前を付ける
localuser@localhost ~ $ ssh lab03
username@fvcrc03 ~ % # 一つ短いコマンドで入れました🥳
説明: ssh する時は自動的に~/.ssh/config
を探して読み込む、その中に最初のブロックではfvcrc-gateway
(外部から見る名前はcr.fvcrc.i.nagoya-u.ac.jp
)に繋ぐためのユーザ名とパスワードを事前に織り込んで、さらにlabe-gateway
というニックネームを付けて、中継器として設定した。他のブロックはfvcrc03
を例で説明すると、ssh lab03
を実行する時に、代わりにProxyCommand
を実行する。そしてProxyCommand
ではlab-gateway
を中継して繋げようと記述した。
system が使っている Python 環境は干渉され壊れないように、一般のユーザには package のインストールなどの権限を与えていない。皆はお互いに干渉しない自分の Python 環境作ってある。
まずは、Miniconda のダウンロードページにアクセスして、最新 Python version の Miniconda3 Linux 64-bit のダウンロードリンクを見つけてコピーする。
そして任意の研究室サーバに繋いで、Python 環境を構築する。(註:どのサーバも同じ /home
にアクセスするので、どのサーバでするのも構わないし、一回築いたらどのサーバからでもこの Python 環境を利用できる)
username@fvcrc03 ~ % wget <コピーしたリンク>
username@fvcrc03 ~ % sh Miniconda3-latest-Linux-x86_64.sh # プログレスバーがフリーズすることはよくあるので、慌てずに待っていてあげよう
Do you wish the installer to initialize Anaconda3 by running conda init? # yes 入力してenter
username@fvcrc03 ~ % ls # 今いる directory の内容をプリント
miniconda3 ...
username@fvcrc03 ~ % conda # conda が正しくインストールされ、システムに見えるか検証
# (optional) conda: command not found の場合のみする
username@fvcrc03 ~ % export PATH="~/miniconda3/bin:$PATH" # 一時的にcondaのいる場所を教える
username@fvcrc03 ~ % conda init
これで system と独立の python 環境が整えた。しかし今にいる conda の base 環境もまた壊れたら厄介なので、普通はそれと別の環境を作って使う。
username@fvcrc03 ~ % conda create -n <新環境名> python=3.9 # 3.9を希望の python 環境に変えてください、miniconda の installer の Python version と関係ないです。
username@fvcrc03 ~ % conda activate <新環境名> # 毎回 terminal でサーバに繋ぐした後、このコマンドで希望の環境に入って、中の packages を利用する
username@fvcrc03 ~ % conda env list
base /home/user/miniconda3
<新環境名> * /home/user/miniconda3/env/<新環境名>
# "*" は現在にいる環境を表記している
username@fvcrc03 ~ % python --version
Python 3.9.2 # 先ほど新環境を作成した時に希望した version
環境を起動した後、必ず使う package をインストールしてみよう。
username@fvcrc03 ~ % pip install jupyter
# Deep learning framwork (Pytorch/Jax) をインストールしよう、ここはPytorch でデモする
# !!! 必ずGPUのあるサーバでイストールしよう !!!
username@fvcrc03 ~ % conda install pytorch cudatoolkit=11.1 -c pytorch -c nvidia # https://pytorch.org/get-started/locally/ にて、Stable/Linux/Conda/Python/CUDA <最新 version> を選らんで、コマンドをコピぺする
username@fvcrc03 ~ % python
>>> import torch
>>> torch.cuda.is_available()
True # もしもGPUのあるサーバで試しているのに、 RuntimeError: CUDA driver initialization failed, you might not have a CUDA gpu. が出たら、もう一つのチュートリアル「サーバ使用のtroubleshoot」の CUDA version の部分を見てみよう
# CTRL + d で Python session から出る
二つの方式に一つ選ぶだけでいい
-
VSCode を自分のパソコンでインストールして開く
-
左 Menu の Extensions をクリックして、
Remote-SSH
を検索してインストール。インストール完了後、指示どおりにReload Window
をクリックする。 -
左 Menu 新しく現れた Remote Explorer に入って、
~/.ssh/config
で設定したサーバのニックネームが見えるはず。サーバを右クリックして繋ぐ。 -
再び Extensions に入って、
Jupyter
、Python
、Visual Studio IntelliCode
をインストールする -
左 Menu の Explores に入って、
open directory
で自分の repository を開く
まずは Jupyter の設定です
username@fvcrc03 ~ % jupyter notebook --generate-config
username@fvcrc03 ~ % ipython
In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[3]: 'sha1:...' # これをコピーしておく
username@fvcrc03 ~ % vim ~/.jupyter/jupyter_notebook_config.py
以下のように記述する
c = get_config()
c.NotebookApp.ip='*' # 任意のipアドレスからアクセス可能( jupyter notebookのバージョンによっては'*'を'0.0.0.0' にする必要がある)
c.NotebookApp.password = 'sha1:...' # コピーしておいた文字列をペースト
c.NotebookApp.open_browser=False # ブラウザは自動で開かない
c.NotebookApp.port=9000 # サーバーのportを適当に設定しておく(要変更!!!)
そして ssh tunnel を使った ssh session で jupyter server を起動する
localuser@localhost ~ $ ssh -L 8888:localhost:8900 [email protected] -t ssh -L 8900:localhost:<さっき設定したport> fvcrc03
username@fvcrc03 ~ % conda activate [環境名]
username@fvcrc01 ~ % jupyter notebook
註: 前も説明したように、サーバに繋ぐためには、fvcrc-gateway (外部名 cr.fvcrc.i.nagoya-u.ac.jp) で中継しなければならない。上のsshコマンドは、gatewayに繋ぐ同時に自分のパソコンの port 8888 を gateway の port 8900 にくっつけて、同コマンドの後半は gateway から fvcrc03 に繋ぐ同時に gate way の port 8900 を fvcrc03 の port 9000 とくっつける。こうすることで、local の port 8888 から fvcrc03 の port 9000 にアクセスすることができる。
terminal を閉ざさずに、パソコンのブラウザーで http://localhost:8888
を開いたら、jupyter notebook の interface が見えるはず。
2018年所属の山田康輔さんと、2020年所属の塚越駿さんの資料に基づいて、2020年所属の王億祥 (Yi-Siang Wang) が個人の経験に併せて作成したチュートリアルです。