서버 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
참고 : NOPASSWD
sudo 구성 이 필요 합니다. 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 /로 복사합니다.