2014-09-04 1 views
1

필자는 Python을 사용하여 작성한 소프트웨어를 가지고 있습니다. & Paramiko는 공개 ssh 키를 대상 Linux 컴퓨터에 배포합니다. 그런 다음 개인 키를 사용하여 연결을 시도합니다. 한 머신 (RHEL 버전 5)에서는 문제없이 작동합니다. 다른 머신 (CentOS, RHEL 버전 6)에서 뭔가 이상한 일이 발생합니다. 공개 키가 배포되지만 서버가 개인 키를 거부합니다 (테스트를 위해 plink를 사용함). 그런 다음 (.ssh 디렉토리에서) 다음을 수행합니다.유효한 authorized_keys 파일은 무엇입니까?

cp authorized_keys _temp 
cat _temp > authorized_keys 
chown testuser authorized_keys 
chmod 600 authorized_keys 

그러면 인증이 작동합니다 (이전과 동일). 그래서 이것은 sshd 설정을 배제합니다. 또한 이전에 언급했듯이 배포는 다른 컴퓨터에서 작동하며 인증은 동일한 배포 메커니즘으로 성공합니다. 그래서 배포가 괜찮을 것 같습니다. 텍스트 파일 형식과 관련이 있습니다. LF 대신 CR + LF를 제외하고 authorized_keys 파일을 내 컴퓨터로 가져 와서 검사했습니다. LF 만있었습니다.

내가 말할 수있는 유일한 사실은 현재 어떻게 든 고양이가> (또는 그 중 하나만) 파일을 "고쳤습니다"라고 말할 수 있지만 실제로 어떤 것이고 어떻게 말할 수는 없습니다. 가능한 한 적은 수의 해결 방법과 수동 개입없이 프로세스를 작동시키고 싶습니다.> 아무도 이것을 설명 할 수 있습니까?

감사합니다.

+0

것은 당신이 확인할 수 있습니다

restorecon -r .ssh 

는 일반적으로, 당신은 SELinux가 문제를 무엇이 잘못되었는지 확인하기 위해 audit2why 명령을 사용할 수 있습니다 원래의'authorized_keys'와'.ssh'는 그 계정이 소유하고 있었고 권한은'600'입니까? – Amadan

+0

@Amadan - 예. 코드는 명시 적으로 그렇게하고 여러 번 검사했습니다. – Tal

+0

게시 한 코드는 귀하가 주장하는 새로운 파일에만 명시 적으로 게시합니다. 'cat>이 아닌 파일이 무엇인지에 관해서는 아무 말도하지 않았습니다. 당신이 시도 할 수있는 또 다른 일은'ssh -vvv user @ host'가 당신에게 줄 것입니다 (PuTTY가 비슷한 것을 가지고 있는지 전혀 모른다면 * nix 상자를 찾아야 할 것입니다). – Amadan

답변

0
당신은 공백을 해결하기 위해 dos2unix 명령을 사용하려고 할 수

는 :

dos2unix authorized_keys 

하지만이 또한 SELinux가 문제가 될 수 있다고 생각한다. 당신이 ls으로 SELinux에 컨텍스트를 시각화하는 경우 :

ls -lZ .ssh/* 

을 당신은 -------

-rw 같은 것을 받아야합니다. git git unconfined_u : object_r : ssh_home_t : s0 authorized_keys

ssh_home_t을 참조하십시오. 당신이 표시되지 않는 경우, 당신은 restorecon로 복원해야합니다

audit2why /var/log/audit/audit.log 
관련 문제