SSH 연결 오류 방지 방법:.ssh/known_hosts에서 특정 호스트를 삭제/삭제하지 않는 세 가지 처리 방법

11413 단어 LinuxSSHtech
(2014년 02월 28일: 최초 투고)
(2020년 01월 24일: Ubuntu가 18.04LTE에서 운행 확인)
ssh 연결 오류 (경고) 가 발생하여 연결할 수 없을 때가 있습니다.
  • 오류 원인 knownhosts의 설정 삭제 방법
  • 오류를 간단하게 무시하는 방법
  • 오류가 발생하지 않도록 서버 측면을 설정하는 방법
    라는 내용을 담았다.
    그러나 이런 방법들이 안전성이 좋은지는 각자의 판단이 필요하다.
  • ssh 접속 목적지 서버에 OS 재설치, 접속 목적지 서버가 DHCP를 통해 주소 변경, 접속 목적지 서버가 호스트 이름 교체 등 다음 오류(경고)가 발생해 접속이 불가능한 경우
    #接続エラー
    $ ssh remote_host
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @    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 the RSA host key has just been changed.
    The fingerprint for the RSA key sent by the remote host is
    29:24:c2:69:a3:b0:dc:4d:23:fc:9d:85:9f:ea:01:9b.
    Please contact your system administrator.
    Add correct host key in /home/grgrjnjn/.ssh/known_hosts to get rid of this message.
    Offending key in /home/grgrjnjn/.ssh/known_hosts:3
    RSA host key for remote_host has changed and you have requested strict checking.
    Host key verification failed.
    

    왜?


    SSH에서 고객은 안전한 연결을 위해 대상 서버의 정보(RSA 공개 키의 지문)를 저장합니다.SSH 연결 시 이전에 저장한 정보와 현재 연결하려는 서버의 정보가 일치하는지 확인하십시오.이렇게 하면 사용자(클라이언트)가 자신도 모르게 다른 서버에 연결되는 것을 방지한다.더 안전해야 돼.

    오류 원인 knownhosts 설정 삭제 방법


    저장된 연결 대상 서버의 정보(지문)를 삭제하면 새 연결이 되므로 오류를 방지할 수 있습니다.이 명령의 정답은 ssh-keygen -R hostname이다.old를 설치한 후 백업도 자동으로 제작할 수 있습니다.
    #正解
    $ ssh-keygen -R remote_host_name
    /home/grgrjnjn/.ssh/known_hosts updated.
    Original contents retained as /home/grgrjnjn/.ssh/known_hosts.old
    
    실제 상황은 ~/.ssh/known_hosts 파일이기 때문에 직접 편집할 수도 있다.오류가 발생한 서버 이름(또는 IP 주소)에서 시작하는 행만 삭제합니다.
    sed 써도 되죠?
    #sedを使ったやり方
    $ sed -i '/remote_host_name/d' ~/.ssh/known_hosts
    
    vi로만 편집해도 안 되는 건 아니에요.

    잘못된 방법을 간단히 소홀히 하다

    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!가 발생하더라도 연결할 때-o 'StrictHostKeyChecking no' 옵션을 사용하는 방법과 설정 파일에 항상 이 옵션을 기재하는 방법이 있습니다.
    #エラーを無視する接続方法
    $ ssh -o 'StrictHostKeyChecking no' remote_host_name
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @       WARNING: POSSIBLE DNS SPOOFING DETECTED!          @
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    The RSA host key for remote_host_name has changed,
    and the key for the corresponding IP address 10.211.55.28
    is unchanged. This could either mean that
    DNS SPOOFING is happening or the IP address for the host
    and its host key have changed at the same time.
    Offending key for IP in /home/grgrjnjn/.ssh/known_hosts:1
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @    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 the RSA host key has just been changed.
    The fingerprint for the RSA key sent by the remote host is
    29:24:c2:69:a3:b0:dc:4d:23:fc:9d:85:9f:ea:01:9b.
    Please contact your system administrator.
    Add correct host key in /home/grgrjnjn/.ssh/known_hosts to get rid of this message.
    Offending key in /home/grgrjnjn/.ssh/known_hosts:3
    Password authentication is disabled to avoid man-in-the-middle attacks.
    Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.
    Last login: Fri Feb 28 15:27:36 2014 from 10.211.55.27
    
    이 방법을 사용하면 상기 명령 실행 결과를 똑똑히 볼 수 있으며 오류 외에 첫 연결(yes/no)?에서의 상호작용 교환도 생략할 수 있다.
    #この対話処理も省略される
    $ ssh remote_host_name
    The authenticity of host 'remote_host_name (10.211.55.28)' can't be established.
    RSA key fingerprint is 29:24:c2:69:a3:b0:dc:4d:23:fc:9d:85:9f:ea:01:9b.
    Are you sure you want to continue connecting (yes/no)? 
    
    이 옵션을 항상 유효하게 하려면 설정 파일에 기록StrictHostKeyChecking no합니다.전체 시스템에 적용하려면 /etc/ssh/ssh_config에서 각 사용자에 대한 설정~/.ssh/config을 다음과 같이 하십시오.
    #~/.ssh/config
    StrictHostKeyChecking no
    
    ~/.ssh/config가 없으면 새로 만듭니다.이 경우 권한에 유의하십시오.600 권한이 아닌 파일의 경우 SSH에 연결하는 동안 오류가 발생했습니다.
    #~/.ssh/configのパーミッション設定
    $ chmod 600 ~/.ssh/config
    
    이 설정을 하면 다음과 같이 경고를 보내지만 오류로 인해 멈추지 않고 상호작용 응답으로 연결되지 않습니다.
    #StrictHostKeyCheckingが設定されている場合の挙動
    $ ssh remote_host_name
    Warning: Permanently added 'remote_host_name' (RSA) to the list of known hosts.
    Last login: Fri Feb 28 15:32:12 2014 from 10.211.55.27
    
    만약에 이 동작을 하게 한다면 물론 안전성 위험에 대해 충분히 논의해 주십시오.

    오류 방지를 위한 서버 측 설정 방법


    서버 측에 연결된 RSA 공개 키의 지문이 바뀌었기 때문이라면 바꾸지 않는 방법도 있다.지문의 원형은 /etc/ssh/ssh_host_key.pub 등이다.
    이를 백업해 OS를 다시 설치한 뒤 다시 돌려보내거나 여러 서버에서 공유하면 된다.
    #RHEL、CentOSの場合
    /etc/ssh/moduli
    /etc/ssh/ssh_config
    /etc/ssh/ssh_host_dsa_key
    /etc/ssh/ssh_host_dsa_key.pub
    /etc/ssh/ssh_host_key
    /etc/ssh/ssh_host_key.pub
    /etc/ssh/ssh_host_rsa_key
    /etc/ssh/ssh_host_rsa_key.pub
    /etc/ssh/sshd_config
    
    내 CentOS 6다섯 가지 환경에서 권한은 다음과 같다.
    #CentOS6.5のパーミッション
    $ ls -ld /etc/ssh/
    drwxr-xr-x. 2 root root 4096  211 21:06 2014 /etc/ssh/
    
    $ ls -l /etc/ssh/
    合計 156
    -rw-------. 1 root root 125811 1123 07:40 2013 moduli
    -rw-r--r--. 1 root root   2047 1123 07:40 2013 ssh_config
    -rw-------. 1 root root    668  211 19:21 2014 ssh_host_dsa_key
    -rw-r--r--. 1 root root    590  211 19:21 2014 ssh_host_dsa_key.pub
    -rw-------. 1 root root    963  211 19:21 2014 ssh_host_key
    -rw-r--r--. 1 root root    627  211 19:21 2014 ssh_host_key.pub
    -rw-------. 1 root root   1675  211 19:21 2014 ssh_host_rsa_key
    -rw-r--r--. 1 root root    382  211 19:21 2014 ssh_host_rsa_key.pub
    -rw-------. 1 root root   3879  211 21:06 2014 sshd_config
    
    이상
    OpenSSH 시작하기(Amazon)
    OpenSSH[実践]入門

    좋은 웹페이지 즐겨찾기