원격 우분투 서버의 centos 로컬 컴퓨터에서 다음 명령을 실행하려고 합니다. 그러나 그것은 일어나지 않았습니다.
ssh -t hostname su - -s /bin/bash bar "/home/bar/get_list.sh >> output-1"
위 명령을 실행하는 동안 이 오류가 발생합니다.
Connection to 192.11.13.2 closed.
스크립트는 원격 시스템에 있으며 출력을 로컬 시스템으로 리디렉션하려고 합니다.
실행하면 비밀번호를 묻고 출력 데이터가 표시됩니다.
ssh -t HOSTNAME su - -s "/bin/bash USERNAME '/path/to/script.sh'"
하지만 리디렉션으로 실행하면 >>
비밀번호를 묻지 않고 연결이 닫혔다고 표시됩니다.
문제 해결
여기에서 몇 가지 문제 해결을 수행하고 있으며 리디렉션을 시도하고 있지만 >>
변경하면 >
파일이 생성되고 있다는 메시지가 나타납니다 output-1
.
이것은 파일의 출력입니다.
cat output-1
Password:
su: Authentication failure
답변1
이것Connection to 10.11.143.72 closed.
경우에 따라, 이는 명령 실행이 성공했지만 파일이 로컬 remote-host
이 아닌 로컬로 생성되었음을 나타냅니다.
결과를 localhost에 기록하려면 명령 외부에 리디렉션된 출력을 배치하십시오.
ssh -t hostname su - -s /bin/bash bar "/home/bar/get_list.sh" >> output-1
또는 다음 구문으로 명령을 사용하는 것이 더 좋습니다(명령을 일반화했습니다).
ssh -t HOSTNAME su - -s "/bin/bash USERNAME '/path/to/script.sh'" >> inlocal.log
답변2
편집된 질문에는 현재 큰따옴표 안에 리디렉션이 포함되어 있으며, 작동하는 경우 잘못된 서버에 파일을 생성하게 됩니다.
그러나 스크립트 파일에서 SUID 비트 설정을 살펴보는 것이 좋습니다. Ubuntu 대상에 설정할 권한이 있다고 가정하면 실제로 루트로 로그인하지 않고도 루트로 실행된다는 의미입니다.
현재 솔루션이 적어도 출력 파일에 "비밀번호 입력:"을 입력하지 않는 이유를 완전히 이해하지 못합니다. ssh를 통해 통신하고 다른 상자에 연결할 수 있다면 인상적이겠지만 라이브 tty와 통신하지 않는다는 것을 감지했을 수도 있습니다.