SFTP 接続を使用して EC2 Linux インスタンスに接続する場合のトラブルシューティング方法を教えてください。

所要時間2分
0

Amazon Elastic Compute Cloud (Amazon EC2) Linux インスタンスにセキュア File Transfer プロトコル (SFTP) 接続を通じて接続できません。または、「remote raddir Permission denied」というエラーが表示されます。

解決策

SFTP 接続を通じて EC2 インスタンスに接続できない理由は複数あります。接続をトラブルシューティングするには、次の手順を実行してください。

インスタンスが SSH 接続の前提条件を満たしていることを確認する

SFTP は SSH 上で動作します。インスタンスがすべての SSH 接続の前提条件を満たしていることを確認します。前提条件のリストについては、「SSH を使用して Linux または macOS から Linux インスタンスに接続する」を参照してください。

詳細メッセージをオンにしてインスタンスにログインし、エラーを特定します。

次の一般的な接続エラーのいずれかが表示される場合があります。

  • Connection timed out または Connection refused
  • Permission denied または Authentication failed
  • Server refused our key

詳細メッセージと SSH エラーの解決方法の詳細については、「SSH を使用して Amazon EC2 Linux インスタンスに接続する際のトラブルシューティングを行うにはどうすればよいですか?」を参照してください。

EC2 シリアルコンソールを有効にすると、それを使用してサポートされている Nitro ベースのインスタンスタイプをトラブルシューティングすることができます。シリアルコンソールは、起動の問題、ネットワーク設定、SSH 設定の問題のトラブルシューティングに役立ちます。シリアルコンソールは、ネットワーク接続が機能していなくてもインスタンスに接続します。Amazon EC2 コンソールまたは AWS コマンドラインインターフェイス (AWS CLI) を通じてシリアルコンソールにアクセスできます。

シリアルコンソールを使用する前に、アカウントレベルでシリアルコンソールへのアクセスを許可する必要があります。次に、IAM ユーザーにアクセス権を付与する AWS Identity and Access Management (IAM) ポリシーを作成します。シリアルコンソールを使用するすべてのインスタンスには、パスワードベースのユーザーが少なくとも 1 人含まれている必要があります。詳細については、「EC2 シリアルコンソールへのアクセス権を設定する」を参照してください。

注: AWS CLI コマンドの実行中にエラーが発生した場合は、最新の AWS CLI バージョンを使用していることを確認してください

認証ログとシステムログにエラーがないか確認します

Amazon Linux、Amazon Linux2、RHEL、Fedora の認証ログ

$ sudo less /var/log/secure

Amazon Linux、Amazon Linux2、RHEL、Fedora の汎用システムログ

$ sudo less /var/log/messages

Debian と Ubuntu の認証ログ

$ sudo less /var/log/auth.log

Debian と Ubuntu の汎用システムログ

$ sudo less /var/log/syslog

Amazon Linux 2023

sshd ログを確認してください。

journalctl -u sshd

汎用システムログを確認してください。

journalctl -a

SSHD 設定ファイルに SFTP 用サブシステムが設定されていることを確認します。

SSHD 設定ファイルに SFTP のサブシステムが設定されていることと、sftp-server の共有オブジェクトファイルがそれぞれのディレクトリに存在することを確認します。SFTP サブシステムがないために SFTP 接続が終了した場合、ログには「subsystem request failed on channel 0」というエラーが表示されることがあります。

RHEL および Fedora ベースのディストリビューション

$ sudo grep Subsystem /etc/ssh/sshd_config
Subsystem sftp    /usr/libexec/openssh/sftp-server
$ sudo ls -l /usr/libexec/openssh/sftp-server
-rwxr-xr-x. 1 root root 100784 Jun 26  2019 /usr/libexec/openssh/sftp-server

Debian および Ubuntu ベースのディストリビューション

$ sudo grep Subsystem /etc/ssh/sshd_config
Subsystem    sftp    /usr/lib/openssh/sftp-server
$ sudo ls -l /usr/lib/openssh/sftp-server
-rwxr-xr-x 1 root root 105608 Mar  4  2019 /usr/lib/openssh/sftp-server

詳細については、Linux マニュアルページの sshd\ _configサブシステムセクションを参照してください。

リモート readdir の権限拒否エラーを解決する

remote readdir Permission denied」というエラーは、ユーザーが SFTP に接続するための適切な権限を持っていないことを示しています。ターゲットディレクトリに切り替えるには、ユーザーには少なくとも読み取り権限と実行権限が必要です。

ユーザーがターゲットディレクトリにアクセスする権限を持っていることを確認します。

ls -ldZ /directory

ユーザーアクセスを制限するアクセスコントロールリスト (ACL) 権限を確認してください。

getfacl /directory

SELinux をアクティベートしたことを確認します。

getenforce

SELinux をアクティベートした場合は、/var/log/audit/audit.log または /var/log/audit.log を調べて、SELinux コンテキストに基づくパーミッション拒否エラーがないか確認してください。

AWS公式
AWS公式更新しました 7ヶ月前
コメントはありません