sudo 명령 후 SSH 연결이 자동으로 닫힙니다.

sudo 명령 후 SSH 연결이 자동으로 닫힙니다.

동일한 버전의 RedHat 6.4를 실행하는 두 개의 서버가 있지만 sudoSSH를 통해 서버 중 하나에서 원격 명령을 실행하면 그 중 하나가 다르게 작동합니다. 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뿐입니다). 하드웨어가 어떻게 그러한 문제를 일으킬 수 있는지 이해하지 못합니다.

관련 정보