この記事では、Azure Blob StorageにおけるSFTPの制限や既知の問題点を解説し、ファイル転送のトラブルシューティングやクライアントおよびワークフローの互換性確認を行えます。
重要
SFTPを使用するには階層的な名前空間を有効にする必要があるため、Azure Data Lake Storageの既知の問題はあなたのアカウントにも当てはまります。
サポートされていないクライアント
次のクライアントは、Azure Blob Storage 用の SFTP と互換性がないことがわかっています。 詳細については、「サポートされているアルゴリズム」を参照してください。
- ケンプ
- パラミコ 1.16.0
- SSH.NET 2016.1.0 以前
- Renci SSH.NET 2014.6.0
この一覧は完全なものではなく、時間が経つと変更される可能性があります。
クライアントの設定
SFTP クライアント経由で Azure Blob Storage とファイルを転送するには、次の推奨設定を参照してください。
WinSCP
- Preferences ダイアログで、Transfer>Endurance を選択し、次に Enable transfer resume/transfer to temporary filename を Disable に設定してください。
注意事項
このオプションを有効にしたままにすると、大規模なファイルのアップロード中にエラーやパフォーマンス低下を引き起こすおそれがあります。
サポートされていない操作
| カテゴリ | サポートされていない操作 |
|---|---|
| ランダムな書き込み | READ および WRITE の両方のフラグを含む操作。 例: SSH.NET 作成 API |
| リンク | symlink - シンボリック リンクの作成ln -ハード リンクの作成 |
| 容量情報 |
df - ファイルシステムの使用状況情報 |
| 拡張機能 | サポートされていない拡張機能には fsync@openssh.com、limits@openssh.com、lsetstat@openssh.com、statvfs@openssh.com が含まれますが、これらに限定されません |
| SSH コマンド | SFTP は、サポートされている唯一のサブシステムです。 キー交換後にシェルリクエストが失敗します。 |
| マルチプロトコル書き込み | ランダム書き込みおよび追加 (PutBlock、PutBlockList、GetBlockList、AppendBlock、AppendFile) は、SFTP を使用して作成された BLOB 上の他のプロトコル (NFS、Blob REST、Azure Data Lake Storage REST) からは許可されません。 完全な上書きが許可されます。 |
| 名前の変更操作 | ターゲット ファイル名が既に存在する名前の変更操作は、プロトコル違反です。 このような操作を試みると、エラーが返されます。 詳細については、ファイルの削除と名前変更に関するページを参照してください。 |
| 複数コンテナーにまたがる操作 | コンテナー間の走査や、同じ接続から複数のコンテナーに対する操作の実行はサポートされていません。 |
| 削除の取り消し | ソフト削除されたブロブはSFTPを使って復元できません。
UndeleteREST APIを使いましょう。 |
アクセスACLおよびデフォルトACL
SFTP は現在、 既定の ACL または追加 のアクセス ACL (POSIX
user::、group::、および名前付きユーザーや名前付きグループなどのother::エントリを超える ACL エントリ) をサポートしていません。アクセスパス内の任意のディレクトリ(ユーザーのホームディレクトリを含む)にデフォルトACLや追加のアクセスACLが設定されている場合、接続ユーザーが必要な権限を持っていても
Permission deniedでSFTP操作が失敗します。
回避 策: POSIX user::、 group::、および other:: エントリのみが残るように、SFTP アクセス パス内のすべてのディレクトリ (ユーザーのホーム ディレクトリを含む) から既定の ACL と追加のアクセス ACL を削除します。
ACL とその編集方法の詳細については、「 アクセス制御リスト (ACL)」を参照してください。
ネットワーク
SFTPを使ってストレージアカウントにアクセスするには、ネットワークがポート22でトラフィックを許可する必要があります。
ストレージアカウントは静的IPアドレスをサポートしていません。 この制限はSFTPに特有のものではありません。
アイドルまたは非アクティブな接続は2分後にタイムアウトします。 OpenSSHは応答を停止し、その後切断されます。 一部のクライアントでは、自動的に再接続が行われます。
追加のSFTP制限
パフォーマンスの問題と考慮事項については、Azure Blob Storage での SSH ファイル転送プロトコル (SFTP) のパフォーマンスに関する考慮事項に関するページを参照してください。
デフォルトでは、SFTPを使ってアップロードされたブロブのContent-MD5プロパティはnullです。 このプロパティにMD5ハッシュを入力するには、クライアントがハッシュを計算し、Content-MD5プロパティを設定してからブロブをアップロードする必要があります。
SFTPエンドポイントを経由する最大ファイルアップロードサイズは500GBです。
顧客管理の計画フェイルオーバーは、標準的な汎用v2アカウントおよびプレミアムブロックブロブアカウントのプレビューレベルでサポートされています。 詳細については、「Azure ストレージのディザスター リカバリー計画とフェールオーバー」を参照してください。
ストレージアカウントの冗長性やレプリケーション設定を変更するには、SFTPを無効にする必要があります。 変換が完了したらSFTPを再有効にできます。
SFTPエンドポイントからは
$logs、$blobchangefeed、$root、$webなどの特別なコンテナにはアクセスできません。FTPS と FTP はサポートされていません。
SFTPはTLSやSSLを使いません。
SSH バージョン 2 のみがサポートされています。
ドット (.)、スラッシュ (/)、バックスラッシュ ()、またはその 2 つのシーケンスあるいは組み合わせで終わる BLOB 名またはディレクトリ名は使用しないでください。 パス セグメントはドット (.) で終わる必要はありません。 詳しくは、「コンテナー、BLOB、メタデータの名前付けと参照」を参照してください。
Blob Storage の機能
SFTPサポートを有効にすると、一部のBlob Storage機能は完全にサポートされますが、プレビューレベルのみでサポートされているか、まだサポートされていない機能もあります。
SFTP のサポートが有効になっているアカウントでの各 Blob Storage 機能のサポート状況を確認するには、「Azure ストレージ アカウントにおける Blob Storage 機能のサポート」を参照してください。
トラブルシューティング
Failed to update SFTP settings for account 'accountname'. Error: The value 'True' isn't allowed for property isSftpEnabled.エラーを解決するには、ストレージアカウントが以下の前提条件を満たしているか確認してください:このアカウントは汎用v2またはプレミアムブロックブロブアカウントです。
アカウントには階層的な名前空間が有効化されています。
この
Home Directory not accessibleエラーを解決するには:ユーザーはコンテナに対して適切な権限を持っています。
接続文字列は、ホームディレクトリを持たないローカルユーザーのコンテナ名を指定します。
接続文字列は、ホームディレクトリが存在しないローカルユーザーのコンテナ名を指定します。
接続時の
Received disconnect from XX.XXX.XX.XXX port 22:11:を解決するには、次のことを確認してください:公衆ネットワーク アクセスが
Enabled from all networksまたはEnabled from selected virtual networks and IP addressesです。クライアント IP アドレスがファイアウォールによって許可されています。