sudo를 사용하여 원격 서버에 scp 제한된 디렉토리에서 파일을 서버 B로 복사해야합니다. 서버

서버 A에 파일이 있습니다 (NAT 뒤에 있으므로 직접 주소를 지정할 수 없습니다). 루트로 제한된 디렉토리에서 파일을 서버 B로 복사해야합니다. 서버 B에 sudo 권한이있는 계정이 있습니다. scp 명령의 구문은 무엇입니까?



답변

먼저 sudo없이 쓰기 권한이있는 곳에 파일을 복사해야합니다.

scp yourfile serverb:

그런 다음 sudo를 사용하여 파일을 이동하십시오.

ssh serverb sudo mv yourfile /path/to/the/destination

쓰기 가능한 장소가 없으면 사용자에게 쓰기 권한이있는 임시 디렉토리를 만드십시오.

ssh serverb sudo mkdir tempdir && sudo chmod 777 tempdir
scp yourfile serverb:tempdir
ssh serverb mv tempdir/yourfile /path/to/the/destination

답변

SCP를 사용하면 두 단계를 거쳐야하지만 다음과 같이 rsync로 한 번에 수행 할 수 있습니다.

rsync --rsync-path="sudo rsync" <LOCALFILE> USER@SERVER2:/root

참고 : NOPASSWDsudo 구성 이 필요 합니다. sudo의 비밀번호를 입력해야하는 경우 2 단계가 필요합니다.

디렉토리를 복사하려면 -r매개 변수 를 추가해야합니다 . 그리고 -v자세한 출력을 위해.


자격 증명과 함께 위의 방법을 사용하려면 ~/.ssh/config파일에 해당 방법을 추가해야 합니다. 예 :

Host SERVER2
  HostName server2.example.colm
  User USER
  #IdentityFile ~/.ssh/custom_key.pem

답변

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를 사용하여 원격으로 타르볼을 생성하고 로컬로 추출합니다.

RedHat 5의 “tar”는 “xpsf-“명령 뒤에 “–preserve”옵션이 필요합니다.


답변

예를 들어 sudo 명령과 함께 sftp를 사용할 수 있습니다.

sftp -s 'sudo -u REMOTE_SUDO_USER /usr/libexec/openssh/sftp-server' REMOTE_USER@HOST

답변

sudo의 비밀번호를 매번 입력해야하는 경우 파일에 저장할 수 있습니다.

echo "Enter password: "; read -s password; echo $password > password_file

그런 다음 소스 파일과 함께 보내십시오.

cat password_file source_file | ssh remote_host 'sudo -S sponge target_file'

더 많은 유틸리티가 없다면 tee대신 사용할 수 있습니다 sponge.


답변

먼저 sudo없이 쓰기 권한이있는 위치에 파일을 복사해야합니다. 다음 두 단계를 수행 할 수 있습니다.

1 단계:
scp filename newserver

2 단계:
ssh newserver sudo mv filename /path/to/the/destination

자세한 내용 은 scp 자습서를 읽으십시오


답변

current server $ sudo scp username@server:source/path/filename /tmp/

현재 서버에서 특정 파일을 소스에서 / tmp /로 복사합니다.