Secure Shell (ssh)くん

Introduction

このページではお使いのパソコンから研究室の計算機へのssh接続およびsshトンネルに必要な環境の設定方法を紹介します.(この項目は後日充実させます)

アカウントの取得

数値計算環境を使用するには,はじめにあなたのアカウントを計算機に作成する必要があります.ご自身の研究で数値計算が必要になりましたら,指導教員に相談しアカウントを取得しましょう.
その後,あなたは2つのアカウントを入手します.1つはゲートウェイ機のアカウント,もう1つが計算機のアカウントです.
ゲートウェイ機を使ってあなたは数値計算をすることはありませんが,計算機サーバの構成上必ずアカウントが必要となります.
以下の説明ではあなたがお使いのパソコン上での作業を(L),ゲートウェイ機上での作業に(G),計算機上での作業に(C)と表記し区別します.

はじめての接続(L)

アカウントを取得したら早速ゲートウェイ機へと接続してみましょう.ターミナル(Winではコマンドプロンプト,あるいはWindows Power shell,MacおよびLinuxならば端末)を開き,“ ”で囲われた部分のコマンドを入力します.

“ssh -p (Port) (あなたのゲートウェイ機でのアカウント名)@133.6.68.34”   (1)

(Port)には適当な数字を入力します.具体的な数字はスタッフにお尋ねください.
はじめてゲートウェイ機へと接続すると,警告文のようなものが出てきます.“yes”と入力しEnterキーを押して次へと進みます.
続いてパスワードを要求されるので,初期パスワードを入力します.ターミナル上では文字が入力されていることがわかりませんが,キチンと認識されています.安心して入力しましょう.
ターミナル上に[(あなたのアカウント名)@kaeru ~]と表示されれば接続成功です.

パスワードの変更(G)

接続に成功したらまずはパスワードを変更しましょう.ターミナルに,

passwd

と入力します.まず,現在のパスワードを要求されるので間違えないように入力します.ここでも文字が入力されていることは画面上に表示されません.
Enterをおしたら,次にあなたのお好きなパスワードを入力します.ここでもやはり文字が入力されていることは画面上に表示されません.
Enterをおしたら,再度あなたが決めたパスワードを入力します.文字が入力されていることは画面上に表示されません.
最後にEnterをおしたら,ゲートウェイ機でのあなたのアカウントのパスワードの変更は完了です.

計算機への接続(G)(C)

あなたが実際に数値計算を実行することができる計算機へのアクセスはゲートウェイ機を介して行う必要があります.ゲートウェイ機にアクセスした状態で以下のコマンドを実行することで対応する計算機へとアクセスすることができます.

“ssh (あなたの計算機でのアカウント名)@192.168.1.**”   (2)

ただし,**に入れるべき数字はあなたが使用するべき計算機によって変化します.**に入れる数字の詳細は対応する計算機を管理しているスタッフにお尋ねください.
はじめて計算機へと接続すると,ゲートウェイ機のときと同様に警告文のようなもの(おそらく計算機のOSによってその詳細が多少変わる)が出てくると思います.画面の指示に従って,“yes”と入力しEnterキーを押せばおよそ先に進めると思います.
その後パスワードが要求されるので,初期パスワードを入力します.文字が入力されていることは画面上に表示されません.
ターミナル上に[(あなたのアカウント名)@(計算機によって異なる“kaeru”ではない文字列) ~]と表示されれば計算機への接続は成功です.
接続に成功したら,ゲートウェイ機と同様にpwdコマンドを入力し,計算機上のあなたのアカウントのパスワードをお好みのものへと変更しましょう.
以上までの手順が終了したら,あなたは研究室の計算機を使った数値計算を行うことができます.
ターミナル上で

exit

と入力することで計算機,およびゲートウェイ機への接続を辞めることができます.
再び計算機へとアクセスするにはあなたのパソコン上のターミナルで(1)のコマンド,ゲートウェイ機で(2)のコマンドを実行することで計算機へとアクセスすることができます.

公開鍵認証を使ったsshトンネルの設定

ここまでであなたは計算機へとアクセスする方法を習得することができました.ここまでたどり着くことができたら,計算機サーバ上でお好みのテキストエディタを使えば数値計算を実行できる.しかしいちいちゲートウェイ機へとアクセスし,そこからさらに計算機へとアクセスするのは面倒かと思います.ここからはあなたのお使いのパソコンから直接計算機へとアクセス(sshトンネリングと呼ばれる)可能な環境の設定方法について解説します.ここでは公開鍵認証方式を使ったsshトンネルの設定を行います.

はじめに認証に必要な鍵(公開鍵と秘密鍵)の生成を行います(L).あなたがお使いのパソコンのターミナルで以下のコマンド,

ssh-keygen -t rsa -b 4096

を実行します.パスフレーズを入力する要求が出力されるので,お好みに応じて設定します.何も入力せずにEnterキーを押すとパスフレーズは設定されません.アスキーアートが表示され,通常のコマンド入力を受け付けるようになれば鍵の生成は完了です.生成された公開鍵と秘密鍵は.sshディレクトリにそれぞれid_rsa.pub,id_rsaとして保存されています.このうち秘密鍵であるid_rsaは絶対に他人の手に渡らないように気をつけてください.
次に生成した公開鍵をゲートウェイ機,計算機に送信します.まず,あなたがお使いのパソコンのターミナルで,

scp -P (Port) ./.ssh/id_rsa.pub (あなたのアカウント名)@133.6.68.34:

というコマンドを実行します.ここで,(Port)には(1)のコマンドと同じ数字を入力します.ゲートウェイ機のパスワードを要求されるので正しく入力します.エラーが出力されなければ公開鍵をゲートウェイ機へと送信することができました.

続いてゲートウェイ機へとアクセスします.そこでls -aコマンドを実行し,.sshディレクトリが存在していることを確認します.本記事通りに進めていればゲートウェイ機には.sshディレクトリが存在するはずです.次に,コマンド

cp ./id_rsa.pub ./.ssh/authorized_keys

を実行します.次に,

chmod 600 ./.ssh/authorized_keys

を実行します.

続いて,計算機へ公開鍵を送信します.ゲートウェイ機のターミナルで,

scp ./.ssh/authorized_keys (あなたの計算機でのアカウント名)@192.168.1.**:

を実行します.**には(2)のコマンドと同じ数字を入力します.計算機のパスワードが要求されるので正しく入力します.エラーが出力されず,再度コマンド入力を受け付けるようになれば成功です.その後,計算機へとアクセスします.本記事の手順通りに進めていると,計算機には.sshディレクトリが作成されていないので,

mkdir -m 700 .ssh

をターミナルに入力し実行することでディレクトリを作成します.次に,

mv authorized_keys ./.ssh/

を実行します. 最後に

chmod 600 ./.ssh/authorized_keys

を実行します.ここまで完了すればゲートウェイ機および計算機での作業は終了です.

最後に簡単に計算機へとsshトンネリングできるようにするためのセットアップを行います.あなたのお使いのパソコンで適当なテキストエディタを開きます.ファイルの中に以下の内容を記述します.


# ゲートウェイ機への接続
Host kaeru(ここはお好みの名称で良い)
HostName 133.6.68.34
User (あなたのゲートウェイ機でのアカウント名)
identityFile ~/.ssh/id_rsa
Port (Port)

# 計算機への接続.計算機が複数ある場合は以下にMachine1と同様の記述をする.
Host Machine1(ここはお好みの名称で良い.計算機が複数あるのであれば,区別できるようにしておく)
HostName 192.168.1.**
User (あなたの計算機でのアカウント名)
ProxyCommand ssh -CW%h:%p kaeru
identityFile ~/.ssh/id_rsa

このファイルを.sshディレクトリ内にconfigという名称で保存します.

以上までの設定がうまくできていれば,あなたのお使いのパソコン上のターミナルで,

ssh (configファイル内に記述した対応する計算機のHost.例えばここではMachine1)

と入力し実行すれば直接計算機へとアクセスすることができます.

WinSCPの設定(Windows向け)

VScodeの設定

用語集

ターミナル

コマンドを使ってコンピュータを操作するアプリケーションです.

ディレクトリ

Windowsで言うところのフォルダで,複数のファイルと子ディレクトリの集合です.

カレントディレクトリ

ターミナル上であなたが現在いるディレクトリのことです.

絶対パス

コンピュータ上に存在するファイルやディレクトリを特定する完全な住所を表します.Linuxでは普通“/home/user/Documents/”のような表記です.

相対パス

カレントディレクトリを基準としてファイルやディレクトリを特定する住所を表します.相対パスを使うと,カレントディレクトリを“./”,一つ上のディレクトリを“../”と表します.

Linuxターミナルでの基本的なコマンド

ターミナル上でコンピュータを操作するにはコマンドを用います.基本的には,

(コマンド) [-(オプション1) -(オプション2) …] (引数1) (引数2) …

のような形で入力します.
いずれのコマンドについても言えることですが,コマンドや引数の間には必ずスペースを入れることを忘れないでください.

pwd

ターミナル上で現在あなたがいるディレクトリの絶対パスを出力します.

ls

カレントディレクトリ内に存在するファイルとディレクトリを出力します.ただし隠しファイル,隠しディレクトリは出力されません.隠しファイル,隠しディレクトリを含めて出力するにはオプションaを指定します.

cd (移動したいディレクトリの絶対パスまたは相対パス)

cdはchange directryのことで,カレントディレクトリを変更することができます.移動先のディレクトリは絶対パスでも相対パスでも指定することができます.

mv (移動したいファイルまたはディレクトリの絶対パスまたは相対パス) (移動先のディレクトリの絶対パスまたは相対パス)

mvコマンドを使うとターミナル上でファイルやディレクトリを別のディレクトリへと移動させることができます.

mv (名称変更したいファイルまたはディレクトリ[の相対パスまたは絶対パス]) (変更後の名称[の相対パスまたは絶対パス])

mvコマンドはファイルやディレクトリの名称を変更するときにも使うことができます.

rm (削除したいファイルの絶対パスまたは相対パス)

rmコマンドを使うことでファイルを削除できます.ただし,このコマンドでは警告なしでデータが完全に消去されることに気をつけてください.

rm -r (削除したいディレクトリの絶対パスまたは相対パス)

rmコマンドにオプションとしてrを指定するとディレクトリごと消去することができます.このとき対象ディレクトリ以下に存在する全てのファイルとディレクトリもまとめて消去されることに注意してください.

cp (コピー元のファイルの絶対パスまたは相対パス) (コピー先のディレクトリの絶対パスまたは相対パス,あるいはコピー先のファイルの絶対パスまたは相対パス)

cpコマンドを使うことでファイルをコピーすることができます.引数2でコピー先のディレクトリを指定した場合,コピー元と同じ名称のファイルとしてコピーされます.同じ名称のファイルが存在しなければ新規作成されます.同じ名称のファイルがコピー先に存在する場合,上書きされます.引数2でファイルのパスを指定すると,その名称のファイルとしてコピーが作成されます.指定した名称のファイルが存在しなければ新規作成,存在すればコピー元のデータで上書きされます.

cp -r (コピー元のディレクトリの絶対パスまたは相対パス) (コピー先のディレクトリの絶対パスまたは相対パス)

オプションとしてrを指定するとコピー元のディレクトリ以下に含まれる全てのデータをまるごとコピーすることができます.

mkdir (作成したいディレクトリ名[の相対パスまたは絶対パス])

mkdirコマンドは新たにディレクトリを作成することに使います.

rmdir (削除したい空のディレクトリ[の相対パスまたは絶対パス])

rmdirコマンドを使うことで“空の”ディレクトリを削除できます.ディレクトリ内のファイル,子ディレクトリごと削除したい場合は上に紹介したrmコマンドにrオプションを追加したコマンドを実行します.