機械の中の学習日誌

社畜によるIT技術メモです。今日も元気です。

SSHで鍵認証設定時の注意点メモ

ある日のこと、scpコマンドでサーバA(Unix)からサーバB(Linux)にファイルを送ろうと思った。
認証は公開鍵認証。

鍵の設定は以下を参照しつつながなく終了。

qiita.com


しかし、いざ、scpコマンドを実行してみても、パスワードを求められてしまう。。
とりあえず、鍵認証を使ったsshの-v オプションで詳細を見てみるも原因はよく分からない。

ssh -v -i .ssh/id_rsa userxx@serverB

オプションのvを複数つけるとより詳細レベルのログが出るようなので、追加して、-vvvとしてみるもますます分からない

ssh -vvv -i .ssh/id_rsa userxx@serverB

鍵認証時の注意点として、以下のディレクトリのアクセス権限が600である必要があるようだ。

  • ~/.ssh/
  • authorized_keys

しかし、サーバBの認証ユーザ(userxx)の~/.ssh/ と authorized_keysのアクセス権は、600と設定しており、特に問題なさそう。(Permission deniedも特に出ていない)
サーバA側のSSHの設定が悪いのかと、sshd_configの設定を変えてみるもうまくいかず・・・


どうしたらイインダーと、いろいろ試したり、ネットを探ったり、わっしょわっしょい、お祭り騒ぎを数時間やっていたところ、以下のページに行き当たり、サーバB側のログ(/var/log/secure) を見てみることにした。

qiita.com


・・・すると、なんということでしょう。

以下のメッセージが表示されているではありませんか。

Authentication refused: bad ownership or modes for directory /home/userxx

やはり、権限回りが悪いのかしらと、サーバBのuserxxディレクトリの権限を見てみると、userxxのホームディレクトリの権限が777となっているではありませんか。

ひょっとしたら、これが原因?と思い、ホームディレクトリを700に変更し、サーバAから再度実行。そして、鍵認証によるscpコマンドが、正常に動作したのでした。ヨカッタ。


認証関連のファイルが、他のユーザが書き込める場所に置いてあって、信用できないから、認証お断りヨ!ということなのでしょうか。
普通はホームディレクトリに777にすることはないんでしょうけど、今の開発環境ではこのような設定にしているようだ。


鍵認証を使ったscpのコマンド

scp -i ~/.ssh/id_rsa testfile.txt userxx@serverB:/home/userxx/