`gcloud calculer la copie des fichiers`: permission refusée lors de la copie de fichiers
Je vais avoir un moment difficile la copie des fichiers sur mon Google Compute Engine. Je suis en utilisant un serveur Ubuntu sur Google Compute Engine.
Je suis en train de faire cela à partir de mon OS X terminal et je suis déjà autorisé à l'aide de gcloud
.
local:$ gcloud compute copy-files /Users/Bryan/Documents/Websites/gce/index.php example-instance:/var/www/html --zone us-central1-a
Warning: Permanently added '<IP>' (RSA) to the list of known hosts.
scp: /var/www/html/index.php: Permission denied
ERROR: (gcloud.compute.copy-files) [/usr/bin/scp] exited with return code [1].
Êtes-vous en mesure de ssh à votre instance de votre local OS X machine à l'aide de gcloud calculer ssh <exemple-name> commande?
oui, j'ai utilisé
L'ajout de
Il semble être un problème de permissions sur le répertoire de destination, je pense que la solution serait de copier les fichiers quelque part peut-être dans /tmp et de les copier dans /var/www/html lorsque vous en ssh à l'instance.
oui, j'ai utilisé
gcloud compute --project "<PROJECT>" ssh --zone "us-central1-a" "<compute-name>"
L'ajout de
sudo
au début de votre commande?Il semble être un problème de permissions sur le répertoire de destination, je pense que la solution serait de copier les fichiers quelque part peut-être dans /tmp et de les copier dans /var/www/html lorsque vous en ssh à l'instance.
OriginalL'auteur bryan | 2015-01-06
Vous devez vous connecter pour publier un commentaire.
insérer
root@
avant le nom de l'instance:Je peux faire un ssh sur une machine virtuelle instance, et je suis en utilisant le préfixe
root@
mais je reçois toujours le même message d'erreur surgcloud compute copy-files
. Avez-vous d'autres suggestions de ce que mon aide dans ce contexte?Ah, plus de preuves. Je ne peux pas
ssh
dans la VM de l'instance en tant que root. C'est peut-être mieux àscp
ces fichiers dans un lieu intermédiaire, comme/tmp
que d'essayer de l'activer.Cette réponse dépend de la façon dont votre accès SSH est le programme d'installation. Il existe de nombreuses raisons de ne pas autoriser root par SSH directement et, par conséquent, cette solution ne fonctionnera pas pour le cas où racine a été refusé. Le seul moyen que je vois c'est de diviser en 2 étapes: 1) copier les fichiers dans /tmp, et 2) ssh et utiliser le système de
sudo cp
commande pour copier à l'emplacement permanent.depuis que cette question est en se référant à Google Compute Engine, vous ne pouvez pas vous en SSH à une machine virtuelle comme
root
directement, c'est par la conception de garder votre VM plus sûr. Voir ma réponse de quoi faire dans ce cas.OriginalL'auteur
La raison pour laquelle cela ne fonctionne pas, c'est que votre nom d'utilisateur n'a pas les autorisations sur le GCE VM instance et ne peut donc pas écrire à
/var/www/html/
.Note que depuis que cette question est à propos de Google Compute Engine machines virtuelles, vous ne pouvez pas utiliser le protocole SSH à une machine virtuelle comme
root
, et vous ne pouvez pas copier des fichiers directement commeroot
, pour la même raison:gcloud compute copy-files
utilisescp
qui s'appuie surssh
pour l'authentification.Solutions possibles:
(également suggéré par Faizan dans les commentaires), cette solution nécessite deux étapes à chaque fois
utilisation
gcloud calculer la copie des fichiers
pour le transfert de fichiers/répertoires où votre utilisateur peut écrire à, par exemple,/tmp
ou/home/$USER
de connexion de la CME VM via
gcloud calculer ssh
ou via le SSH bouton sur la console et de copie à l'aidesudo
pour obtenir les autorisations appropriées:# note: sample command; adjust paths appropriately
sudo cp -r $HOME/html/* /var/www/html
cette solution est une étape avec au préalable un travail de préparation:
un temps d'installation: donnez votre nom d'utilisateur d'accès en écriture à
/var/www/html
directement, ce qui peut être fait de plusieurs façons; voici une approche:# make the HTML directory owned by current user, recursively
sudo chown -R $USER /var/www/html
maintenant, vous pouvez exécuter la copie en une seule étape:
gcloud compute copy-files /Users/Bryan/Documents/Websites/gce/index.php example-instance:/var/www/html --zone us-central1-a
OriginalL'auteur
J'utilise un script bash pour copier à partir de ma machine locale de répertoire en écriture sur la télécommande de la CME de la machine; puis, à l'aide de ssh déplacer les fichiers.
Vous devez également définir GCE_USER et GCE_INSTANCE
Dans mon cas, je ne veux pas chown la cible dir que cela entraîne d'autres problèmes avec d'autres scripts ...
OriginalL'auteur
Mise à JOUR
gcloud compute copy-files
est obsolète.Utiliser à la place:
Plus d'infos:
https://cloud.google.com/sdk/gcloud/reference/compute/scp
OriginalL'auteur
J'ai eu le même problème et ne pas le faire fonctionner en utilisant les méthodes proposées dans les autres réponses. Ce qui a fonctionné a été envoyer explicitement dans mon "utilisateur" lors de la copie du fichier comme indiqué dans le programme officiel la documentation. L'important étant de l'UTILISATEUR "@" dans
Dans mon cas, j'ai d'abord transférer des fichiers en tapant:
mais après j'ai eu la permission denied je l'ai eu à travailler en tapant:
où le nom d'utilisateur dans mon cas, j'ai connecté à Google Cloud avec.
OriginalL'auteur
Cela a fonctionné pour moi:
Syntaxe:
gcloud compute scp 'SOURCE' 'DESTINATION'
REMARQUE: exécutez sans racine
OriginalL'auteur