Indigo VPSで借りたサーバーでユーザーを追加し、クライアントソフトで最初から追加ユーザーでログインすると失敗する現象の原因と対処法についてのメモ。
基本的にはユーザー名、パスワードの入力ミスが原因のことが多いようですが、今回は鍵認証のファイルを入れ忘れるという大ポカでした。
目次
-
状況について
Indigo VPSでサーバを借りたのでSSHを使用して操作することになります。
CentOSのサーバを借りたので、デフォルトのユーザーは「centos」ユーザーになるかと思います。クライアントソフトの設定をしたら「centos」でつなぐことができました。
今後作業するためにユーザー(例:XXXX)を追加してみました。
useradd XXXX
passwd 【XXXXのパスワード】
sudo usermod -G wheel XXXX
最後のは追加ユーザーをrootと同じグループにして、rootでやりたいことをできるようにするためです。
su XXXX
でユーザーを切り替えられることを確認できたので、クライアントソフト(RLogin)の設定を書き換えてログインしてみました。失敗しました。
-
エラーについて
その時表示されたエラーメッセージは以下の通り。
SSH2 User Auth Failure “publickey.gssapi-keyex,gssapi-with-mic”Status=1004
一度「centos(初期登録されてるユーザー名)」で接続したあとであればいつでも「XXXX」に切り替えるできますが、クライアントソフトで最初から「XXXX」ででログインしようとすると失敗します。
エラーメッセージについていくつかのサイトを調べてみたらユーザー名が間違っている場合に発生することが多いそうです。ただ、今回は「centos」→「XXXX」には切り替えられるので入力ミスではないようです。
鍵認証が失敗しているようなので、鍵を別のものと勘違いしているかと思いましたが、「centos」でログインする時と同じものを使っているので鍵の設定ミスでもない。なぜなのか見当もつきませんでした。
その後、SSHの設定ファイルをいじったり、「XXXX」のグループを「centos」と完全にそろえてみたりしましたがやはり駄目。ググっても同じ状態になっている人がいない。
四苦八苦して、ようやく原因がわかりました。というか、ずぶの素人以外は当たり前すぎて「何をやってるんだコイツは」と思うかもしれません。
-
原因と対処法
結論からいうと、追加したユーザーのディレクトリに鍵(.ssh/authorized_keys)を追加していなかったというポカミスでした。
初期ユーザーが用意されていたせいで自分で公開鍵認証の設定をしなかったせいで、そういったところがわかってませんでした。Linuxのサーバの知識がなさ過ぎたせいです。
てっきりrootのフォルダかどっかに公開鍵の関係ファイルが入っていてそこを参照してるから個々のユーザーで鍵認証用のフォルダを追加する必要はないのだと思ってました。
centosから鍵認証関係のフォルダをコピーし、念のため認証鍵の入ってるディレクトリの所有者・グループをあわせておけばOKです。
細かく説明すると、まず鍵認証関係のディレクトリを「centos」の中から「XXXX」のディレクトリにもコピーします。
cp -r /home/centos/.ssh/ /home/XXXX/
※ディレクトリのコピーなので「-r」をつけます。
それから所有者・グループを変えます。
chown -R XXXX:XXXX /home/XXXX/.ssh/
一応sshdの再起動をしておきます。
systemctl restart sshd
その後クライアントソフトを立ち上げなおして、最初から「XXXX」でログインしたところ無事成功しました。
つまづくポイントが初歩的過ぎる(あと間違いやすいポイントがはっきりしている)とかえってつまづいている人が少なく、なかなかネットで事例が引っ掛からないということを学びました。 こういう時はQ&Aで質問した方が早く解決する気がします。