scp時のユーザー変更

scp時のユーザー変更

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にコピーする場合、コマンドは次のようになります。host1someuser

scp someuser@host1:/home/foo/bar .

認証(パスワード、キー...)を要求するメッセージが表示されます。

答え3

おそらく可能が、とてもぎこちない方法だと言いたいです。

最初の提案は、そのユーザーとしてログインすることです。ユーザーのパスワードがなくても、rahmuが示すように、Authorized_keysに自分の公開SSHキーを追加してから、そのキーとしてSCPを追加できます。

これが不可能な場合は、2番目の提案はssh、sudoを介してユーザーとしてログインし、コピーしたいファイルのtarファイルを作成して、ユーザーが読める場所に置くことです。次に、tarファイルをscpダウンします。

答え4

-Sscpコマンドで使用

例えばhttps://superuser.com/questions/87597/how-to-perform-scp-as-a-sudo-user

Winscpのユースケースで行っているようにスクリプトを実行できます。

関連情報