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-dss
authorized_keys
당신은 무엇 curl
에 대해 불평하고 있습니까? 내 유일한 추측은 고객 파일 의 키가 curl
필수라는 것입니다. 그렇다면 어떻게 생성하나요? 아니면 해당 파일에서 키를 어떻게 찾을 수 있나요 ?dsa
known_hosts
curl
rsa
고쳐 쓰다
클라이언트 측에서:
$ 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 파일을 지우면 이 오류가 사라졌습니다. 이는 장기적인 해결 방법은 아니지만 일회성 해결 방법으로 사용할 수 있습니다.