私はサーバーAにファイルを持っています(NATの後ろにあるので、直接アドレスを指定できません)。そのファイルを、ルートに制限されたディレクトリにあるサーバーBにコピーする必要があります。私はサーバBにsudo権限のアカウントを持っています。scp コマンドの構文は何ですか?
89 Neil 2010-05-07
まず、sudoを使わずに書き込み権限のある場所にコピーします
scp yourfile serverb:
その後、sudoを使ってファイルを移動します
ssh serverb sudo mv yourfile /path/to/the/destination
書き込み可能な場所がない場合は、ユーザーに書き込み権限のある一時的なdirを作成します
ssh serverb sudo mkdir tempdir && sudo chmod 777 tempdir
scp yourfile serverb:tempdir
ssh serverb mv tempdir/yourfile /path/to/the/destination
70 Johan 2010-05-07
SCPでは2ステップで行う必要がありますが、rsyncでは以下のように1ステップで行うことができます
rsync --rsync-path="sudo rsync" <LOCALFILE> USER@SERVER2:/root
注: これはNOPASSWD
sudoの設定を必要とします。もし sudo のパスワードを入力しなければならない場合は、2段階の方法が必要です
ディレクトリをコピーするには、-r
パラメータを追加する必要があります。また、冗長な出力には -v
を追加します
上記のメソッドをクレデンシャルで使用するには、~/.ssh/config
ファイルに追加する必要があります
Host SERVER2
HostName server2.example.colm
User USER
#IdentityFile ~/.ssh/custom_key.pem
65 MasterCheffinator 2014-01-16
ssh と tar を使って回避することができます
ssh -t host 'sudo -v'
ssh -C host 'cd /; sudo tar cf - path/to/file/or/dir' | tar xpsf - --preserve
これはまず sudo のタイムスタンプを更新し (必要に応じてパスワードを要求します。これには tty (ssh -t
) が必要です)、その後 sudo を使ってリモートで tarball を作成し、ローカルでそれを展開します
RedHat 5 の “tar” は “xpsf -” コマンドの後に “–preserve” オプションが必要です
19 blueyed 2011-12-12
sftpは、例えばsudoコマンドで利用できます
sftp -s 'sudo -u REMOTE_SUDO_USER /usr/libexec/openssh/sftp-server' REMOTE_USER@HOST
5 DaniloNC 2014-07-02
sudoのパスワードを毎回入力する必要がある場合は、ファイルに保存しておくと良いでしょう
echo "Enter password: "; read -s password; echo $password > password_file
を作成し、ソースファイルと一緒に送信してください
cat password_file source_file | ssh remote_host 'sudo -S sponge target_file'
moreutilsを持っていない場合は、sponge
の代わりにtee
を使うことができます
1 Jan Tojnar 2017-10-17
まず、ファイルをsudoなしで書き込み権限のある場所にコピーする必要がありますが、以下の2つの手順で行うことができます
ステップ1:scp filename newserver
の場合
ステップ2:ssh newserver sudo mv filename /path/to/the/destination
の場合
詳細については、scp チュートリアルを読む
0 Mike Tyson 2019-04-22
current server $ sudo scp username@server:source/path/filename /tmp/
特定のファイルをソースから現在のサーバの/tmp/にコピーします
-1 Kumar 2016-02-08