Saya memiliki masalah yang sama dan tidak berhasil menggunakan metode yang disarankan di jawaban lain. Apa yang akhirnya berhasil adalah mengirimkan "pengguna" saya secara eksplisit saat menyalin file seperti yang ditunjukkan dalam dokumentasi resmi. Bagian yang penting adalah "[email protected]" di
gcloud compute scp [[[email protected]]INSTANCE:]SRC [[[[email protected]]INSTANCE:]SRC …] [[[email protected]]INSTANCE:]DEST
Dalam kasus saya, saya awalnya dapat mentransfer file dengan mengetik:
gcloud compute scp instance_name:~/file_to_copy /local_dir
tetapi setelah saya mendapat izin ditolak, saya membuatnya berfungsi dengan mengetik:
gcloud compute scp [email protected]_name:~/file_to_copy /local_dir
di mana nama pengguna dalam kasus saya adalah yang saya gunakan untuk masuk ke Google Cloud.
masukkan [email protected]
sebelum nama instance:
local:$ gcloud compute copy-files /Users/Bryan/Documents/Websites/gce/index.php [email protected]:/var/www/html --zone us-central1-a
Saya menggunakan skrip bash untuk menyalin dari mesin lokal saya ke direktori yang dapat ditulis pada mesin GCE jarak jauh; lalu gunakan ssh pindahkan file.
SRC="/cygdrive/d/mysourcedir"
TEMP="~/incoming"
DEST="/var/my-disk1/my/target/dir"
Anda juga perlu menyetel GCE_USER dan GCE_INSTANCE
echo "=== Pushing data from $SRC to $DEST in two simple steps"
echo "=== 1) Copy to a writable temp directoy in user home"
gcloud compute copy-files "$SRC"/*.* "${GCE_USER}@${GCE_INSTANCE}:$TEMP"
echo "=== 2) Move with 'sudo' to destination"
gcloud compute ssh ${GCE_USER}@${GCE_INSTANCE} --command "sudo mv $TEMP/*.* $DEST"
Dalam kasus saya, saya tidak ingin mengunyah dir target karena hal ini menyebabkan masalah lain dengan skrip lain ...
Alasan ini tidak berhasil adalah karena nama pengguna Anda tidak memiliki izin pada instance VM GCE sehingga tidak dapat menulis ke /var/www/html/
.
Catatan bahwa karena pertanyaan ini tentang VM Google Compute Engine, Anda tidak dapat melakukan SSH langsung ke VM sebagai root
, Anda juga tidak dapat menyalin file secara langsung sebagai root
, untuk alasan yang sama:gcloud compute copy-files
menggunakan scp
yang mengandalkan ssh
untuk autentikasi.
Solusi yang memungkinkan:
-
(juga disarankan oleh Faizan di komentar) solusi ini membutuhkan dua langkah setiap saat
-
gunakan
gcloud compute copy-files
untuk mentransfer file/direktori tempat pengguna Anda dapat menulis, misalnya,/tmp
atau/home/$USER
-
masuk ke VM GCE melalui
gcloud compute ssh
atau melalui SSH tombol di konsol dan salin menggunakansudo
untuk mendapatkan izin yang tepat:# note: sample command; adjust paths appropriately
sudo cp -r $HOME/html/* /var/www/html
-
-
solusi ini adalah satu langkah dengan beberapa pekerjaan persiapan sebelumnya:
-
penyiapan satu kali:beri nama pengguna Anda akses tulis ke
/var/www/html
secara langsung; Hal ini dapat dilakukan dengan beberapa cara; inilah satu pendekatan:# make the HTML directory owned by current user, recursively
sudo chown -R $USER /var/www/html
-
sekarang Anda dapat menjalankan salinan dalam satu langkah:
gcloud compute copy-files /Users/Bryan/Documents/Websites/gce/index.php example-instance:/var/www/html --zone us-central1-a
-