前回、sshでパスワードなし認証をするために、自分の公開鍵を相手サーバに登録し自動で認証させるようにしました。

sshでパスワードなし認証をしたい場合の設定
1.やりたいことタイトルにはsshと書きましたが、私がやりたかったことはrsyncでパスワードなしで認証をすることでした。ログインの都度パスワードを聞かれていては、バッチ処理で実行することができません。そこで以下の設定を、クライアン...
その際に、Permission denied (publickey) のエラーが発生したので、対応方法をメモしておきます。
Permission denied (publickey) の原因
このエラーの原因は、ディレクトリのパーミッションにあります。
ssh hoge@接続先IP
と接続する場合、hogeユーザのデフォルトディレクトリに対して、自分以外のユーザに書き込み権限がある場合に、このエラーが発生します。
つまり、ディレクトリの権限を、700や744にする必要があるということです。
下記のコマンドを実行して、ホームディレクトリの権限を変更しましょう。
chmod 700 /home/hoge/
# または
chmod 744 /home/hoge/
権限を変更してもエラーが発生する場合
ディレクトリ権限が正しいのに、まだ上記のエラーが発生する場合は、rootユーザで接続しようとしているケースが考えられます。
rootユーザで接続しようとしている場合、以下を確認してください。
vi /etc/ssh/sshd_config
# この設定が存在しているかを確認する
PermitRootLogin forced-commands-only
この設定が有効になっている場合、rootユーザでのログインはコマンドの実行しか認めていません。
そのため、通常のログインはすることができないということになります。
もしrootユーザを扱いたい場合は、この設定をコメントアウトしておく必要があります。
vi /etc/ssh/sshd_config
# コメントアウトする
# PermitRootLogin forced-commands-only
コメント