목차

SSH 접속시 시간 지연(접속 오래걸림)현상 해결

이강우 2016/09/22 15:39

원인1 : DNS쿼리

ssh 로 원격 서버에 연결할 때 특정 서버는 로그인 프롬프트가 뜨는데 오래 걸리는 경우가 있다.
찾아 보니 주요 원인은 ssh 서버에서 연결하려는 클라이언트의 IP 를 기반으로 DNS 조회를 하기 때문이다.
다음 설정으로 sshd 가 DNS 조회를 끌 수 있다.

  1. /etc/ssh/sshd_config 파일을 연다.
  2. UseDNS no 를 추가해 준다. 기존 설정에 UseDNS yes 가 없거나 주석 처리 되어 있어도 기본 설정이 yes 이므로 명시적으로 no로 설정해 주어야 한다. UseDNS no
  3. sshd 를 재기동한다. systemctl restart sshd
  4. ssh 로 다시 연결해서 증상이 사라졌는지 확인한다.

원인2 : GSSAPIAuthentication 활성화

ssh를 사용해 원격 컴퓨터에 접속할 때 상당히 오래 기다려야 하는 경우가 있다.
-v 옵션을 사용하면 디버깅 메시지를 볼 수 있는데, 붉은색으로 표시한 부분에서 상당히 지연됨을 알 수 있었다.

$ ssh xx.xxxx.com -v

.............

debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found

debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found

debug1: Unspecified GSS failure.  Minor code may provide more information


debug1: Next authentication method: publickey
debug1: Trying private key: /home/cherrykyun/.ssh/identity
debug1: Trying private key: /home/cherrykyun/.ssh/id_rsa
debug1: Trying private key: /home/cherrykyun/.ssh/id_dsa
debug1: Next authentication method: password

이 문제에 대한 해결 방안은 2가지 측면에서 고려하여야 한다.

  • 서버 옵션을 변경 (sshd_config)
  • 클라이언트 옵션을 변경 (ssh_config)

서버 옵션을 변경하는경우 해당 서버에 접속하는 모든 클라이언트에 대해 GSSAPIAuthentication 옵션을 무시하게 되므로 모든 클라이언트가 접속시 상당히 빠르게 접속이 될 것이다.

클라이언트 옵션을 변경하는경우는 내가 다른 서버에 접속할때 해당 옵션을 사용하지 않게 하여 접속이 빠르게 된다.

서버관리자로서 사용자들이 불편함을 호소하는경우는 서버 옵션을 바꿔야 할것이고
사용자로서 특정 서버에 접속시 문제가 발생하는경우에는 본인의 클라이언트 옵션을 변경하여야 할것이다.

필요한 관점에서 접근하도록 하자.

서버쪽 설정을 변경하는 경우

/etc/ssh/sshd_config 파일에서 “GSSAPIAuthentication no” 로 변경하여 준다.

..............
# GSSAPI options

# 이부분을 no로 변경하여 준다.
GSSAPIAuthentication no
#GSSAPIAuthentication yes

#GSSAPICleanupCredentials yes
GSSAPICleanupCredentials yes
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no
..............

클라이언트 설정을 변경하는 경우

/etc/ssh/ssh_config 파일을 수정하도록 한다.

Host *
        GSSAPIAuthentication yes # 이부분을 no로 바꿔준다.

마지막으로 모든 사항을 적용하고 ssh데몬을 재시작 한다.

# service sshd restart