🙆‍♀️

SSHでの最初の通信で躓いた、なんとかなった|Ubuntu server

に公開

こんにちは、

現在クラスターの環境構築やクラスター計算をやってみたくて、ラズパイでそれらの環境を作っている最中です。

まずは、ラズパイ同士でSSH通信できるようにしたかったのですが、いきなり躓いたので解決できた方法を記録します。

躓くまで

ラズパイクラスターの構成

今回のラズパイクラスターでは、一台のラズパイをMaster(司令役)、もう二台のラズパイをWorker(計算役)としました。

pi0: Master

↓ がんばって計算しろ!

pi1: Worker1
pi2: Worker2

なので、ラズパイ0で他二台のラズパイを操作したいです。

SSH通信ができない

クラスターでは鍵認証でSSHしたいので、以下のようなステップで進めようとしました。

  1. ラズパイ同士をLANケーブルでつなぐ(スイッチ経由で)
  2. EthernetのIP固定
  3. pingで通信確認
  4. パスワードでSSH通信
  5. 鍵を共有

しかし、4で躓きました。パスワードでの認証が進まずにいました。

SSHでパスワードで認証を通す際、通信される側(今回ならWorker側)での設定が必要で、
PasswordAuthenticationを有効にする必要があります。

おそらく、デフォルトでは "no" になってるか、コメントアウトされています。
それを "yes" にするかコメントアウトから解放します。

terminal (Worker)
sudo vi /etc/ssh/sshd_config
/etc/ssh/sshd_config
PasswordAuthentication yes
terminal (Worker)
sudo systemctl restart ssh   #設定の反映 

しかし、この設定だけでは不十分だったらしく、
以下を試してもログインするためのやりとり(パスワード入れてくださいみたいなの)に進みませんでした。

terminal (Master)
ssh-copy-id ubuntu@[WorkerのIP]
Permissoin denied (Pubkey)

ここで長らく足踏みしていました。

解決

解決策

必要な設定がもう一つあったらしく、sshd_config で、

terminal (Worker)
sudo vi /etc/ssh/sshd_config
/etc/ssh/sshd_config
KbdInteractiveAuthentication yes

このような設定が必要でした。

terminal (Worker)
sudo sshd -t   # 何も表示されなければOK
sudo systemctl restart ssh   #設定の反映も忘れずに

解説と動作確認

これは、パスワード入力を含む「対話型」のログインを許可するものです。
これの設定がなかったため、SSHを試みてもパスワードを求められることすらなく拒否されていた状況でした。

また、このコマンドですが、これはSSHの設定ファイル(sshd_config)に書き間違いがないかチェックするためのものです。

terminal (Worker)
sudo sshd -t

たまに、以下のような警告が出ますが、これは無視しても大丈夫だと Gemini先輩が言ってました(解説になってない)。

missing privilage separation directory: /run/sshd...

鍵をWorker側に写してSSHできてるか確認できたら、もうパスワードは不要なので、以下の設定を再度 "no" にしておきます。

/etc/ssh/sshd_config (Worker)
PasswordAuthentication no
KbdInteractiveAuthentication no

やったね

ラズパイクラスターが一区切りついたら、まとめて記事にしたいなと思います。
それまで躓く度に備忘録として記事をちょこちょこかければと思います。

Discussion