コマンドライン – sudo でリモートサーバに scp

command-line scp security sudo

私はサーバー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


タイトルとURLをコピーしました