동일한 버전의 RedHat 6.4를 실행하는 두 개의 서버가 있지만 sudo
SSH를 통해 서버 중 하나에서 원격 명령을 실행하면 그 중 하나가 다르게 작동합니다. server1에서는 일정 시간이 지나면 자동으로 연결이 종료됩니다.성공적인 sudo
명령을 실행했지만 server3에서는 연결이 계속 열려 있습니다.
이러한 테스트의 경우 sudo
사용자에게 NOPASSWD 플래그가 있으므로 프롬프트가 표시되지 않습니다. 내가 아는 한, 이 서버의 모든 구성은 동일합니다(복제본입니다).
나는 이것을 테스트했습니다 :
ssh -vvv user@server1 << EOF
sudo ls -l /home/
ls -l /home/
pwd
EOF
server1에서 실행하면 파일 목록이 표시됩니다.
debug3: Wrote 32 bytes for a total of 1621
total 40
drwxr-xr-x. 5 user user 4096 Apr 26 2013 user
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug2: channel 0: rcvd eof
debug2: channel 0: output open -> drain
sudo
명령을 사용하지 않고 동일한 서버에서 실행하면 파일 목록과 pwd
결과가 모두 표시됩니다.
ssh -vvv user@server1 << EOF
ls -l /home/
ls -l /home/
pwd
EOF
결과:
debug3: Wrote 32 bytes for a total of 1605
total 40
drwxr-xr-x. 5 user user 4096 Apr 26 2013 user
total 40
drwxr-xr-x. 5 user user 4096 Apr 26 2013 user
/home/user
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug2: channel 0: rcvd eof
debug2: channel 0: output open -> drain
그러나 스크립트를 실행하면그리고명령 sudo
에 따라서버 3이전 테스트와 마찬가지로 3개 명령 모두에 대한 결과를 얻었습니다. 두 서버(1과 3)의 로그 출력을 비교했는데 ssh -vvv
연결이 닫힐 때 디버그 라인의 순서가 다르다는 점을 제외하면 client_input...
모든 것이 동일한 것 같습니다 (라인 참조).
server1 ( yes 또는 no 와 동일 sudo
)
[command results]
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug2: channel 0: rcvd eof
debug2: channel 0: output open -> drain
debug2: channel 0: obuf empty
debug2: channel 0: close_write
debug2: channel 0: output drain -> closed
debug2: channel 0: rcvd close
서버 3
[command results]
debug2: channel 0: rcvd eof
debug2: channel 0: output open -> drain
debug2: channel 0: obuf empty
debug2: channel 0: close_write
debug2: channel 0: output drain -> closed
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug2: channel 0: rcvd close
sudo
명령이 포함되어 있을 때 내 스크립트가 완전히 실행될 수 있도록 연결이 자동으로 닫히지 않도록 server1을 수정하는 방법을 알고 싶습니다 .
내가 확인한 몇 가지 옵션은 다음과 같습니다.
- SE Linux가 비활성화되었습니다.
- 파일이 셸을 사용하여
passwd
올바르게 구성되었습니다./bin/bash
- errexit가 닫혔습니다(어쨌든 명령은 성공했습니다).
sudoers
구성 은sshd_config
두 서버 모두 동일합니다.
서버 간에 제가 볼 수 있는 유일한 차이점은 결함이 있는 서버1이 이전 세대 서버인 ProLiant DL380이라는 것입니다.G7비교하다G8서버 3의 경우. 제가 시도하고 실행 중인 다른 서버도 G8입니다(시도할 서버는 G7뿐입니다). 하드웨어가 어떻게 그러한 문제를 일으킬 수 있는지 이해하지 못합니다.