Ssh 속도 저하 - Ssh sogdo jeoha

SSH 로그인 시에 SSH 클라이언트는 몇 가지 인증 과정을 거치는데요, 그 중에 GSSAPI 인증이라는 단계가 있습니다. 이 과정은 SSH 서버가 GSSAPI 서버에 접속해서 클라이언트의 유효성을 인증받는 과정이 들어가 있는데, 이 과정이 실패할 때 SSH 세션이 시작되는 것이 상당히 지연되기도 합니다. 

해결책은 SSH 설정에서 GSSAPI 인증을 사용하지 않게 해 주는 것입니다.

SSH 설정 파일을 열어서 GSSAPIAuthentication 을 검색합니다.


$ vi /etc/ssh/sshd_config 


해당 항목의 값을 "no" 로 설정합니다.


GSSAPIAuthentication no

 

SSH 서버를 재시작 합니다.


$ systemctl restart sshd


2. 역방향 DNS 조회 문제

SSH 접속이 느려지는 다른 문제로는 역방향 DNS 조희 입니다. SSH 서버가 클라이언트로부터 로그인 요청을 받으면, 서버는 보안상의 이유로 클라이언트의 IP에 대해서 역방향 DNS를 조회합니다. 만약 역방향 조회가 실패하면 timeout 시간 만큼 접속이 늦어집니다.

SSH 접속 지연(느림) 해결

CentOS 6 에서 테스트 하였습니다.


어느날 빠르게 접속되던 ssh 가 어느날 부터 느리게 연결 될 때가 있습니다.

계정을 입력하는 부분 부터, 패스워드 입력 후 인증이 되기 까지 말이죠.

저 같은 경우에 다음과 같은 방법으로 해결했습니다.

  • GSSAPI 옵션 해제
  • DNS 사용 해제
  • localhost DNS 로 설정

GSSAPI 옵션 해제 & DNS 사용 해제

[]$ vim /etc/ssh/sshd_config

GSSAPIAuthentication no # yes를 no로 바꿔도 되고, yes를 주석처리하고 no를 주석해제하시면됩니다.
UseDNS no # 주석을 해제하고 no로 설정

localhost DNS 설정

[]$ vim /etc/resolve.conf

nameserver 127.0.0.1  # 맨위에 적용

인터넷에 검색해 보시면 보다 많은 내용을 확인 하실 수 있으며, 보다 자세한 검색을 원하시면 다음과 같은 명령으로 ssh 접속 흐름을 파악하시면 좋습니다.

[]$ ssh -v [계정]@[접속 주소]


공유하기

게시글 관리

구독하기Sanctuary

저작자표시 비영리 변경금지

'프로그래밍언어 > 리눅스' 카테고리의 다른 글

rsync snapshot & backup  (0)2017.02.22특정 패턴 경로의 디렉토리 시간별 제거  (0)2017.01.10[PHP-FPM] 최대 자식 개수 구하기  (0)2017.01.03[CentOS7] systemd 에 서비스 등록하기  (0)2016.12.29[CentOS] Yum 패키지 저장소 제거  (0)2016.12.27

실무에서 개발 / 빌드 / 테스트를 한 곳에서 진행하는 부분은 흔치 않습니다.

여러 host를 드나들며 작업을 해야 하는데 이때 유용하게 쓰이는 것이 ssh입니다.

다만 ssh를 접속했을 때 약간의 지연이 발생하는 경우가 있는데요,

한두 번 접속할 거라면 참고 넘기겠지만 거의 매일을 마주해야 한다면 무시할 수 있는 시간은 아니죠.

이를 해결할 수 있는 간단한 방법을 소개합니다.

1. ssh 설정파일을 엽니다.

# sudo vim /etc/ssh/sshd_config

2. 다음 두 문구를 수정합니다.

GSSAPIAuthentication yes -> GSSAPIAuthentication no

-> 설정 파일의 변경사항이 없다면, 80번대 줄에 있습니다

ssh 연결 시 GSS API를 사용할지에 대한 여부를 설정하는 field입니다.

GSS API는 DNS 호출을 합니다. 그러므로 이걸 사용했을 때

만약 DNS 호출에서 응답이 없다면 지정된 timeout 시간만큼 대기해야 하므로

GSS API 인증이 필요없는 ssh 연결의 경우 이를 해제하면 시간을 줄일 수 있습니다.

# UseDNS yes -> UseDNS no

-> 설정 파일의 변경사항이 없다면, 120번대 줄에 있습니다.

주석 처리되어 있거나 yes로 설정되어 있을 경우 반드시 no로 변경합니다.

3. sshd 서비스를 재시작합니다.

# sudo service sshd restart

높은 대기 시간은 ssh 성능 저하의 또 다른 원인입니다. traceroute를 더 잘 대체하기 위해 mtr을 사용하는 것이 좋습니다. 네트워크 문제가 발생할 수있는 위치에 대한 정보를 제공 할 수 있어야합니다.


답변

필요하지 않은 경우 X11 전달을 비활성화 (ssh -x)하고 압축 (ssh -C)을 활성화하면 세션 속도가 빨라질 수 있습니다.


답변

두 가지 가능한 원인을 생각할 수 있습니다.

  1. 연결에서 패킷 손실
  2. 서버의 부하가 높습니다.


답변

터미널이 정상이라는 것을 곧 발견하여 네트워크 성능을 측정하려고했습니다. 무슨 일이 일어난?

두 개의 인터넷 채널 라우터간에로드 밸런싱이 있습니다. 때로는 s1 트래픽을 wan1을 통해 라우팅하고 때로는 wan2를 통해 라우팅합니다. 하나의 채널에만 문제가 있다고 제안했습니다. 그래서 두 채널에 대해 mtr (great tool!)을 사용하여 네트워크 성능을 별도로 측정했습니다.

네! wan2에는 110ms의 21 홉이 있고 wan1에는 21ms의 15 개가 있습니다! wan2 대기 시간이 문제입니다.


답변

압축 및 압축 수준 9를 사용하십시오. 약간 도움이 될 것입니다. / etc / ssh / ssh_config에서 이러한 매개 변수를 구성 할 수 있습니다. 그러나 실제 네트워크가 매우 열악하면이 트릭은별로 좋지 않습니다.


답변

이 동작의 가장 명백한 원인은 포화되거나 손실 된 패킷 인 링크입니다. 워크 스테이션에서 ssh ‘s하고있는 기계까지 몇 개의 홉이 있습니까? 해당되는 경우 추적 경로를 분석 했습니까?


답변

긴 지방 파이프 (높은 대역폭 + 높은 대기 시간)에서 OpenSSH를 사용하는 경우 OpenSSH가 더 큰 tcp 창 크기를 사용하도록 수정하기 때문에 양쪽에서 버전 4.7 이상을 사용하고 있는지 확인하십시오.

UseDNS no 를 추가해 준다. 기존 설정에 UseDNS yes 가 없거나 주석 처리 되어 있어도 기본 설정이 yes 이므로 명시적으로 no로 설정해 주어야 한다. UseDNS no

  • sshd 를 재기동한다. systemctl restart sshd

  • 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 옵션을 무시하게 되므로 모든 클라이언트가 접속시 상당히 빠르게 접속이 될 것이다.