# Utilisation du protocole SFTP sur Azure Blob Storage

Le support natif du protocole **SFTP (SSH File Transfer Protocol)** par Azure Blob Storage permet de combiner la robustesse du stockage objet avec les méthodes de transfert de fichiers traditionnelles. Contrairement à un serveur Linux classique, l'authentification repose sur une structure d'identifiant spécifique.

## 1\. Architecture de l'identifiant utilisateur

C'est le point le plus critique de la configuration. Azure utilise un système de **noms d'utilisateurs composés** pour router la session SSH vers la bonne instance de stockage.

### La structure "Dot-Notation"

L'identifiant n'est pas simplement le nom créé dans le portail, mais une concaténation :

> `[NomDuCompteStockage].[NomUtilisateurLocal]`

*   **Nom du compte de stockage :** Votre ressource Azure (ex: `starkindustries`).
    
*   **Nom de l'utilisateur local :** L'entité créée dans l'onglet "SFTP" du compte de stockage (ex: `jarvis`).
    
*   **Résultat :** `starkindustries.jarvis`
    

### Cas du ciblage par conteneur

Si vous n'avez pas défini de "Home Directory" (répertoire personnel) pour l'utilisateur, ou si vous voulez forcer la connexion à un conteneur spécifique, le format devient : `nomducompte.nomconteneur.nomutilisateur`

## 2\. Prérequis et Limitations Techniques

Avant de tenter une connexion, assurez-vous que les paramètres suivants sont respectés :

1.  **Espace de noms hiérarchique (HNS) :** La fonctionnalité SFTP nécessite que l'option **"Enable hierarchical namespace"** soit activée sur le compte de stockage.
    
2.  **Point de terminaison :** L'adresse de connexion est toujours le point de terminaison Blob : [`nomducompte.blob.core.windows.net`](http://nomducompte.blob.core.windows.net).
    
3.  **Authentification :** Azure supporte les **mots de passe générés** ou les **clés publiques SSH**.
    

## 3\. Matrice de Connexion (Tableau de référence)

Voici comment remplir les champs dans un client comme **FileZilla** ou **WinSCP** :

<table style="min-width: 50px;"><colgroup><col style="min-width: 25px;"><col style="min-width: 25px;"></colgroup><tbody><tr><td colspan="1" rowspan="1"><p><strong>Champ</strong></p></td><td colspan="1" rowspan="1"><p><strong>Valeur</strong></p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>Protocole</strong></p></td><td colspan="1" rowspan="1"><p>SFTP (Port 22)</p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>Hôte</strong></p></td><td colspan="1" rowspan="1"><p><a target="_self" rel="noopener noreferrer nofollow" class="text-primary underline underline-offset-2 hover:text-primary/80 cursor-pointer" href="http://monstockage.blob.core.windows.net" style="pointer-events: none;"><code>monstockage.blob.core.windows.net</code></a></p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>Utilisateur</strong></p></td><td colspan="1" rowspan="1"><p><code>monstockage.monutilisateur</code></p></td></tr><tr><td colspan="1" rowspan="1"><p><strong>Authentification</strong></p></td><td colspan="1" rowspan="1"><p>Clé SSH (.ppk/.pem) ou Mot de passe</p></td></tr></tbody></table>

## 4\. Exemple de connexion via CLI (OpenSSH)

Pour les administrateurs utilisant le terminal, la commande doit être formatée ainsi (attention aux guillemets si des caractères spéciaux sont présents) :

```shell
sftp monstockage.monutilisateur@monstockage.blob.core.windows.net
```

## 5\. Pourquoi ne peut-on pas omettre le nom du compte ?

Il est crucial de comprendre qu'Azure n'héberge pas un serveur SFTP dédié par client, mais une **passerelle massivement multi-entités**.

*   Si vous envoyez juste `monutilisateur`, la passerelle Azure ne sait pas vers quel compte de stockage (parmi les millions existants) diriger la requête.
    
*   Le préfixe `nomducompte.` sert de **sélecteur de routage** au niveau de la couche réseau d'Azure.
    

## 6\. Bonnes pratiques de sécurité

*   **Désactiver l'accès public :** Utilisez des points de terminaison privés (Private Endpoints) ou restreignez l'accès aux adresses IP de votre entreprise via le pare-feu du compte de stockage.
    
*   **Privilégier les clés SSH :** Le mot de passe généré par Azure est complexe, mais la clé SSH reste la norme industrielle pour l'automatisation.
    
*   **Permissions granulaires :** Lors de la création de l'utilisateur local, limitez ses droits (Lecture, Écriture, Liste, Suppression) au strict nécessaire pour chaque conteneur.
    

* * *

## Liens utiles :

Voici les ressources officielles de Microsoft pour approfondir et voir des exemples concrets :

*   **Documentation principale :** [Support du protocole SFTP pour Azure Blob Storage](https://learn.microsoft.com/fr-fr/azure/storage/blobs/secure-file-transfer-protocol-support)
    
*   **Guide de connexion :** [Se connecter à Azure Blob Storage à l'aide d'un client SFTP](https://learn.microsoft.com/fr-fr/azure/storage/blobs/secure-file-transfer-protocol-support-connect) (Contient des exemples pour OpenSSH et PowerShell).
    
*   **Gestion des utilisateurs :** [Autoriser l'accès aux clients SFTP (Utilisateurs locaux)](https://learn.microsoft.com/fr-fr/azure/storage/blobs/secure-file-transfer-protocol-support-how-to?tabs=azure-portal)
