====== 概要 ====== * SSHを利用して、ノード間の通信や外部からクラスタ計算機への接続ができるようにします * セキュリティ上の安全のため、外部からのログインは鍵認証のみで行うようにします * 管理ノードにグローバルIPアドレスが設定されてない場合は、外部から管理ノードにSSH接続ができません * このページでは、管理ノードの固定IPアドレスを xxx.xxx.xxx.xxx とします ====== 設定手順 ====== ===== SSHの導入 ===== - (UFWを使用している場合)外部から管理ノードへのSSHによるアクセスを許可します。$ sudo ufw allow ssh - 管理ノードにSSHをインストールします(計算ノードのOSインストール時に導入していなければ、計算ノードにも) $ sudo apt install ssh - 管理ノードから計算ノードにSSHで接続できるか確認します。@の前は計算ノードのユーザー名、後ろは計算ノードのプライベートIPアドレスを入力します。 $ ssh username_node11@192.168.0.11 * 計算ノードからログアウトしてヘッドノードに再び戻るには$ exitとします。 - (管理ノードにグローバルIPアドレスを設定した場合)別途インターネットに接続されたパソコンでターミナルを開き、外部からSSHで管理ノードに接続できるか確認します。@の前は管理ノードのユーザー名、後ろはIPアドレスまたはFQDNを入力します $ ssh username_head@xxx.xxx.xxx.xxx これで外部のパソコンから管理ノードを操作できるようになったので、以後は手元のパソコンを使用して設定を行います ===== 鍵認証の設定 ===== 外部から管理ノードに接続する際にSSH鍵認証を使用します。手元のパソコンで作業します。 ==== SSH鍵の作成 ==== - (SSHの秘密鍵/公開鍵を持っていない場合)手元のパソコンでSSH鍵を作成します $ ssh-keygen * このコマンドのあと、SSH秘密鍵のパスワードの設定が要求されるので入力します * SSH鍵の保存先は次のとおりです * 公開鍵: ~/.ssh/id_ed25519.pub * 秘密鍵: ~/.ssh/id_ed25519 * OpenSSH 9.5以降は暗号方式のデフォルトがRSAからED25519に変更になりました。できるだけED25519に切り替えていきましょう。 - 秘密鍵とディレクトリのパーミッションを設定します $ chmod 600 ~/.ssh/id_ed25519 $ chmod 700 ~/.ssh/ ==== 管理ノードへ公開鍵を設置 ==== - 作成した公開鍵を、scpコマンドを使って管理ノードに送ります $ scp ~/.ssh/id_ed25519.pub username_head@xxx.xxx.xxx.xxx:/home/username_head/.ssh/authorized_keys - 管理ノードにログインし、公開鍵とディレクトリのパーミッションを設定します $ ssh username_head@xxx.xxx.xxx.xxx $ chmod 600 ~/.ssh/authorized_keys $ chmod 700 ~/.ssh/ ==== ログインを鍵認証のみに設定 ==== セキュリティ上、管理ノードへのログインはSSH鍵認証のみが安全です。 - 管理ノードにログインしたまま、次のようにSSHの設定ファイルを書き換えます $ sudo nano /etc/ssh/sshd_config (略) # 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_ed25519 username_head@xxx.xxx.xxx.xxx ==== configファイルの設定 ==== * 鍵のパスや接続先のアドレスをいちいち打ち込むのは面倒くさいので、 ~/.ssh/config というファイルに設定を書き込んでおくと便利です。 * ついでにProxyCommandを使って直接計算ノードにログインできるようにします(多段SSH)。 #ヘッドノード Host head HostName xxx.xxx.xxx.xxx User username_head IdentityFile ~/.ssh/id_ed25519 #計算ノード Host node11 HostName 192.168.0.11 User username_node11 ProxyCommand ssh -W %h:%p head Host node12 HostName 192.168.0.12 User username_node12 ProxyCommand ssh -W %h:%p head #以下略 次のようにHostを指定するだけでサーバーにログインできます $ ssh head # 管理ノードにつなぐ場合 $ ssh node11 # 計算ノード(node11)につなぐ場合 パソコンから管理ノードにログインできるようになったら、あとは遠隔で作業ができます。サーバー室から自分の部屋に戻りましょう。 ==== 参考 ==== * [[https://qiita.com/bezeklik/items/b728ea2de4924f89a787|OpenSSH (sshd) のデフォルト値 #OpenSSH - Qiita]]