計算機利用ことはじめ

提供: Eospedia
移動: 案内検索

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

本記事の内容

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

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

前提

  • 研究室計算機のアカウントを持っていること。
  • コンソール(ターミナル)アプリの使い方がわかっていて、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には、計算機管理者から通知された計算機アカウントのパスワードを入力すればよい。コピペも効く。

公開鍵認証を利用してパスワードなしでログインできるようにする

ローカルPCから研究室計算機へ

ローカルPCにて、

cd ~/.ssh
ssh-keygen

とすると、公開鍵秘密鍵ペアの生成に関するプロンプトが出てくる。特にこだわりが無ければデフォルトのままで、エンターを押していけば良い。

.ssh以下に id_rsa(秘密鍵ファイル)と id_rsa.pub(公開鍵ファイル)が生成される。秘密鍵は漏洩させてはならない。秘密鍵にセキュリティをかけたいならば、ssh-keygenでパスフレーズを設定しておくと良い。

sshログイン先の計算機のアカウントの ~/.ssh/authorized_keys ファイルに id_rsa.pub(公開鍵)の中身をコピペすることで公開鍵が登録され、それ以降はローカルPCからリモートPCへパスワード無しでsshログイン可能になる(セキュリティは公開鍵認証により担保される)。

実際にリモートPCで ~/.ssh/authorized_keys ファイルを作成し、そこへ公開鍵の中身のテキストをコピペすることもできるが、sshには特別なコマンドがあって、

ssh-copy-id tutorial@192.168.4.83

のようにすれば、ホスト192.168.4.83のアカウントtutorialへ公開鍵登録することができる。このほうが楽。

研究室計算機間で

研究室計算機は複数存在して、その間をsshで行き来することはよくやる。ので、研究室計算機間でもパスワードなしsshログインできると楽である。

研究室計算機はNFS(Network File System)によりホームディレクトリを共有しているので、したがって.sshも共有している。ゆえにどこかの研究室計算機で鍵ペアを生成し、authorized_keysに登録しておきさえすれば、いずれの研究室計算機間でもパスワードなしsshログインが可能となる。

どこかの研究室計算機にsshログインしたあと、

ssh-keygen -C ""

とする。-C ""は、公開鍵の末尾に計算機名をつけないようにするオプション。

それができたら、id_rsa.pubの中身をauthorized_keysへ登録すれば良い。

cd ~/.ssh
echo id_rsa.pub >> authorized_keys

'>>'ではなく'>'としてしまうとauthorized_keys全体が上書きされてしまうので打ち間違えないように注意。

上記ができたら、計算機間でsshログインを試してみる。

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

目玉が表示される。xeyesが他のウィンドウの後ろに隠れて見えない場合もあるので、タスクバーも探してみる。

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

もし以下のような表示が出た場合は、

Error: Can't open display:

Xフォワードに失敗している。sshコマンドへの-Yオプションの付け忘れ、ローカルPCでのXサーバーの立ち上げ忘れをチェックする。

忘れていないにも関わらず失敗している場合は、リモート計算機側でssh越しのXフォーワードを無効に設定していることが考えられる。/etc/ssh/sshd_config の X11Fowarding が yes, X11useLocalhost が no となっているか確認すること。よくわからなければネットワーク係へ連絡。

リモートGUIアプリを使ってみる

xeyesが使えるならたいていのアプリはXで飛ばしてこれるので、使いたいアプリを使ってみれば良い。

そもそも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が必要だったりと、特殊なことをしないといけない場合もある。

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