大学とかの計算資源は基本的にssh張っていろいろするので、ローカルで開発するのとは勝手が違います。 あと更に権限がいろいろないのでそんなに好き勝手はできません。 なのでいろいろ便利手段を書いておきます。(TAしてる授業向けですが)
- ssh先でサーバー立ててもlocalhostでアクセスできないけどどうすれば...
- 長時間計算回したい(DNNの学習とか)けどssh張りっぱなしは嫌なんですが...
- VimとEmacsつらすぎるんですが...
- 権限がないのでpythonの好きなパッケージ使えないんですが...
ssh先でサーバー立ててもlocalhostでアクセスできないけどどうすれば...
jupyter notebookとかtensorboardね、よく使うやつ。
ローカルでの開発なら普通にブラウザからhttp://localhost
とかでアクセスすればいいんですけどね、sshした場合は?
これはポートフォワーディングをすれば解決です。.ssh/configにこんなかんじで書いておきましょう。ServerAliveIntervalとか書いておけばタイムアウトもしません。
server1が踏み台サーバ。
Host server1 HostName server1.com User nenoNaninu IdentityFile ~/.ssh/id_rsa_to_server1 ServerAliveInterval 15 ServerAliveCountMax 10 Host server2 HostName server2.com User nenoNaninu IdentityFile ~/.ssh/id_rsa_to_server2 ProxyCommand ssh server1 -W %h:%p LocalForward 8888 localhost:8888 ServerAliveInterval 15 ServerAliveCountMax 10
で、
ssh server2
とか叩いて、server2の中でtensorboardとかのサーバをlocalhost:8888でたてて、ブラウザでlocalhost:8888って打てばつながる。 tensorboardはこんな感じで起動すればok
tensorboard --logdir ./logs --host=localhost --port=8888
長時間計算回したい(DNNの学習とか)けどssh張りっぱなしは嫌なんですが...
&つけてバッググラウンド処理でもできますが、それよりtmuxを使うのがおすすめです。最低限tmux
で起動、起動している中でtmux detach
でもとのシェルに戻ってきて、tmux a
でdetachしたものが再開されるということがわかっていれば使えます。あと複数sshはらなくても一本で複数の窓が開けるので便利です。使いましょう。詳しい使い方はググってください。各種設定はホームに.tmux.confを書くことでいろいろできます。参考までに自分はこんな感じです。
# tmuxを256色表示できるようにする set-option -g default-terminal screen-256color set -g terminal-overrides 'xterm:colors=256' # Wi-Fi、バッテリー残量、現在時刻 # 最右に表示 set-option -g status-right '#(wifi) #(battery --tmux) [%Y-%m-%d(%a) %H:%M]' # ステータスバーを1秒毎に描画し直す set-option -g status-interval 1 # vimのキーバインドでペインを移動する bind h select-pane -L bind j select-pane -D bind k select-pane -U bind l select-pane -R # | でペインを縦分割する bind | split-window -h # - でペインを縦分割する bind - split-window -v #set -g mouse on set -g terminal-overrides 'xterm*:smcup@:rmcup@'
VimとEmacsつらすぎるんですが...
==== 2022/4/5 追記 == ==
今の時代は VS Code Remote Developmentの方がVS Code SSH FSより遥かに便利なのでそっちを使う事推奨。 VS Code Remote Developmentでsshを使うのはここを見ればよい。 .ssh/configの設定をいい感じに読んでくれるので、.ssh/configをちゃんと書いてればほとんど設定要らず。 リモートの実行環境で快適にデバッグができる(ブレイクポイント貼れるし、ウォッチ式もちゃんと使える)ので非常におすすめ。
==== 追記ここまで ====
VSCodeにSSH FSという拡張を入れるといいでしょう。もちろん踏み台サーバ越しで接続もできます。 HostとRootとUsernameとprivate key(sshに使う鍵)を設定しておけばとりあえず使えます。 踏み台越しにアクセスする場合はserver1とserver2の設定をそれぞれ書かないといけません。 server2の場合は以下のような設定。踏み台使う場合は、最後のProxyの設定をSSH Hopに設定して、server1(設定した踏み台サーバ名)を指定しておけば踏み台越しにもアクセスできます。 vscode内ではテキストだけじゃなくて、画像とかも見れるので、便利。おすすめ。
権限がないのでpythonの好きなパッケージ使えないんですが...
condaが入っている環境なら.condarcを書きましょう。ホームの以下の内容で.condarc書いておいて、conda create
で仮想環境立てれば、仮想環境内では好き勝手にconda installとかpip installできます。(プロキシの設定必要かも?)
envs_dirs: - ~/conda_env/ pkgs_dirs: - ~/.conda/pkgs/
仮想環境、結構容量くらうのであんまり乱立はおすすめしません(とくに大学の共有マシンでは個人あたりの最大容量そこまで大きくはないので)
作った仮想環境でjupyter note使いたいんだけど...
conda create -n oreoreEnv
みたいな感じで仮想環境作った場合は以下のようなコマンド叩きましょう。
ipython kernel install --user --name=oreoreEnv --display-name=oreoreEnv