ねののお庭。

かりかりもふもふ。

リモートでの開発環境のあれこれ。

大学とかの計算資源は基本的にssh張っていろいろするので、ローカルで開発するのとは勝手が違います。 あと更に権限がいろいろないのでそんなに好き勝手はできません。 なのでいろいろ便利手段を書いておきます。(TAしてる授業向けですが)

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内ではテキストだけじゃなくて、画像とかも見れるので、便利。おすすめ。

f:id:nenoNaninu:20200611184318p:plain f:id:nenoNaninu:20200611184335p:plain

権限がないので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