Une question plus ancienne, je sais, mais les temps changent et certaines techniques aussi. Juste au cas où quelqu'un cherche toujours un moyen simplifié pour accomplir ceci.
Hypothèses
- Votre utilisateur sur le serveur est un sudoers.
- Vous utilisez Windows 10.
- Les fichiers dans
/var/www
doivent appartenir à l'utilisateur:groupe www-data:www-data
Concept
Le concept consiste à combiner des commandes à distance via ssh
et des transferts de fichiers avec scp
sans avoir recours à des interfaces graphiques telles que PuTTy
ou WinSCP
. Ces commandes peuvent être exécutées depuis un Command Prompt
ou PowerShell
. Il y a cinq tâches principales à effectuer:
- Configuration de l'environnement
- Transférer des fichiers vers le serveur
- Définir les permissions des fichiers à distance
- Transférer entre des dossiers distants
- Nettoyage
Les tâches 3 à 5 peuvent être effectuées en une seule étape. Si vous prévoyez de faire cela souvent, laisser la configuration de l'environnement vous permettra d'omettre les tâches 1 et 5.
Configuration de l'Environnement
Vous avez peut-être déjà un dossier que vous pouvez utiliser comme un dépôt temporaire pour le transfert. Sinon, vous pouvez exécuter :
ssh utilisateur@serveur.tld "mkdir ~/wwwtemp"
En fonction des paramètres de votre serveur, vous pouvez être invité ou non à entrer le mot de passe/phrase secrète de l'utilisateur pour authentifier la session ssh
.
Une fois la session authentifiée, la commande mkdir ~/wwwtemp
s'exécutera, ensuite la session ssh
se terminera et vous reviendrez à votre invite de commande (Command Prompt
ou PowerShell
).
Transférer des Fichiers vers le Serveur
La prochaine étape consiste à transférer les fichiers de la machine Windows locale vers le serveur Ubuntu en utilisant scp
comme suit :
scp -R chemin\local utilisateur@serveur.tld:~/wwwtemp/
En fonction de la méthode d'authentification de votre serveur, vous devrez peut-être entrer un mot de passe/phrase secrète ou non.
Permissions et Destination Finale des Fichiers
Une fois le transfert de fichiers terminé, vous pouvez exécuter une série de commandes via ssh
comme suit :
ssh -t utilisateur@serveur.tld "sudo chown -R www-data:www-data ~/wwwtemp && sudo mv -R ~/wwwtemp/* /var/www/ && sudo rmdir ~/wwwtemp"
Encore une fois, en fonction de la méthode d'authentification de votre serveur, vous pouvez être invité ou non à entrer un mot de passe/phrase secrète
. Indépendamment de votre méthode d'authentification, sudo
vous demandera le mot de passe de l'utilisateur. Sauf si, bien sûr, vous avez désactivé l'exigence de mot de passe lorsque l'utilisateur exécute chown
mv
et rmdir
. Consultez cette question pour des conseils sur la façon de le faire.
Cette étape couvre les tâches 3 à 5 :
sudo chown -R www-data:www-data ~/wwwtemp
définit de manière récursive les permissions de fichier souhaitées sur les fichiers que vous venez de télécharger.
sudo mv -R ~/wwwtemp/* /var/www/
déplace de manière récursive le contenu du dépôt temporaire vers sa destination finale.
sudo rmdir ~/wwwtemp
supprime le dépôt temporaire. Il est nécessaire d'utiliser sudo
ici car nous avons changé le propriétaire du répertoire dans la tâche 3.
Évidemment, &&
sépare chaque commande. Les commandes seront exécutées dans l'ordre. Si vous prévoyez de conserver le dépôt wwwtemp
, vous pouvez omettre la commande finale de la séquence.
Notes
Vous pouvez omettre && sudo rmdir ~/wwwtemp
à la fin de la chaîne de commande ssh
finale si vous souhaitez continuer à utiliser le dépôt temporaire à l'avenir. Ce faisant, vous pouvez aussi omettre la première commande ssh
chaque fois que vous souhaitez transférer des fichiers vers votre serveur de cette manière.