お世話になります。
AWS+Ubuntu+nginxでWebサーバーを構築中です。
概要:
nginxの実行ユーザーnginxでssh接続するため、ubuntuと同じ公開鍵をコピーしたが、Permission denied (Publlic keys)というエラーになる。
詳細:
現状では、ローカルのLinuxから、デフォルトのIAMユーザーubuntuで、以下のようにログインできています。
$ ssh ubuntu@(インスタンスのIPアドレス) -i (秘密鍵pemファイル)
default.confでドキュメントルートを以下のように設定しています。
root /usr/share/nginx/foo;
このディレクトリの所有者がnginxになっているので、ファイルを直接アップロードしたり編集したりすることが出来ません。
そこで、nginxでsshログイン出来るようにしたいと思いました。
以下の記事を参考にして
https://ja.amimoto-ami.com/how-to-ssh-as-nginx-user/
ubuntuでsshログインして、以下のように作業しました。
(1) ログインシェルを設定
$ sudo /usr/sbin/usermod -s /bin/bash nginx
(2) パスワードを設定
$ sudo passwd nginx
(3) nginxを停止
$ sudo systemctl stop nginx
(4) nginxのホームディレクトリをドキュメントルートにした
$ sudo /usr/sbin/usermod -d /usr/share/nginx/foo nginx
(5) nginxを停止
$ sudo systemctl start nginx
(6) nginxの公開鍵を置く場所を作成
$ sudo mkdir /usr/share/nginx/foo/.ssh
(7) ubuntuの公開鍵をnginx用にコピー
$ sudo cp /home/.ssh/authorized_keys /usr/share/nginx/foo/.ssh
(8) nginx用の公開鍵の所有者を変更
$ sudo chown nginx /usr/share/nginx/foo/.ssh
(9) nginx用の公開鍵のグループを変更
$ sudo chgrp nginx /usr/share/nginx/foo/.ssh
nginxユーザーのパスワードファイルは以下のようになっています。
$ less /etc/passwd | grep nginx nginx:x:???:???:nginx user,,,:/usr/share/nginx/foo:/bin/bash
公開鍵の存在は以下のように確認しました。
$ ls -la /usr/share/nginx/foo/.ssh/authorized_keys -rw------- 1 nginx nginx 390 10月 25 16:34 /usr/share/nginx/foo/.ssh/authorized_keys
また、もともとあった/home/ubuntu/.ssh/authorized_keysの中身と同じであることも確認しました。
これで、以下のようにログインを試みましたが、エラーになりました。
$ ssh nginx@(インスタンスのIPアドレス) -i (秘密鍵pemファイル) nginx@(インスタンスのIPアドレス): Permission denied (publickey).
なお、ubuntuとしては今もログイン出来ています。
nginxとしてログインできない原因は何でしょうか。
よろしくおねがいします。
★2021-10-26補足
(1)この質問への編集・追記依頼として、ubuntuユーザーが編集する方法も取れるというご意見をいただきましたが、一般ユーザーに権限を与えることになるのでは?と思い、判断を保留中です。
(2)ベストアンサーにいただいた回答のコメントの中に、Document Root/およびDocument Root/.ssh/のパーミッションを変えたらどうなりますかとご意見をいただいて、変更したところ、目的の動作が出来ましたので、そのまま作業を進めることを検討中です。
回答1件
あなたの回答
tips
プレビュー