SSH를 통해 LAN의 다른 Ubuntu 시스템에 연결할 수 있습니다. 두 PC 모두에서 openssh-server를 설치 했지만 다른 Ubuntu 컴퓨터에서 SSH를 통해 PC에 연결할 수 없으며이 오류가 발생했습니다.
호스트 키 확인에 실패했습니다 ...
ssh
명령 행에서 발생할 수 있습니다.
SSH를 통해 LAN의 다른 Ubuntu 시스템에 연결할 수 있습니다. 두 PC 모두에서 openssh-server를 설치 했지만 다른 Ubuntu 컴퓨터에서 SSH를 통해 PC에 연결할 수 없으며이 오류가 발생했습니다.
호스트 키 확인에 실패했습니다 ...
ssh
명령 행에서 발생할 수 있습니다.
답변:
"호스트 키 확인 실패" 는 원격 호스트 의 호스트 키가 변경 되었음을 의미합니다 .
SSH는 원격 호스트의 호스트 키를에 저장합니다 ~/.ssh/known_hosts
. 해당 텍스트 파일을 수동으로 편집하고 이전 키를 제거하거나 (오류 메시지에 줄 번호가 표시됨)
ssh-keygen -R hostname
에서 man 페이지 :
-R hostname
known_hosts 파일에서 호스트 이름에 속하는 모든 키를 제거합니다. 이 옵션은 해시 된 호스트를 삭제하는 데 유용합니다.
(나는 SSH의 known_hosts 파일에서 특정 호스트 키를 제거 할 수 있습니까? )에 대한 답변에서 배웠습니다 .
rm ~/.ssh/*
, 다음 ssh -o BatchMode=yes root@somewhere
아무것도 잘못하지 않는 경우, 내가 얻을 것 Host key verification failed.
같은 오류가 발생 스크립트 회원님이 항상 대화 형 있다면 중요하지만 관련.
ssh-keygen -R example.net:7999
수율 Host example.net:7999 not found in known_hosts
.
known_hosts
파일을 제거 하고 다시 ssh. 효과가있었습니다.
~/.ssh/known_hosts
을 읽을 수 없음
prompt-to-add-hostkey에 대화식으로 액세스 할 수없는 특정 원격 / 스크립팅 상황에서 실행중인 경우 다음과 같이 해결하십시오.
$ ssh -o StrictHostKeyChecking=no user@something.example.com uptime
경고 : 알려진 호스트 목록에 'something.example.com, 10.11.12.13'(RSA)을 영구적으로 추가했습니다.
sh """ssh -o StrictHostKeyChecking=No ec2-user@someIpAddress-e2e sudo service tomcat restart"""
또한 직렬 콘솔에서 작업 할 때 상황이있는 경우 상세 모드에서 위 명령을 확인 -v
하면 /dev/tty
존재하지 않는 것으로 표시됩니다 .
ssh -v user@hostname
위의 경우 바로 제거 /dev/tty
와의 심볼릭 링크 생성 /dev/ttyS0
에를 /dev/tty
.
rm /dev/tty
ln -s /dev/ttyS0 /dev/tty
다른 방법으로, id_rsa.pub
원격 위치에 추가 하면 암호가 프롬프트되지 않고 로그인 액세스가 가능합니다.
터미널에서 :
ssh -o StrictHostKeyChecking=no -i YourPublicKey.pem user@example.com uptime
다음과 같은 메시지가 나타납니다.
Warning: Permanently added 'example.com, XX.XXX.XXX.XX' (ECDSA) to the list of known hosts.
00:47:37 up 3 min, 0 users, load average: 0.00, 0.00, 0.00
그런 다음 평소와 같이 EC2에 연결하십시오.
ssh -i YourPublickey.pem user@example.com
command-line line 0: Bad yes/no/ask argument.
'아니오'대신 '아니오'를 잘못 사용했기 때문에 알 수 있습니다StrictHostKeyChecking
이것은 오래된 스레드이며 방금이 답변을 가로 질러 나갔습니다.이 문제를 해결하기 위해 수행 한 작업을 추가 할 것입니다.
ssh-keygen -f "/home/USER/.ssh/known_hosts" -R HOSTNAME
방금 나에게 던진 오류 메시지를보고 호스트 목록에서 제거하기 위해 해당 명령을 실행한다고 말했습니다. 그 후 나는 다음을 수행했다.
ssh-copy-id HOSTNAME
내가 서버에 ssh 할 수있을 때까지 거기에서 프롬프트를 따랐던 것보다.
원격 호스트 키가 변경되었음을 의미합니다 (호스트 비밀번호 변경 일 수 있음).
터미널은이 명령을 루트 사용자로 실행하도록 제안했습니다
$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]:4231
PC / 서버의 호스트 목록에서 해당 호스트 이름을 제거해야합니다. 제안 된 명령을 복사하고 루트 사용자로 실행하십시오.
$ sudo su // Login as a root user
$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]:4231 // Terminal suggested command execute here
Host [www.website.net]:4231 found: line 16 type ECDSA
/root/.ssh/known_hosts updated.
Original contents retained as /root/.ssh/known_hosts.old
$ exit // Exist from root user
$ sudo ssh root@www.website.net -p 4231 // Try again
이것이 효과가 있기를 바랍니다.
이 방법으로 키를 변경해야합니다. 주어진 오류에서 어떤 호스트 키가 변경되었는지 찾으십시오. 예를 들면 다음과 같습니다.
sed -i '5d' ~/.ssh/known_hosts
주의 : 루트 권한이 있거나 sudo에 대한 권한이 있어야합니다.
ssh가 연결을 계속하고 싶다고 확인하면 "yes"만 입력하면됩니다.
벨로우즈처럼.
The authenticity of host 'xxx' can't be established.
ECDSA key fingerprint is yyy.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'xxx' (ECDSA) to the list of known hosts.
Enter passphrase for key '/Users/ysy/.ssh/id_rsa':
그런 다음 비밀번호를 입력하십시오.
"연결을 계속 하시겠습니까 (예 / 아니요)? 예 "에주의하십시오. 입력하지 말고 예를 입력해야합니다.
내 솔루션은이 블로그 게시물에서 나옵니다 : SSH Secure Shell Client에 대한 알고리즘 협상 실패
다음과 같이 파일을 수정해야합니다.
sudo nano /etc/ssh/sshd_config
그런 다음 다음을 추가하십시오.
# Ciphers
Ciphers aes128-cbc,aes192-cbc,aes256-cbc,blowfish-cbc,arcfour
KexAlgorithms diffie-hellman-group1-sha1
기본적으로 문제를 해결할 수있는 솔루션을 찾을 때까지 다른 솔루션을 시도했습니다. 위의 해결 방법으로 문제가 해결되지 않으면 시도해보십시오. 이 방법으로 문제가 해결되지 않으면 다른 사람을 사용해보십시오.
"sudo vi /var/root/.ssh/known_hosts"를 수행하고 연결하려는 호스트의 키를 보유한 라인을 제거하고 다시 연결하십시오.
특정 상황에 대해 모르겠지만 대부분이 오류는 다음과 같은 메시지와 함께 나타납니다.
my_mac:~ oivanche$ sudo ssh pi@192.168.0.45
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:sx1Z4xyGY9venBP6dIHAoBj0VhDOo7TUVCE2xWXpzQk.
Please contact your system administrator.
Add correct host key in /var/root/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /var/root/.ssh/known_hosts:74
ECDSA host key for 192.168.0.45 has changed and you have requested strict checking.
Host key verification failed.
로그를주의 깊게 읽으면 호스트에서 얻은 키가 이미 가지고있는 키와 충돌하는 것을 알 수 있습니다.이 경우 known_hosts 파일의 74 행에 있습니다 (/ var /의 ECDSA 키 위반). root / .ssh / known_hosts : 74). known_hosts에서 행을 제거하고 변경 사항을 저장 한 후 다시 연결하십시오.