Linuxシステム間でファイルをコピーする必要があります。問題は、私がログインに使用しているユーザー()がmyuser
ファイルにアクセスできるユーザーとは異なることです。
私がssh
コンピュータにいる場合は、ユーザー切り替えを使用できますsudo su someuser
。同時に何とかこれを実行できますかscp
?
WinSCPを使用するときにSCP / Shellを設定してこれを正常に実行したので、純粋なシェルを介してこれを実行するのと同じ方法が必要であると確信しています。
答え1
SSHアクセス権を持つユーザーがターゲットユーザーにsudo suを実行するためにパスワードが必要ないと仮定すると、次のことを試すことができます。
dd if=myfile | ssh some.host "sudo -u targetuser dd of=myfile"
targetuser
...単純にSSHを介してのみscp / sftp / rsyncを許可するように設定し、認証にRSAキーペアを使用する方が良いオプションではないことはまだわかりません。
答え2
他のユーザー()の資格情報を知っている場合は、呼び出し時にsomeuser
それを簡単に指定できますscp
。
man scp
ページから:
ファイル名には、ファイルがコピーされるホストを表すユーザーとホストの仕様を含めることができます。 scp が「:」をホスト指定子として含むファイル名を処理しないように、絶対パス名または相対パス名を使用してローカルファイル名を指定できます。また、2 つのリモートホスト間のレプリケーションも可能です。
使用される構文は次のとおりです。
[[user@]host:]/path/to/file
はい
ユーザーを使用してファイルをローカルホスト/home/foo/bar
にコピーする場合、コマンドは次のようになります。host1
someuser
scp someuser@host1:/home/foo/bar .
認証(パスワード、キー...)を要求するメッセージが表示されます。
答え3
おそらく可能が、とてもぎこちない方法だと言いたいです。
最初の提案は、そのユーザーとしてログインすることです。ユーザーのパスワードがなくても、rahmuが示すように、Authorized_keysに自分の公開SSHキーを追加してから、そのキーとしてSCPを追加できます。
これが不可能な場合は、2番目の提案はssh、sudoを介してユーザーとしてログインし、コピーしたいファイルのtarファイルを作成して、ユーザーが読める場所に置くことです。次に、tarファイルをscpダウンします。
答え4
-S
scp
コマンドで使用
例えばhttps://superuser.com/questions/87597/how-to-perform-scp-as-a-sudo-user
Winscpのユースケースで行っているようにスクリプトを実行できます。