Curl이 Known_hosts 파일을 읽을 수 없습니다.

Curl이 Known_hosts 파일을 읽을 수 없습니다.

curl다른 Centos 6 서버를 클라이언트로 사용하고 프로토콜을 사용하여 Centos 6 서버에서 파일을 다운로드하려고 하면 scp다음과 같은 오류 출력이 나타납니다.

$ curl -v -O scp://cz/path/to/file
* About to connect() to cz port 22 (#0)
*   Trying 1.2.3.4... connected
* Connected to cz (1.2.3.4) port 22 (#0)
* Failed to read known hosts from /home/cpn/.ssh/known_hosts
* SSH host check: 0, key: AAAAB3NzaC1yc2EAAAABIwAAAQEAyeeDgYFsHi3Ks3PxCXt69IHBr7yNII720sXOm9WKIdGnwPf7QHbLsMf41mctcGRSJ2yO2EXpNEbZQhdUqs3oImdTn2OHF/K8STK1GXMVseusgmPuQWBt36AVPon7h9lSCjtxt+1UpFJoireXvhUDlgg9i1C9QbE04GAmA7vMOmtcVt3/3F6X/hKhOZvHj1gu5+RzCO8fXo2R8XeRoN0GcU2jVOhug0G+hXAiHymh5JzVm4YlCzsNIv3mDOF2lZRLdkor5FDKjBY8/o/5O8U0lWm4ie2S7qDppqCJP2SnNTWlaM3k5HDmdyEKKZ0lV+qG33q3ADZxjBeIKQtWLZfC3w==
* SSH authentication methods available: publickey,gssapi-keyex,gssapi-with-mic,password
* Using ssh public key file /home/cpn/.ssh/id_dsa.pub
* Using ssh private key file /home/cpn/.ssh/id_dsa
* SSH public key authentication failed: Username/PublicKey combination invalid
* Authentication failure
* Closing connection #0

scp질문하지 않고도 파일을 다운로드할 수 있습니다.

$ scp cz:/path/to/file .

ssh아무 질문도 하지 않고 서버에 다시 로그인할 수 있습니다

$ ssh cz

ssh-rsa및 키가 모두 서버 파일에 존재합니다.ssh-dssauthorized_keys

당신은 무엇 curl에 대해 불평하고 있습니까? 내 유일한 추측은 고객 파일 의 키가 curl필수라는 것입니다. 그렇다면 어떻게 생성하나요? 아니면 해당 파일에서 키를 어떻게 찾을 수 있나요 ?dsaknown_hostscurlrsa

고쳐 쓰다

클라이언트 측에서:

$ ls -l /home/cpn/.ssh/known_hosts
-rw-r--r--. 1 cpn cpn 1970 Nov 12 16:12 /home/cpn/.ssh/known_hosts

답변1

최소한 무슨 일이 일어나고 있는지 설명할 수 있습니다. .출력 뒤의 권한은 ls -l파일에 액세스하는 프로그램을 기반으로 파일 권한을 재정의하는 SELinux 정책이 있음을 나타냅니다. 파일을 표시하는 데 사용되는 전략입니다 ls -Z ~/.ssh/known_hosts.

아마도 /usr/bin/ssh및 해당 동반 프로그램( ssh-keygen, scp등)이 파일에 액세스할 수 있는 유일한 프로그램일 것입니다. 나는 이 정책에 회의적입니다. ~/.ssh/known_hosts때로는 수동 편집이 유용할 때도 있습니다. 하지만 왜 컬이 친구에게 파일을 읽도록 허용하지 않고 파일을 읽고 싶어하는지 이해가 되지 않습니다 ssh.

당신은 그것을 사용할 수 있습니다chcon파일의 정책을 편집하는 명령restorecon기본 정책을 복원합니다. 보다CentOS 위키SELinux에 대한 추가 정보.

답변2

Google을 통해 이 페이지를 찾는 분들을 위해:

known_hosts이전 버전의 cURL은 인식할 수 없는 키 유형이 있는 파일에서 작동이 중단 되는 것처럼 보이며 , 충분히 오래된 cURL 버전은 ssh-rsa.

예를 들어, 내 cURL은 버전 7.29.0(6년 전이고 작성 당시 CentOS 7에서 사용 가능한 최신 버전)이며 첫 번째 키 이후에는 키 읽기를 중지합니다. 이는 ecdsa-sha2-nistp256내 파일에서 가장 큰 부분 키 입니다. .known_hosts

답변3

감사합니다. Known_hosts 파일을 지우면 이 오류가 사라졌습니다. 이는 장기적인 해결 방법은 아니지만 일회성 해결 방법으로 사용할 수 있습니다.

관련 정보