SSH「Permission denied」エラーの解決方法:安全なログインのためのステップバイステップガイド
SSHキーは、SSHプロトコル内でセッションを認証し、ローカルマシンとSSHサーバー間の接続を確立するために使用されます。通常の運用では、公開鍵を使ってサーバーとの接続を確立するのが最も安全な方法です。一度サーバー接続が確立されると、SSHはログインごとのパスワード入力を不要にし、そのサーバーとの接続を自動的に確立できるようになります。
SSH「Permission denied(権限が拒否されました)」エラーとは
しかし、公開鍵を使用している際に、SSHクライアントからの接続要求がサーバー側で拒否されることがあり、その結果「SSH Permission denied」エラーが発生することがあります。
本記事では、「SSH Permission denied」エラーを修正するためのさまざまな解決策を紹介します。その前に、まずこのエラーが発生する主な原因を見ていきましょう。
このエラーが起こる理由はいくつかあります。最も一般的な原因の一つは、SSHサーバー側でパスワード認証が無効になっていることです。
もう一つのよくある原因は、「ssh」フォルダへのアクセス権がないことで、これは実質的にAuthorized_keysファイルへのアクセスが制限されていることを意味します。
解決策1:SSHサーバーでパスワード認証を許可する
前述のとおり、サーバーでパスワード認証によるSSH接続が有効になっていない場合、接続はほぼ確実に失敗します。
- まずSSHサーバーにアクセスし、そのPC/サーバー上で以下のコマンドを実行して設定ファイルを開きます。
sudo nano /etc/ssh/sshd_config
このコマンドにより、設定ファイルがターミナル上で開きます。
- 設定ファイル内で「PasswordAuthentication」という行を探し、行頭の「#」記号を削除してコメントを解除(有効化)します。
- 編集が完了したら、「CTRL + O」を押して保存し、「CTRL + X」で終了します。その後、以下のコマンドでSSHサービスを再起動します。
sudo systemctl restart sshd
- ここまで完了したら、クライアントから再度SSHサーバーへ接続を試み、正常に接続できることを確認します。
これでエラーは解決され、SSHサーバーへの接続に成功しました。
解決策2:公開鍵認証を有効にする
場合によっては、「SSH Permission Denied (public key)」というエラーが表示されることがあります。このエラーは、SSHサーバーで公開鍵認証が有効になっていないことが原因です。
- この場合は、SSHサーバー側のPCにアクセスし、以下のコマンドで設定ファイルを開きます。
sudo nano /etc/ssh/sshd_config
設定ファイル内で、rootログインを無効化し、「PubkeyAuthentication」を有効にします。
- 続いて、設定ファイル内で「UsePAM」オプションも有効になっていることを確認します。
- 再び「CTRL + O」で保存し、「CTRL + X」で終了した後、以下のコマンドでSSHサービスを再起動します。
sudo systemctl restart sshd
- 完了したら接続を再試行し、正常に接続できることを確認します。
これで「SSH Permission Denied (Public Key)」エラーは解決されました。
解決策3:SSHディレクトリの権限を適切に設定する
多くの場合、公開鍵は「ssh」ディレクトリ内の「authorized_keys」ファイルに保存されています。このファイルや親ディレクトリの権限が正しく設定されていないと、SSH接続時にエラーが返されます。
- まず、以下のコマンドで「authorized_keys」ファイルの権限を変更します。
sudo chmod 600 ~/.ssh/authorized_keys
このコマンドにより、authorized_keysファイルに対する読み取り・書き込み権限が所有者のみに付与されます。
- 次に、以下のコマンドで親ディレクトリに実行権限を付与します。
sudo chmod 700 ~/.ssh
これらのコマンドを実行した後、SSHサーバーへの接続を試みてください。
出力結果を確認すると、エラーが解決されたことがわかります。
おまけ:パスワード関連で発生するPermission Deniedエラー
「Permission Denied」エラーは、SSHサーバーのパスワードが正しくない場合にも発生します。主な原因は入力ミスですが、サーバー側でパスワードが変更されたことにクライアントが気づいていないケースもあります。この場合、パスワードを入力するとターミナルにエラーが表示され、再入力を求められます。
このような場合は、SSHサーバーの管理者やサポートに連絡してパスワードが変更されていないか確認するか、入力ミスがないか再度チェックしましょう。原因を特定できれば、問題なくSSHサーバーに接続できるようになります。
まとめ
SSH Permission Deniedエラーは特別に珍しいものではなく、主に「パスワード認証が無効」「公開鍵認証が無効」「sshまたはauthorized_keysディレクトリの権限が不正」のいずれかが原因で発生します。本ガイドでは、それぞれの解決策を段階的に解説しました。また、サーバー側でのパスワード変更や単純な入力ミスも原因となり得るため、その場合はサポートへの問い合わせや、パスワードの慎重な再入力を心がけてください。
著者について
Muhammad Zubyan(ムハンマド・ズビヤン)
Muhammad Zubyanは、7年以上の経験を持つGoogle ITサポートプロフェッショナル認定資格者です。1,500台以上のコンピューターを扱った実務経験を通じて、Windows関連の問題やエラーの複雑な根本原因を特定し、トラブルシューティングする高いスキルを身につけています。Appualsのシニアエディターを務める傍ら、現在はゲーマーからカジュアルユーザーまで幅広く対応できる独自のゲーム最適化ソフトウェアを開発中です。
-
「中央ディレクトリ終端署名が見つかりません」エラーの原因と解決方法
圧縮ファイルは現代のデジタルライフにおいて欠かせない存在となっています。ファイルサイズが日々大きくなる中、データを効率的に保存・転送するために圧縮技術を活用する人はますます増えています。しかし、圧縮ファイルを解凍しようとした際に、「End-of-central-directory signature not found(中央ディレクトリ終端署名が見つかりません)」というエラーメッセージが表示され、困っているユーザーも少なくありません。このエラーは、unzipコマンドなどでファイルを展開しようとしたときに発生します。 エラーが発生する主な原因 このエラーメッセージの原因は比較的わかりやすいも
-
LinuxでMACアドレスを確認する方法|コマンドラインクイックガイド
パソコンに接続されているネットワークインターフェースのMACアドレスを調べたいとき、Linuxならとても簡単に確認できます。すべてのコンピューターのネットワークインターフェースには、固有のMAC(Media Access Control)アドレスが割り当てられており、それがどのデバイスに属するものかを識別する役割を果たします。MACアドレスは世界に一つしか存在せず、まったく同じものはありません。そのため、複数のネットワークインターフェースを搭載したマシンでは、確認すべきアドレスも複数になるわけです。 MACアドレスを調べるにはコマンドラインインターフェースを使いますが、root権限でログインす