서버 A에 파일이 있습니다 (NAT 뒤에 있으므로 직접 주소를 지정할 수 없습니다). 루트로 제한된 디렉토리에서 파일을 서버 B로 복사해야합니다. 서버 B에 sudo 권한이있는 계정이 있습니다. scp 명령의 구문은 무엇입니까?
서버 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
chmod 777
하던 간에, 보통 그것을하는 잘못된 방법입니다. 다른 사람이 로그인하여이 코드를 실행하려고한다는 것을 알고 있다면 어떤 일이 발생할 수 있는지 고려하십시오.
ssh sudo
나를 위해 작동하지 않습니다-tty가없고 askpass 프로그램이 지정되지 않았다고 불평합니까?
serverb
하거나 ssh serverb
별도로 sudo ...
로그인 한 다음 로그인 한 후 실행 해야합니다 .
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
sudo: sorry, you must have a tty to run sudo
의해 수정 된 오류 -e "ssh -tt"
입니다.
-e "ssh -tt"
, 내가 얻을 protocol version mismatch -- is your shell clean?
. 그 문제를 해결하는 방법에 대한 힌트가 있습니까?
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"옵션이 필요합니다.
tar: Invalid replacement string
에서 제거 -s
하면 문제를 해결하는 것 같습니다 ( s
어쨌든 필요한 것이 확실하지 않음 ). 많은 감사합니다. 대단해.
tty_tickets
, 올바른 비활성화?
예를 들어 sudo 명령과 함께 sftp를 사용할 수 있습니다.
sftp -s 'sudo -u REMOTE_SUDO_USER /usr/libexec/openssh/sftp-server' REMOTE_USER@HOST
먼저 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 /로 복사합니다.