このトピックでは、ossftpに関するよくある質問に対する回答を提供します。
FTPサーバーへの接続に失敗しました
- 問題の説明
注: サーバーの接続に失敗した場合に返されるエラーメッセージ。
- 原因
- 入力されたAccessKey IDとAccessKey secretは無効です。
- RAMユーザーのAccessKey IDとAccessKey secretが使用されます。 RAMユーザーには、Object Storage Service (OSS) リソースへのアクセス権限がありません。
- 解決策
- 有効なAccessKey IDとAccessKey secretを入力し、サーバーに再接続します。
- ビジネス要件に基づいてRAMユーザー権限を付与します。
次のセクションでは、一般的なシナリオでRAMユーザーに必要な権限について説明します。
- OSSバケット内のデータの読み取り
oss:ListObjects
およびoss:GetObject
権限が必要です。 - OSSバケットへのデータの書き込み
oss:ListObjects
およびoss:PutObject
権限が必要です。 - OSSバケットからデータを削除する
oss:ListObjects
およびoss:DeleteObject
権限が必要です。
他のシナリオでRAMユーザーに権限を付与する方法の詳細については、「RAMポリシーの一般的な例」をご参照ください。
- OSSバケット内のデータの読み取り
FileZillaを使用してFTPサーバーに接続するときに返される501エラー
- 問題の説明LinuxでFTPサーバーを実行し、FileZillaを使用してサーバーに接続すると、HTTPステータスコード501が返されます。
501がパスをデコードできません (サーバーファイルシステムのエンコードがANSI_X3.4-1968です)
- 原因
漢字が正しくエンコードされていません。
- 解決策
- start.shが実行されるターミナルに次のコマンドを入力します。
$ export LC_ALL=en_US.UTF-8; export LANG="en_US.UTF-8"; locale
- FileZillaを再起動します。
- start.shが実行されるターミナルに次のコマンドを入力します。
ossftpにログインした後にオブジェクトをリストするときに発生するタイムアウトによる切断
バケットのルートディレクトリには、多数のオブジェクトとディレクトリが格納されています。 ossftpにログインすると、FTPサーバーはバケットのルートディレクトリにあるすべてのオブジェクトとディレクトリを一覧表示しようとします。 一度に最大1,000のオブジェクトとディレクトリを一覧表示できます。 ルートディレクトリに100万を超えるオブジェクトとディレクトリが格納されている場合、オブジェクトとディレクトリを一覧表示するために1,000を超えるリクエストが送信されるため、タイムアウトが発生します。
データ送信の失敗
- 原因
FTPサーバーの制御ポートとデータポートは異なります。 FTPサーバーがパッシブモードでデータを転送する必要がある場合、ポートはランダムに選択され、クライアントへの接続が有効になります。 FTPサーバを実行するマシンにポート制限があると、データの転送に失敗することがあります。
- 解決策
ftpserver.py
の実行時に、-- passive_ports_startおよび -- passive_ports_endオプションを指定して、使用するローカルポートの範囲を設定し、範囲内のポートを有効にします。
クライアントとFTPサーバー間の頻繁な切断
- 原因
クライアントとFTPサーバー間の接続がタイムアウトします。
- 解決策
クライアントとFTPサーバー間の接続がタイムアウトしないように指定します。 たとえば、FileZillaで
を選択し、タイムアウト期間を0に設定します。