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가 ":"를 호스트 지정자로 포함하는 파일 이름을 처리하는 것을 방지하기 위해 절대 또는 상대 경로 이름을 사용하여 로컬 파일 이름을 지정할 수 있습니다. 또한 두 원격 호스트 간의 복제도 허용합니다.
사용된 구문은 다음과 같습니다.
[[user@]host:]/path/to/file
예
사용자를 사용하여 파일을 로컬 호스트 /home/foo/bar
에 복사하려는 경우 명령은 다음과 같습니다.host1
someuser
scp someuser@host1:/home/foo/bar .
인증(비밀번호, 키...)을 요청하는 메시지가 표시됩니다.
답변3
아마가능한, 하지만 매우 어색한 방법이라고 말하고 싶습니다.
첫 번째 제안은 해당 사용자로 로그인하는 것입니다. 사용자의 비밀번호가 없더라도 rahmu가 보여준 것처럼 Authorized_keys에 자신의 공개 SSH 키를 추가한 다음 해당 키로 SCP를 추가할 수 있습니다.
이것이 가능하지 않다면, 두 번째 제안은 ssh, sudo를 통해 사용자로 로그인하고 복사하려는 파일의 tar 파일을 생성하여 사용자가 읽을 수 있는 곳에 두는 것입니다. 그런 다음 tar 파일을 scp 다운하십시오.
답변4
-S
scp
명령 에 사용
예를 들어https://superuser.com/questions/87597/how-to-perform-scp-as-a-sudo-user
Winscp 사용 사례에서 수행하고 있는 것처럼 스크립트를 실행할 수 있습니다.