「計算機利用ことはじめ」の版間の差分

提供: Eospedia
移動: 案内検索
(XフォーワードによるリモートGUIアプリの使用)
行1: 行1:
 
安永研究室特有の説明も含みますので、研究室外の方は適宜読み替えてください。
 
安永研究室特有の説明も含みますので、研究室外の方は適宜読み替えてください。
  
== 本記事の内容 ==
+
== '''本記事の内容''' ==
 
まずは以下ができるように説明を試みます。
 
まずは以下ができるように説明を試みます。
 
* 研究室計算機へのsshログイン
 
* 研究室計算機へのsshログイン
行19: 行19:
 
* JupyterLabへの接続
 
* JupyterLabへの接続
  
== 前提 ==
+
== '''前提''' ==
 
* 研究室計算機のアカウントを持っていること。
 
* 研究室計算機のアカウントを持っていること。
 
* コンソール(ターミナル)アプリの使い方がわかっていて、Unix/Linuxの基本コマンドが(調べながらでもいいから)使えること。
 
* コンソール(ターミナル)アプリの使い方がわかっていて、Unix/Linuxの基本コマンドが(調べながらでもいいから)使えること。
 
* ローカルPC(自分が手元で使うPCのこと)にXサーバーがインストールされていて、Xサーバーが起動していること。
 
* ローカルPC(自分が手元で使うPCのこと)にXサーバーがインストールされていて、Xサーバーが起動していること。
** Windowsであれば VcXsrv ( https://sourceforge.net/projects/vcxsrv/ )や MobaXterm ( https://mobaxterm.mobatek.net/ ) 等。
+
** Windowsであれば VcXsrv ( https://sourceforge.net/projects/vcxsrv/ )や MobaXterm ( https://mobaxterm.mobatek.net/ ) 等。MobaXtermはターミナル、SFTPクライアントも統合されていて、Xサーバーも設定ウィンドウのチェックボックス1つ入れておけば勝手に立ち上がるので、手間がかからない。
 
** macOSは XQuartz ( https://www.xquartz.org ) 一択?
 
** macOSは XQuartz ( https://www.xquartz.org ) 一択?
 
* 研究室ネットワークへ接続していること。
 
* 研究室ネットワークへ接続していること。
行30: 行30:
 
よくわからなければネットワーク係に相談してください。
 
よくわからなければネットワーク係に相談してください。
  
== 研究室計算機へのsshログイン ==
+
== '''研究室計算機へのsshログイン''' ==
 
=== sshコマンドの基本書式は? ===
 
=== sshコマンドの基本書式は? ===
 
sshの基本書式は以下の通りで、ユーザー名とログインしたい計算機のホスト名とを`@`でつなげてsshコマンドに渡す。
 
sshの基本書式は以下の通りで、ユーザー名とログインしたい計算機のホスト名とを`@`でつなげてsshコマンドに渡す。
行84: 行84:
 
passwordには、計算機管理者から通知された計算機アカウントのパスワードを入力すればよい。コピペも効く。
 
passwordには、計算機管理者から通知された計算機アカウントのパスワードを入力すればよい。コピペも効く。
  
== XフォーワードによるリモートGUIアプリの使用 ==
+
== '''XフォーワードによるリモートGUIアプリの使用''' ==
 +
=== 下準備 ===
 
まずはローカルPCでXサーバーを起動する。起動方法はどのXサーバーを使うかにより異なるので、適宜マニュアルやブログなどを探して頑張ってください。
 
まずはローカルPCでXサーバーを起動する。起動方法はどのXサーバーを使うかにより異なるので、適宜マニュアルやブログなどを探して頑張ってください。
  
 +
「よくわからん!」という声が多ければ、(誰かが)整理してここに追記します。
 +
 +
=== Xフォーワードを有効にしてのsshログイン ===
 
信頼できる計算機を相手にXフォーワードをする場合は、以下の様にする。
 
信頼できる計算機を相手にXフォーワードをする場合は、以下の様にする。
 
<pre>
 
<pre>
行94: 行98:
  
 
-Yの代わりに-Xでも行けると思うが、-Xはセキュリティを重視して制限がかかる場合があるようで、一部のアプリは阻害されるかもしれない。研究室計算機相手であれば-Yで問題ないだろう。
 
-Yの代わりに-Xでも行けると思うが、-Xはセキュリティを重視して制限がかかる場合があるようで、一部のアプリは阻害されるかもしれない。研究室計算機相手であれば-Yで問題ないだろう。
 +
 +
上記コマンドにより、リモート計算機にsshログインすると同時に、Xフォーワードも有効になる。
 +
 +
=== Xフォーワードが有効になっているかのチェック ===
 +
色々な理由でXフォーワードが有効になっていない場合もある。軽量なGUIアプリを使ってチェックしてみるとよい。
 +
 +
例えば
 +
<pre>
 +
$ xeyes
 +
</pre>
 +
とうつと、Xフォーワードが有効であれば
 +
 +
[[File:コメント_2020-06-27_194638.png]]
 +
 +
目玉が表示される。
 +
 +
※ Command not foundのようなエラーが出た場合は xeyes がインストールされていないから、インストールするか、別のGUIアプリで試す。
 +
 +
=== そもそもXフォーワードとは何だ ===
 +
[https://ja.wikipedia.org/wiki/X_Window_System X Window System]という仕組みで動く一連のGUIアプリがあって、それは各アプリがXクライアントとなって、Xサーバーへ描画やキー入力制御をやってもらう感じで動作している。
 +
 +
普通は1つの計算機の中で、各XクライアントがXサーバーへ描画指示などを投げて描画が行われる。
 +
 +
一方でXフォーワードをする場合は、リモート計算機のXクライアントが、sshで確立した通信経路を通して、ローカルPCのXサーバーに描画やキー入力をやってもらう感じで動作する。このように普通とは異なる相手先へ通信を転送する行いをフォーワード、フォーワーディングと呼ぶ。
 +
 +
LinuxはOSがそもそもX window systemを使っているため、そこで動くGUIアプリもXを利用したものになっているから、だいたいXフォーワードで飛ばしてこれる。FirefoxでもファイルエクスプローラーでもImageJでもRELIONでもEmacsでも飛ばしてこれる。ただしOpenGLを使って描画しているアプリではGLXが必要だったりと、特殊なことをしないといけない場合もある。
 +
 +
という説明でなんとなくお判りいただけるだろうか?

2020年6月27日 (土) 11:08時点における版

安永研究室特有の説明も含みますので、研究室外の方は適宜読み替えてください。

本記事の内容

まずは以下ができるように説明を試みます。

  • 研究室計算機へのsshログイン
  • XフォーワードによるリモートGUIアプリの使用


研究室の計算機に直接インストールしてあるアプリを使いたいだけであれば上記までで十分ではあります。が、共用の計算機で各々好き勝手なことをやろうとすると色々と問題が生じてくるものです(使う方も管理・運用する方も)。

ということで、Dockerを用いた環境構築とその利用法についても説明します。

  • 研究室計算機内でのDockerイメージのビルドとコンテナの生成
    • 研究室で用意している機械学習用イメージと単粒子解析用イメージの両方の場合について説明します。あまり汎用的なDockerの説明にはなっていないので留意してください。
    • これらのイメージは将来的に統合する予定です。
  • sshポートフォワードによるローカルPCとDockerコンテナの直接接続
  • Dockerコンテナへのログイン
  • JupyterLabサーバーの起動
  • JupyterLabへの接続

前提

  • 研究室計算機のアカウントを持っていること。
  • コンソール(ターミナル)アプリの使い方がわかっていて、Unix/Linuxの基本コマンドが(調べながらでもいいから)使えること。
  • ローカルPC(自分が手元で使うPCのこと)にXサーバーがインストールされていて、Xサーバーが起動していること。
  • 研究室ネットワークへ接続していること。
  • ググって調べる心意気。

よくわからなければネットワーク係に相談してください。

研究室計算機へのsshログイン

sshコマンドの基本書式は?

sshの基本書式は以下の通りで、ユーザー名とログインしたい計算機のホスト名とを`@`でつなげてsshコマンドに渡す。

ssh [ログインしたい計算機における自分のユーザー名]@[ログインしたい計算機のホスト名(またはIPアドレス)]

※ []は、[]も含めて適当な値に置き換えること。


sshコマンドの使い方は簡易的には以下コマンドで確認できる。

ssh

詳細なドキュメントを読むにはmanコマンドを使う。

man ssh

研究室にはどんな計算機がある?

いろいろあるので、用途や空き状況に応じて適宜選択する。

研究室のファイルサーバーに計算機一覧表が置いてあるので(マニュアル\サーバー関連\計算機一覧\computer_list_yasunaga-lab.xlsx)、それを参照すればよい。計算機一覧表にアクセスできない場合や、一覧表を見たとてどれを使えばいいのかよくわからない場合は、ネットワーク係に聞く。

GPGPU計算をしないとわかっている場合は、GPUを使いたい人のためにも、高性能GPU(※)搭載の計算機利用は避けるのが望ましい。 ( ※ 2020年6月時点では GeForce GTX1080, GTX1080Ti, RTX2080, RTX2080Ti)

利用するのに予約は必要ですか?

計算機の予約状況は、研究室カレンダーのうちの「計算機」カレンダーで確認できる。他の人が使えなくなるレベルの重い計算を長時間走らせる場合は、先例に倣ってカレンダーで予約をする(あまり厳密にはやっていませんが)。交渉はSlackやメールで適宜やってください。

実際のログイン例

ユーザー名が tutorial で、ホスト名 cs03 の計算機にログインしたいとすると、

ssh tutorial@cs03

※ (ドメイン名無しの)ホスト名でアクセスするためには、ローカルPCのネットワーク設定においてDNSサーバーとDNSサーチドメインが設定されている必要がある。DHCPを使っていればDHCPサーバーが勝手に設定値を振ってくれるはずなので、気にする必要はないはず。もしホスト名でのアクセスがうまく行かなければ、ネットワーク係へ連絡してください。

もしくは、cs03のIPアドレスは 192.168.4.83 なので、以下の様にしてもログインできる。

ssh tutorial@192.168.4.83

初回ログインの場合は、以下のようなメッセージとプロンプトが表示される。

The authenticity of host 'cs03 (192.168.4.83)' can't be established.
ECDSA key fingerprint is SHA256:*****.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'cs03,192.168.4.83' (ECDSA) to the list of known hosts.
tutorial@cs03's password:

"Are you sure you want to continue connecting (yes/no)?"の問いに対しては "yes" と入力すればよい。(もちろん、それが信頼できるサーバーであるとわかっている場合。)

passwordには、計算機管理者から通知された計算機アカウントのパスワードを入力すればよい。コピペも効く。

XフォーワードによるリモートGUIアプリの使用

下準備

まずはローカルPCでXサーバーを起動する。起動方法はどのXサーバーを使うかにより異なるので、適宜マニュアルやブログなどを探して頑張ってください。

「よくわからん!」という声が多ければ、(誰かが)整理してここに追記します。

Xフォーワードを有効にしてのsshログイン

信頼できる計算機を相手にXフォーワードをする場合は、以下の様にする。

$ ssh -Y [ユーザー名]@[ホスト名]

要は通常のsshコマンドに -Y オプションを追加しているだけ。

-Yの代わりに-Xでも行けると思うが、-Xはセキュリティを重視して制限がかかる場合があるようで、一部のアプリは阻害されるかもしれない。研究室計算機相手であれば-Yで問題ないだろう。

上記コマンドにより、リモート計算機にsshログインすると同時に、Xフォーワードも有効になる。

Xフォーワードが有効になっているかのチェック

色々な理由でXフォーワードが有効になっていない場合もある。軽量なGUIアプリを使ってチェックしてみるとよい。

例えば

$ xeyes

とうつと、Xフォーワードが有効であれば

コメント 2020-06-27 194638.png

目玉が表示される。

※ Command not foundのようなエラーが出た場合は xeyes がインストールされていないから、インストールするか、別のGUIアプリで試す。

そもそもXフォーワードとは何だ

X Window Systemという仕組みで動く一連のGUIアプリがあって、それは各アプリがXクライアントとなって、Xサーバーへ描画やキー入力制御をやってもらう感じで動作している。

普通は1つの計算機の中で、各XクライアントがXサーバーへ描画指示などを投げて描画が行われる。

一方でXフォーワードをする場合は、リモート計算機のXクライアントが、sshで確立した通信経路を通して、ローカルPCのXサーバーに描画やキー入力をやってもらう感じで動作する。このように普通とは異なる相手先へ通信を転送する行いをフォーワード、フォーワーディングと呼ぶ。

LinuxはOSがそもそもX window systemを使っているため、そこで動くGUIアプリもXを利用したものになっているから、だいたいXフォーワードで飛ばしてこれる。FirefoxでもファイルエクスプローラーでもImageJでもRELIONでもEmacsでも飛ばしてこれる。ただしOpenGLを使って描画しているアプリではGLXが必要だったりと、特殊なことをしないといけない場合もある。

という説明でなんとなくお判りいただけるだろうか?