Permission denied (publickey)

前回、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

コメント

タイトルとURLをコピーしました