ssh 연결은 "약속 : 네트워크"에 멈춰서 시작하는 데 시간이 오래 걸림


43

ssh를 사용하여 내 서버 중 하나에 연결하는 데 20 초 이상 걸립니다.

자체 연결은 동일 (ssh localhost)하므로 LAN 또는 WAN 조건과 관련이 없습니다. 연결이 완료되면 서버와의 상호 작용이 매우 빠릅니다.

-vvv를 사용하면 "pledge : network"라고 말한 후 연결이 중단되었음을 나타냅니다. 이 시점에서 인증 (여기서는 키 사용)은 다음과 같이 이미 수행되었습니다.

...
debug1: Authentication succeeded (publickey).
Authenticated to myserver.mydomain.com ([xx.xx.xx.xx]:22).
debug1: channel 0: new [client-session]
debug2: channel 0: send open
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: pledge: network

(... 여기 15 ~ 25 초 동안 멈춤 ...)

debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
debug2: callback start
debug2: fd 3 setting TCP_NODELAY
debug2: client_session2_setup: id 0
...

서버는 우분투 16.04입니다. 그것은 이미 다른 서버 (Ubuntu 12.04)와 함께 과거에 나에게 일어 났으며, 신경은 해결책을 찾았고 잠시 후 문제가 사라졌습니다 ...

sshd_config는 Ubuntu에서 제공하는 기본 설정입니다.

지금까지 나는 시도했다 :

  • ssh 명령에서 -o GSSAPIAuthentication = no 사용
  • 키 대신 비밀번호 사용
  • sshd_config에서 Yes 대신 UsePrivilegeSeparation no 사용

1
일반적으로 느린 SSH 연결은 DNS 문제이며, 여기에 해당됩니까? 예를 들어, 서버가 클라이언트의 IP에 대해 역방향 DNS를 수행하려고 시도하고 시간 초과를 기다리는 중일 수 있습니다.
Eric Renouf

실제로 no : 기본적으로 UseDNS는 sshd_config에 정의되어 있지 않으며 매뉴얼 페이지에는이 옵션이 기본적으로 "no"라고 표시되어 있습니다.
M-Jack

3
일부 인터넷 검색은 재부팅하지 않고 systemd를 업데이트하면 발생할 수 있다고 제안합니다. 그리고 7 월 12 일에 xenial에 대한 시스템 업데이트가있었습니다 . systemctl restart systemd-logind나를 위해 짧은 시간 동안 만 문제를 해결합니다.
Ivan Kozik

당신이보고있는 경우 또는 pam_systemd(sshd:session): Failed to create session: Connection timed out답변에서 언급 한 바와 같이,이있을 수 있습니다 github.com/systemd/systemd/issues/2925
이반 Kozik

업데이트 후이 문제가 발생하여 여기에 왔으며 @IvanKozik의 제안으로 문제를 해결했습니다 (즉, systemctl restart systemd-logind). 감사합니다.
Paul M

답변:


43

이것은 아마도에 문제가있다 D-Bus하고 systemd. 경우 dbus서비스가 어떤 이유로 다시 시작할 때, 당신은 또한 다시 시작해야합니다 systemd-logind.

ssh 데몬 로그 (Ubuntu에서 있어야 함 /var/log/auth.log) 를 열어서 문제가 있는지 확인하고 다음 줄이 있는지 확인하십시오.

sshd[2721]: pam_systemd(sshd:session): Failed to create session: Connection timed out

그렇다면 systemd-logind서비스를 다시 시작하십시오 .

systemctl restart systemd-logind

CentOS 7에서도 동일한 문제가 발생했습니다 (CentOS messagebus에서 D-Bus서비스가 호출되는 방식).


systemd-logind를 다시 시작하려고 시도했지만 잠시 후 PolicyKit 데몬이 버스에서 연결 해제되었다고 표시됩니다. 더 이상 등록 된 인증 에이전트가 아닙니다. 제한 시간이 초과되어 systemd-logind.service에 대한 작업이 실패했습니다. 자세한 내용은 "systemctl status systemd-logind.service"및 "journalctl -xe"를 참조하십시오.
Kun Ren

@KunRen 아마도를 polkit사용 하여 서비스 를 다시 시작해야 할 것입니다 systemctl restart polkit.
Strahinja Kustudic

16

답을 찾았습니다.

sshd_config 파일에서 UsePAM을 yes에서 no로 변경했습니다.

ssh 서비스를 다시 시작한 후 이제 서버에 바로 연결됩니다. 이 서버에서 PAM은 ldap에 연결되어 있기 때문에 LDAP 서버가 아닌 서버 자체에 선언 된 사용자와 연결 하더라도이 이유 일 수 있습니다.

글쎄, 이것은 실제로 해결책이 아니라 문제를 우회하는 더 많은 방법입니다 ...이 문제가없는 것과 같은 방식으로 다른 서버를 설정했습니다.

이것이 누군가를 도울 수 있기를 바랍니다 ...


1
UsePAM을 no로 변경하면 다른 효과가 있습니다. 이 토론을 참조하십시오. 그래서 계정이 잠겨 있기 때문에 사용자 nagios가 허용되지 않는 것과 같은 오류가 발생하여 사용자에게 암호를 설정해야했습니다
M-Jack

4
이것은 실제로 좋은 생각이 아닙니다.
Jakuje

1
왜 ?? 어떤 대안?
M-Jack

8
PAM은 최신 시스템에서 계정 관리와 관련된 다른 작업에 사용됩니다. PAM 스택에서 어떤 일이 일어나고 있는지, 왜 그렇게 오래 걸리는지 조사하는 것이 좋습니다.
Jakuje

SSH 액세스가 가능한 PAM 모듈을 사용 하지 않는 것이 보안상의 허점입니다. 보안 관점에서 SSH와 같은 중요한 서비스에 대한 액세스를 제한하는 것은 다른 서비스에도 항상 좋습니다. PAM 모듈이 SSH와 협력하도록하려는 경우 예를 들어, winbind를 통해 Active Directory와 통합해야하는 경우, Google 토큰 등으로 2 단계 인증이 필요한 경우 등이 있습니다. 다른 경우 (passwd 및 shadow를 사용하는 경우) 종료해도 완벽하게 안전합니다. : PAM의 모든 사용자는이 볼 것이다 cve.mitre.org/cgi-bin/cvekey.cgi?keyword=pam
마이클 Sokolowski

10

이것은 Fedora 25 서버 중 2 대에서 발생했으며 SSH 로그인 시도가 많이 실패했기 때문입니다.

( GSSAPIAuthentication=no및 사용 UseDNS=no또는 다시 시작에 대한 일반적인 제안은 systemd-logind차이가 없었습니다.)

이 서버 /etc/pam.d/postlogin에는 다음이 포함됩니다.

session     optional      pam_lastlog.so silent noupdate showfailed

에 대한 매뉴얼 페이지 pam_lastlogshowfailed옵션이 다음 을 설명합니다 .

실패한 로그인 시도 횟수와 btmp에서의 마지막 시도 실패 날짜를 표시합니다.

이 서버에서는 /var/log/btmp실패한 로그인 시도로 인해 파일이 엄청났습니다. btmp로그 파일 중 회전되지 않았다.

logrotate로그 파일이 나중에 교체 될 수 있도록 패키지를 설치했습니다 . Fedora에서 제공되는 logrotate구성은의 회전을 처리합니다 /var/log/btmp.

또한 엄청난 btmp로그 파일을 삭제했습니다 . 이 작업을 수행하자마자 서버에 즉시 연결되었습니다.


이것은 내 문제를 해결했습니다! 감사합니다. 잘 잡았다. SSH는 5-10 초가 걸렸으며 이제 눈을 깜박이는 것보다 적습니다. 이것은 몇 년 동안 공개 인터넷에 연결된 VM에 있습니다. 방화벽 규칙은 아마 약간 더 잘 조정될 수 있습니다. 다른 사람들에게 이것은 내가 한 전부입니다 sudo truncate -s 0 /var/log/btmp.-내 크기는 2.7G였습니다.
Carl Bennett

2

제 경우에는 그 이유는 rsyslogd가 충돌했기 때문입니다. 예를 들어 / var / log / syslog 또는 /var/log/mail.log에 더 이상 로그 메시지가 없기 때문에 이것을 알았습니다.

그래서 service rsyslog restart우리를 위해 문제를 해결.


CentOS 6.10을 실행하는 서버에서 동일한 원인이 발생합니다. rsyslog를 다시 시작하면 문제가 해결되었습니다. 문제는 죽지 않았다는 것입니다. 작동했지만 분명히 유용한 것은 없습니다.
UtahJarhead

1

나 에게이 문제는 큰 (수백 MB) btmp파일로 인해 발생 합니다. 이 파일은 로그인 시도를 기록합니다. 사람들이 당신의 암호를 무력화하려고 할 때이 파일은 크기가 커서 "pledge: network"단계가 지연 될 수 있습니다 .

로그 파일을 지우십시오

echo "" > /var/log/btmp

도움이되는지 확인하십시오.


3
더 많은 설명이 필요합니다. 우선, 이것이 왜 도움이된다고 생각합니까?
Sven

팁 : 입력 만하면 :> /var/log/btmp같은 btw가 수행됩니다.
마리우스

1

나를 위해 해결책이 추가되었습니다.

UseDNS no

받는 /etc/ssh/sshd_config후 물론 service ssh restart(우리의 데비안 / 제시 서버). 그 밖의 아무것도 ...

전에 :

ssh git@git.*****.de true  0.03s user 0.01s system 0% cpu 13.440 total
ssh git@git.*****.de true  0.03s user 0.01s system 0% cpu 20.990 total
ssh git@git.*****.de true  0.03s user 0.02s system 0% cpu 31.114 total
ssh git@git.*****.de true  0.03s user 0.01s system 0% cpu 25.898 total

이후 :

ssh git@git.*****.de true  0.03s user 0.02s system 5% cpu 0.832 total
ssh git@git.*****.de true  0.03s user 0.01s system 7% cpu 0.523 total
ssh git@git.*****.de true  0.03s user 0.01s system 7% cpu 0.574 total

아니요, 추가 UseDNS no는 완전히 다른 문제에 대한 해결책입니다.
kasperd

@kasperd 중요하지 않습니다. 내 경우에는 매우 동일한 증상 (약식 : "약속 : 네트워크"라고 말한 후 붙어 있음)이 마침내 도움이되었으므로 적어도 매우 비슷한 문제에 대한 해결책이며 도움이 될 것입니다. 어떤 시점에서 다른.
tamasgal

여기에 같은 연결시 두 중단 후 한 sign_and_send_pubkey후 더 이상 하나 pledge: network. UseDNS no후속으로 만 추가 service ssh restart하면 이전 Ubuntu 14.04.5 LTS 설치에서 문제가 해결되었습니다.
사냥개

0

디버그 피드백에서 다음 줄을 발견했습니다.

Control socket connect(/var/lib/jenkins/.ssh/USER@HOST:22): Permission denied

root:root내가있는 동안 소유 한 파일이었습니다 jenkins. 이 파일을 제거하면 문제가 해결되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.