source

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

lovecheck 2023. 6. 21. 22:45
반응형

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

당김 또는 밀 때와 같이 git를 사용하여 리모컨과 상호 작용할 때마다 다음 메시지가 표시됩니다.

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

이 성가신 메시지가 표시되지 않도록 하려면 어떻게 해야 합니까?그것은 성가신 일일 뿐입니다. 모든 것이 제대로 작동합니다.

성을 합니다.~/.ssh/config줄을 묶고 삽입합니다.

UserKnownHostsFile ~/.ssh/known_hosts

Github에 때 되지만, 그 가 Github에 되어 더 known_hosts파일. 이렇게 하면 로그 메시지를 숨기는 대신 문제가 해결됩니다.

이 문제는 꽤 오랫동안 저를 괴롭혔습니다.이 가 OpenSSH의 않기 합니다.~/.ssh/known_hosts

ssh -vvv 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.

다음 행을 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

LogLevelERROR(아닙니다.QUIET)에서.~/.ssh/config다음 오류가 표시되지 않도록 파일:

Host *
   StrictHostKeyChecking no
   UserKnownHostsFile /dev/null
   LogLevel ERROR

이 메시지는 SSH에서 온 것으로, 이전에 연결한 적이 없는 호스트에 연결하고 있음을 경고합니다.SSH 세션에 대한 MITM 공격을 나타낼 수 있는 호스트 키 변경에 대한 경고를 놓칠 수 있으므로 이 옵션을 해제하는 것은 권장하지 않습니다.

다음에 대한 경고 메시지를 표시하지 않으려면ssh다행 추할수있다니습에 다음 할 수 .~/.ssh/config:

Host *
LogLevel error

그러면 경고는 비활성화되지만 오류 메시지는 비활성화되지 않습니다.의다설 마로지찬가의 ~/.ssh/config할 수 .LogLevel호스트별로 보다 세부적으로 제어할 수 있습니다.

는 주로 합니다.~/.ssh/known_hosts자동으로 업데이트되지 않습니다.따라서 이 경고 메시지가 표시될 때마다

이 문제는 재생성된 가상 시스템에 연결할 때 자주 발생하며, 이 경우 키가 동일한 IP 주소로 변경됩니다.

해결책

할 수 .~/.ssh/known_hosts파일, 그리고 첫 번째 연결 후에는 키가 있고 그 이후에는 경고 메시지가 없습니다.

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

$ ssh-keygen -R <hostname>

저한테는 잘 됩니다.

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

그런 다음 pub 키를 추가하고 리포지토리를 복제합니다.완료...

다음을 사용하여 개인 키를 ssh-agent에 추가합니다.

ssh-add ~/.ssh/id_rsa

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

Click the HTTP button and clone that URL instead

윈도우즈 GitHub 응용 프로그램 내에서 리포지토리를 복제하는 경우 이는 원격 URL에 사용되는 것입니다.그들은 우리가 모르는 것을 알고 있을지도 모릅니다.

저도 같은 질문이 있는데요, 제가 발견한 것은.ssh 내일에 을 저장합니다.~ 저는 나그냥는서그를 ..ssh 아래의 ~경로, 그리고 문제가 해결되었습니다.

Windows 컴퓨터를 사용하기 시작할 때도 같은 문제가 발생했습니다.저의 경우 SSH 설정이 완료되지 않았기 때문입니다.Github에는 SSH 설정에 대한 매우 정확한 설명서가 있습니다.일단 치료가 완료되면 문제는 해결되었습니다.

https://help.github.com/articles/checking-for-existing-ssh-keys/ https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/

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

StrictHostKeyChecking no
UserKnownHostsFile /dev/null

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

내 해결책은 논평하는 것이었습니다.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>

Gridengine을 했습니다.qrsh원격 셸 로그인.에 일반적인 경우에는.ssh예상대로 작동할 수 있습니다(처음 경고한 다음 이후에는 조용해집니다).

내 해결책은 수동으로 채우는 것이었습니다.~/.ssh/known_hosts할 수 가능한 서버 이름)qhost서버 나열):

for p in server1 server2 server3 server4; do
  ssh-keyscan -H ${p}.company.com;
  ssh-keyscan -H $(getent hosts $p | perl -lane 'print $F[0]');
done >> ~/.ssh/known_hosts

배경:

그리드 엔진은 SSH를 사용하여 로드가 가장 적은 서버를 선택할 수 있는 작업 스케줄러입니다.경고의 이유는qrsh를 지정하는 "SSH SSH"라는 오류 메시지가 표시됩니다.known_hosts포트 번호가 포함된 항목으로 업데이트됩니다.에 다에언제음 때.qrsh가 있는 하고 " " "라는 포트 번호가 있습니다.known_hosts새 포트별 항목으로 업데이트됩니다.에서 사용된 IP 주소가 사용되었기 입니다.ecdsa-sha2-nistp521원시 IP 항목이 추가되지 않으면 다음과 같은 경고가 표시됩니다.

ECDSA host key for IP address '10.1.2.3' not in list of known hosts.

Linux/Cent OS VM에서 동일한 오류가 발생한 적이 있었는데, 재시작 후 IP가 변경되었기 때문입니다.에서 정적 IP를 하고 " " " " " " " " " " " " " " " " " " " " 에 했습니다./etc/hostsfile. 더 의 valuefile을 합니다. 정적 IP의 경우 약간 높은 범위 값을 언급합니다.예를 들어 현재 IP(ipconfig/ifconfig)가 192.168.0.102인 경우 다시 시작한 후 다음 번에는 192.168.0.103이 될 수 있습니다.따라서 IPV4 설정에서 정적 IP를 192.168.0.181로 정의하여 이를 수행해야 합니다.

이 명령만 있으면 됩니다.

해당하는 경우 GitHub:

ssh -T git@gitlab.com

GitLab을 사용하는 경우:

ssh -T git@gitlab.com

제가 알기로는 당신이 언급한 문제에 대한 깨끗한 해결책이 없습니다.
이전에 제안한 /dev/null 리디렉션은 여전히 경고를 표시하며 출력을 /dev/null로 리디렉션하여 원격 키를 저장하는 보안 기능을 비활성화합니다.
그래서 ssh는 여전히 실제로 폐기된 것을 쓴다고 생각할 것입니다.

제가 알기로는 메시지를 받아 stdout에서 제거하는 방법밖에 없습니다.

ssh/scp..... 2>&1 | grep -v "^Warning: Permanently added"

다음은 이러한 경고를 숨기기 위해 래퍼로 사용할 수 있는 완전한 예입니다.

#!/bin/bash
remove="^Warning: Permanently added" # message to remove from output

cmd=${0##*/}

case $cmd in
 ssh)
  binary=/usr/bin/ssh
 ;;
 *)
  echo "unsupported binary ($0)"
  exit
 ;;
esac
$binary "$@" 2>&1 | grep -v "$remove"

설치하려면 수정하려는 실제 명령에 대해 "case" 문을 추가/수정하기만 하면 됩니다.(립슬, scp, git 등).
"ssh"는 스크립트 이름이 "ssh"(또는 스크립트 링크 이름이 ssh)여야 함)로 지정해야 한다는 것을 의미합니다.이진=/full/path는 스크립트가 래핑해야 하는 이진의 경로입니다.
그런 다음 원하는 이름의 스크립트를 /bin 또는 다른 곳에 넣습니다.

스크립트는 -o "UserKnown"을 사용할 수 있는 위치도 지정합니다.$ssh 변수에 HostsFile=/dev/null"을 지정하는 것이 메시지를 억제하려는 세션뿐만 아니라 모든 ssh 세션에 영향을 미치는 글로벌 ssh 구성에 이러한 보안 위험을 적용하는 것보다 훨씬 좋습니다.

단점:
그것은 완전히 깨끗한 해결책이 아니라 약간 간접적이며 모든 경우에 좋지 않을 수 있는 stdout으로 stderr을 이동시킵니다.
않은 수

언급URL : https://stackoverflow.com/questions/9299651/git-says-warning-permanently-added-to-the-list-of-known-hosts

반응형