私は同じ問題を抱えていて、他の回答で提案されている方法を使用しても機能しませんでした。最終的に機能したのは、公式ドキュメントに示されているように、ファイルをコピーするときに「ユーザー」を明示的に送信することでした。重要な部分は、
の "[email protected]" です。gcloud compute scp [[[email protected]]INSTANCE:]SRC [[[[email protected]]INSTANCE:]SRC …] [[[email protected]]INSTANCE:]DEST
私の場合、最初に次のように入力してファイルを転送できました:
gcloud compute scp instance_name:~/file_to_copy /local_dir
しかし、許可が拒否された後、代わりに次のように入力して機能させました:
gcloud compute scp [email protected]_name:~/file_to_copy /local_dir
ここでのユーザー名は、Google Cloud へのログインに使用したものです。
[email protected]
を挿入 インスタンス名の前:
local:$ gcloud compute copy-files /Users/Bryan/Documents/Websites/gce/index.php [email protected]:/var/www/html --zone us-central1-a
bash スクリプトを使用して、ローカル マシンからリモート GCE マシンの書き込み可能なディレクトリにコピーします。次に、ssh を使用してファイルを移動します。
SRC="/cygdrive/d/mysourcedir"
TEMP="~/incoming"
DEST="/var/my-disk1/my/target/dir"
GCE_USER と 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"
私の場合、他のスクリプトで別の問題が発生するため、ターゲット ディレクトリを chown したくありません ...
これが機能しない理由は、ユーザー名が GCE VM インスタンスに対する権限を持っていないため、/var/www/html/
に書き込めないためです。 .
注意 この質問は Google Compute Engine VM に関するものであるため、root
として VM に直接 SSH 接続することはできません。 、ファイルを root
として直接コピーすることもできません 、同じ理由で:gcloud compute copy-files
scp
を使用 ssh
に依存する 認証用。
考えられる解決策:
<オール>(コメントで Faizan によっても提案されています) このソリューションには、毎回 2 つの手順が必要です
<オール>
gcloud compute copy-files
を使用 /tmp
など、ユーザーが書き込み可能なファイル/ディレクトリを転送する または /home/$USER
gcloud compute ssh
経由で GCE VM にログインします または SSH 経由 コンソールのボタンをクリックし、sudo
を使用してコピーします 適切な権限を取得するには:
# note: sample command; adjust paths appropriately
sudo cp -r $HOME/html/* /var/www/html
このソリューションは、いくつかの事前準備作業を伴う 1 つのステップです:
<オール>
ワンタイム セットアップ:ユーザー名に /var/www/html
への書き込みアクセス権を付与します 直接;これにはいくつかの方法があります。ここに 1 つのアプローチがあります:
# make the HTML directory owned by current user, recursively
sudo chown -R $USER /var/www/html
ワンステップでコピーを実行できるようになりました:
gcloud compute copy-files /Users/Bryan/Documents/Websites/gce/index.php example-instance:/var/www/html --zone us-central1-a