SSHで鍵認証設定時の注意点メモ
ある日のこと、scpコマンドでサーバA(Unix)からサーバB(Linux)にファイルを送ろうと思った。
認証は公開鍵認証。
鍵の設定は以下を参照しつつながなく終了。
しかし、いざ、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) を見てみることにした。
・・・すると、なんということでしょう。
以下のメッセージが表示されているではありませんか。
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/