====== 概要 ======
* SSHを利用して、ノード間の通信や外部からクラスタ計算機への接続ができるようにします
* セキュリティ上の安全のため、外部からのログインは鍵認証のみで行うようにします
* 管理ノードにグローバルIPアドレスが設定されてない場合は、外部から管理ノードにSSH接続ができません
* このページでは、管理ノードの固定IPアドレスを xxx.xxx.xxx.xxx とします
====== 設定手順 ======
===== SSHの導入 =====
- 管理ノードと計算ノードの両方でSSHをインストールします
$ sudo apt install ssh
- 管理ノードから計算ノードにSSHで接続できるか確認します。@の前は計算ノードのユーザー名、後ろは計算ノードのプライベートIPアドレスを入力します。
$ ssh username_keisan11@192.168.0.11
* 計算ノードからログアウトしてヘッドノードに再び戻るには$ exit
とします。
- (管理ノードにグローバルIPアドレスを設定した場合)別途インターネットに接続されたパソコンでターミナルを開き、外部からSSHで管理ノードに接続できるか確認します。@の前は管理ノードのユーザー名、後ろはIPアドレスまたはFQDNを入力します
$ ssh username_kanri@xxx.xxx.xxx.xxx
これで外部のパソコンから管理ノードを操作できるようになったので、以後は手元のパソコンを使用して設定を行います
===== 鍵認証の設定 =====
外部からヘッドノードに接続する際にSSH鍵認証のみを許可するようにします
==== SSH鍵の作成 ====
- (SSHの秘密鍵/公開鍵を持っていない場合)手元のパソコンでSSH鍵を作成します
$ ssh-keygen
* このコマンドのあと、SSH秘密鍵のパスワードの設定が要求されるので入力します
* SSH鍵の保存先は次のとおりです
* 公開鍵: ~/.ssh/id_rsa.pub
* 秘密鍵: ~/.ssh/id_rsa
- 秘密鍵とディレクトリのパーミッションを設定します
$ chmod 600 ~/.ssh/id_rsa
$ chmod 700 ~/.ssh/
==== 管理ノードへ公開鍵を設置 ====
- 作成した公開鍵を、scpコマンドを使って管理ノードに送ります
$ scp ~/.ssh/id_rsa.pub username_kanri@xxx.xxx.xxx.xxx:/home/username_kanri/.ssh/authorized_keys
- 管理ノードにログインし、公開鍵とディレクトリのパーミッションを設定します
$ ssh username_kanri@xxx.xxx.xxx.xxx
$ chmod 600 ~/.ssh/authorized_keys
$ chmod 700 ~/.ssh/
==== ログインを鍵認証のみに設定 ====
セキュリティ上、管理ノードへのログインはSSH鍵認証のみにします
- 管理ノードにログインしたまま、次のようにSSHの設定ファイルを書き換えます
$ sudo vi /etc/ssh/sshd_config
(略)
PubkeyAuthentication yes
# Expect .ssh/authorized_keys2 to be disregarded by default in future.
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
(略)
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
PermitEmptyPasswords no
(略)
- SSHを再起動します
$ sudo /etc/init.d/ssh restart
- 管理ノードからログアウトします
$ exit
==== 鍵認証によるログイン ====
手元のパソコンからヘッドノードにログインするには、次のようにします。
オプション-iで秘密鍵のパスを指定します。
$ ssh -i ~/.ssh/id_rsa username_kanri@xxx.xxx.xxx.xxx
==== configファイルの設定 ====
* 鍵のパスや接続先のアドレスをいちいち打ち込むのは面倒くさいので、 ~/.ssh/config というファイルに設定を書き込んでおくと便利です。
* ついでにProxyCommandを使って直接計算ノードにログインできるようにします(多段SSH)。
#ヘッドノード
Host kanri
HostName xxx.xxx.xxx.xxx
User username_kanri
IdentityFile ~/.ssh/id_rsa
#計算ノード
Host keisan11
HostName 192.168.0.11
User username_keisan11
ProxyCommand ssh -W %h:%p kanri
Host keisan12
HostName 192.168.0.12
User username_keisan12
ProxyCommand ssh -W %h:%p kanri
#以下略
次のようにHostを指定するだけでサーバーにログインできます
$ ssh kanri # 管理ノードにつなぐ場合
$ ssh keisan11 # 計算ノードにつなぐ場合
パソコンから管理ノードにログインできるようになったら、あとは遠隔で作業ができます。サーバー室から自分の部屋に戻りましょう。