Git은“경고 : 알려진 호스트 목록에 영구적으로 추가되었습니다”라고 말합니다.


192

git을 사용하여 당기거나 밀 때와 같이 리모컨과 상호 작용할 때마다 다음 메시지가 표시됩니다.

경고 : 알려진 호스트 목록에 '...'(RSA)를 영구적으로 추가했습니다.

이 성가신 메시지가 표시되지 않게하려면 어떻게해야합니까? 모든 것이 제대로 작동하는 것은 귀찮습니다.


1
당신은 정말로 매번 의미 합니까? 양식 프롬프트 The authenticity of host '...' can't be established. RSA key fingerprint is .... Are you sure you want to continue connecting (yes/no)?를 표시합니까, 아니면 억제 했습니까? 그렇다면 매번 같은 지문입니까? 그렇지 않다면 정말 무섭습니다 . 덜 무서운 옵션은 어떻게 든 실제로 호스트 파일에 쓰는 것을 관리하지 않으므로 매번 다시 시도합니다. 보세요 ~/.ssh/known_hosts?
Cascabel

1
예. <i> 시간마다 </ i> 그러나 "Are you sure ..."메시지가 표시되지 않습니다. 억제했을 수 있습니다.
Donald Taylor

호스트가에 ~/.ssh/known_hosts있습니까? (5000 번 나열되어 있습니까?) ~/.ssh/config존재하거나 포함하고있는 것이 있습니까 (특히 값 StrictHostKeyChecking)?
Cascabel

호스트는 해당 파일에 한 번만 나열되며 유일한 항목입니다.
Donald Taylor

2
known_hosts파일 의 내용 이 잘못 되었다고 생각합니다 . 아주 긴 줄의 호스트 키 여야합니다. 예를 들어 호스트 이름 만 있으면 작동하지 않습니다. 이 파일을 제거하고 (실제로이 단일 호스트에 대한 정보 만 포함 된 경우) 다음에 연결할 때 SSH에서 파일을 작성하도록 권장합니다. 그 후에는 침묵해야합니다.
tripleee 2016 년

답변:


240

솔루션 : ~/.ssh/config파일을 작성 하고 행을 삽입하십시오.

UserKnownHostsFile ~/.ssh/known_hosts

다음에 Github에 액세스하면 메시지가 표시되지만 호스트가 known_hosts파일에 추가되었으므로 더 이상 메시지가 표시되지 않습니다 . 로그 메시지를 숨기지 않고 문제를 해결합니다.

이 문제는 꽤 오랫동안 나를 괴롭 혔습니다. Windows 용으로 컴파일 된 OpenSSH 클라이언트가 known_hosts 파일을 확인하지 않기 때문에 문제가 발생합니다.~/.ssh/known_hosts

ssh -vvvvvvvvvvvvvvvvvvvv git@github.com

debug3: check_host_in_hostfile: filename /dev/null
debug3: check_host_in_hostfile: filename /etc/ssh/ssh_known_hosts
debug3: check_host_in_hostfile: filename /dev/null
debug3: check_host_in_hostfile: filename /etc/ssh/ssh_known_hosts
Warning: Permanently added 'github.com,207.97.227.239' (RSA) to the list of known hosts.

9
예, 경고 나 오류를 억제하여 문제에 대한 적절한 해결책을 고려하지 않습니다. ;)
예레미야 고디

1
최근에 우분투 컴퓨터에서 같은 문제에 직면했습니다. 다른 기본 ~/.ssh/id_rsa키와 다른 키를 사용하여 서버에 연결 한 후에이 방식으로 작동하기 시작했습니다 . @JeremiahGowdy가 언급했듯이 debug3: load_hostkeys: loading entries for host "172.16.3.101" from file "/dev/null". /dev/null키를 변경 한 후 SSH가 known_hosts로 사용 하기 시작하는 이유는 무엇 입니까?
m-ric 2016 년

6
잘 작동합니다! 마침내 어리석은 경고가 멈췄다. Windows의 Btw에서 ~in ~/.ssh/config은 사용자의 홈 폴더입니다. 쉽게 열려면을 누르 승리-R은 , 유형 cmd 입력합니다 . 명령 프롬프트가 이미 홈 폴더에 열려 있어야합니다. 입력 cd .ssh 입력 하고 start . Enter를 Windows 탐색기에서 폴더를 엽니 다. 그런 다음 메모장 에서 구성 파일을 만들 수 있습니다 ( 저장시 .txt 확장자 없음 ). (Pro 사용자는 명령 프롬프트 자체에서 새 파일로 직접 에코 할 수 있습니다 ;)). 리모컨 과 같은 git 명령을 두 번 실행하면 (예 :) git fetch완료됩니다.
ADTC

1
왜 ssh에 대한 20 v가 있습니까?
bubakazouba

3
@bubakazouba v가 많을수록 로그가 더 장황할수록 문서를 확인하십시오. 3 명이면 충분하고 20 명은 과잉입니다 : D
Petr Mánek

90

ssh 구성 파일 ($ HOME / .ssh / config)에 다음 행을 추가하십시오.

LogLevel=quiet

명령 행에서 ssh를 실행하는 경우 명령 문자열에 다음 옵션을 추가하십시오.

-o LogLevel=quiet

예를 들어, 다음은 machine.example.org에 설치된 gcc 버전을 인쇄하며 경고는 없습니다.

ssh -o UserKnownHostsFile=/dev/null \
    -o StrictHostKeyChecking=no \
    -o LogLevel=quiet \
    -i identity_file \
    machine.example.org \
    gcc -dumpversion

1
"config"파일에 "LogLevel = quiet"을 추가했습니다. 감사합니다.
도널드 테일러

3
보안을 유지하려면 "LogLevel = quiet"을 "Host"섹션 안에 두는 것이 좋습니다.
Joe

39
LogLevel=quiet나쁜 생각입니다, 그는 모든 오류가 표시되기를 원합니다. 그는 단지이 특이한 오류를 피하고 싶습니다. 그는 사용 SSH를 속였다 아마도 때문에 /dev/null는 AS known_hosts그가 해제하고 싶었 아마 때문에, 파일 known_hostsSSH 군주 그를 허용하지 않았기 때문에, 지문 검사를하지만 할 수 없습니다.
Elazar Leibovich

@bukzor loglevel=error는 연결이 종료 될 때 여전히 "<server>에 대한 연결이 닫혔습니다"라고 표시하는데, 이는 실제로 스크립팅을 귀찮게합니다.
거스

실제로 문제를 해결하지 못하기 때문에 이것을 하향 투표했습니다. 그냥 숨 깁니다.
alaboudi

60

설정 LogLevelERROR(안 QUIET)에서 ~/.ssh/config이러한 오류를보고하지 않도록 파일 :

Host *
   StrictHostKeyChecking no
   UserKnownHostsFile /dev/null
   LogLevel ERROR

2
이것은 내 경우에 가장 효과적이었다 – 또는 당신은 명령 행에 "-oLogLevel = ERROR"를 지정할 수있다
Brad

5

이 메시지는 SSH에서 온 것으로, 이전에는 연결하지 않은 호스트에 연결 중임을 경고합니다. SSH 세션에서 MITM 공격을 나타낼 수있는 호스트 키 변경에 대한 경고가 누락 될 수 있으므로이 기능을 끄지 않는 것이 좋습니다.


1
그러나 나는 매일 10-15 번 연결하지만 여전히이 경고를받습니다.
Donald Taylor

@JackB. 봐 ~/.ssh/known_hosts와 호스트가있는 경우를 참조하십시오.
Borealid

어떤 이유로 키가 변경됩니까? 파일의 지문과 ssh가 출력하는 지문을 확인하십시오. 또한 .ssh 디렉토리의 모드가 0700으로 설정되어 있습니까?
Jason Carreiro

2
@JasonCarreiro, 저는 큰 소년입니다. 아무도 랙 내에서 MITM 공격을 당할 사람이 없다는 것을 알고 있습니다. ssh-keyscan .
Elazar Leibovich

4

경고 메시지를 표시하지 않으려면 ssh다음 행을 추가하십시오 ~/.ssh/config.

Host *
LogLevel error

경고는 비활성화하지만 오류 메시지는 비활성화하지 않습니다. 보다 세밀한 제어를 원할 경우 다른 설정과 마찬가지로 호스트별로 ~/.ssh/config구성 할 수 있습니다 LogLevel.


2

주로 해당 호스트의 키가 변경되었음을 의미합니다. ~/.ssh/known_hosts 있으며이를 자동으로 업데이트하지 않습니다. 따라서이 경고 메시지가 나타날 때마다.

다시 생성 된 가상 머신에 연결하는 경우 종종 발생하며, 동일한 IP 주소로 키를 변경합니다.

해결책

항목이 하나 뿐인 경우 ~/.ssh/known_hosts 파일을 처음 연결 한 후에는 키가 있고 그 이후에는 경고 메시지가 표시되지 않습니다.

항목이 여러 개인 경우 아래 명령을 사용하여 제거 할 수 있습니다.

$ ssh-keygen -R <hostname>

그것은 나를 위해 잘 작동


0

GitHub의 리포지토리를 사용하는 경우이 문제를 완전히 회피하기 위해 대신 HTTPS 버전의 URL을 사용하는 것이 좋습니다.

HTTP 버튼을 클릭하고 대신 해당 URL을 복제하십시오.

Windows GitHub 응용 프로그램 내에서 저장소를 복제하면 이것이 원격 URL에 사용됩니다. 그들은 우리가 모르는 것을 알고있을 것입니다.


참고 : 개인 키 인증을 사용하는 경우 HTTP (S)를 사용할 수 없습니다.
qwertzguy

0

나는 같은 질문을 가지고 .ssh있으며 내 파일 이 없다는 것을 알았습니다 ~. 그래서 그냥 경로 .ssh아래 에 디렉토리를 만들고 ~문제가 해결되었습니다.



0

ssh 키 추가

ssh-keygen -t rsa -b 4096 -C "abc@abc.com"

eval "$(ssh-agent -s)"

ssh-add ~/.ssh/bitbucket_rsa

상자 구성 파일

crate ~/.ssh/config

아래 줄을 추가하십시오.

UserKnownHostsFile ~/.ssh/known_hosts

그런 다음 펍 키를 추가하고 리포지토리를 복제하십시오 ... 완료 .....


0

Linux / Cent OS VM에서 동일한 오류가 발생했으며 다시 시작한 후 IP가 변경 되었기 때문입니다. 이 문제를 해결하기 위해 네트워크에서 고정 IP를 정의하고 해당 항목을 / etc / hosts 파일에 추가했습니다. 고정 IP의 경우 약간 높은 범위 값을 언급하십시오. 예를 들어 현재 IP (ipconfig / ifconfig)가 192.168.0.102 인 경우 다음에 다시 시작한 후 192.168.0.103이 될 수 있습니다. 따라서 IPV4 설정에서 고정 IP를 192.168.0.181로 정의하면 트릭을 수행 할 수 있습니다.


키워드를 강조 표시하고 다른 사용자를위한 답변을 제공하는 데 도움이되는 형식으로 명확하게하십시오
Agilanbu

0

필자의 경우 서버를 설정 한 관리자가이 옵션을 설정했기 때문입니다. ~/.ssh/config

StrictHostKeyChecking no
UserKnownHostsFile /dev/null

~/.ssh/known_hosts파일을 사용하지 않으면 대부분의 경우 잘 작동 합니다. 그러나 엔터프라이즈 gitlab 저장소의 경우 "경고 : 알려진 호스트 목록에 영구적으로 추가됨"이 표시 될 때마다.

내 솔루션은 UserKnownHostsFile /dev/null라인 을 주석 처리하여을 만들 수있었습니다 ~/.ssh/known_hosts. 그런 다음 더 이상 경고가 표시되지 않았습니다.

에 오래되었거나 유효하지 않은 항목이있을 수도 있습니다 known_hosts.

# find entry in ~/.ssh/known_hosts
ssh-keygen -F <hostname>

# delete entry in ~/.ssh/known_hosts
ssh-keygen -R <hostname>

0

다음을 사용하여 개인 키를 ssh-agent에 추가하십시오.

ssh-add ~/.ssh/id_rsa

-1

지속적인 다운 보트로 인해 솔루션을 중단하고 있습니다.
실제로 SSH 클라이언트 자체의 소스 코드를 해킹하지 않고 최고의 솔루션이었습니다.
누군가 관심이 있다면 편집 기록을 확인하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.