메모리가 500MB인 로컬 Centos 6.3 가상 머신에 연결하는 데 문제가 있습니다.
연결의 출력은 다음과 같습니다 ssh -vvv localhost
.
OpenSSH_6.3, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /usr/local/etc/ssh_config
debug2: ssh_connect: needpriv 0
debug1: Connecting to localhost [127.0.0.1] port 22.
^^^^^^^^^^ Loading this statement takes more than a minute
debug1: Connection established.
...
debug1: Next authentication method: password
root@localhost's password:
^^^^^^^^^^ This step takes a minute too
debug3: packet_send2: adding 64 (len 50 padlen 14 extra_pad 64)
debug2: we sent a password packet, wait for reply
debug1: Authentication succeeded (password).
Authenticated to localhost ([127.0.0.1]:22).
debug1: channel 0: new [client-session]
debug3: ssh_session2_open: channel_new: 0
debug2: channel 0: send open
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug2: callback start
debug2: fd 3 setting TCP_NODELAY
debug3: packet_set_tos: set IP_TOS 0x10
debug2: client_session2_setup: id 0
debug2: channel 0: request pty-req confirm 1
debug2: channel 0: request shell confirm 1
debug2: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug2: channel_input_status_confirm: type 99 id 0
debug2: PTY allocation request accepted on channel 0
debug2: channel 0: rcvd adjust 2097152
debug2: channel_input_status_confirm: type 99 id 0
debug2: shell request accepted on channel 0
Last login: Wed Oct 9 13:27:02 2013 from 10.0.0.2
이 지연을 없애는 방법을 제안해주세요.
답변1
내 생각 엔 문제는 DNS 요청 시간 초과입니다. 호스트 이름 대신 IP 주소로 연결을 시도하고, UseDNS
연결하려는 서버의 옵션을 꺼보세요. 게다가:
ssh localhost
VM 호스트에서 연결한다고 가정하면 게스트 VM이 아닌 호스트에 연결하고 싶습니다 . 물론 흥미로운 네트워크 설정이 없다면 말이죠.첫 번째 지연의 경우 이를 실행하고 클라이언트 측 보류 중인
strace
시스템 호출을 확인할 수 있습니다.ssh
두 번째 지연의 경우
top
가상 머신에서 실행하여 가상 머신에 연결할 때 어떤 일이 발생하는지 확인하세요. 그동안 대체 포트에서 디버그 모드로 SSH 데몬을 실행하고 인스턴스에 연결하는 것이 좋습니다. 대기 중인 위치를 확인할 수 있습니다. 루트로 실행하면 됩니다.sshd -ddd -p 2222 -o UsePrivilegeSeparation=no
그러면 포트 2222에서 SSH 데몬이 시작되고 많은 정보(
-ddd
)가 기록되며 로그인 중에 권한 분리를 사용하지 않습니다(권한 분리를 비활성화하면 하나의 프로세스만 사용되므로 strace에서 무슨 일이 일어나고 있는지 더 쉽게 확인할 수 있습니다).-o UseDNS=no
위 옵션을 추가하여 비활성화할 수도 있습니다 .
답변2
가상 머신이라면 엔트로피가 부족하기 때문일 수 있습니다.연결 시도 전/중에 사용 가능한 엔트로피를 모니터링하려면 다음 줄을 사용하십시오.
while true; do sleep 5; cat /proc/sys/kernel/random/entropy_avail; done
연결 시도 중에 수치가 상당히 낮거나 크게 떨어졌다면 이것이 원인일 가능성이 높습니다.
편집하다:그렇게 하면 새로운 프로세스를 시작하면 엔트로피가 소비되므로 사용 가능한 엔트로피 자체에 영향을 줍니다. 당신은 또한 볼 수 있습니다https://blog.flameeyes.eu/2011/03/entropy-broken
rng-tools
가상화 솔루션에 따라 더 많은 엔트로피를 수집하는 데몬( 또는 )을 설치하거나 clrngd
가상 머신에 올바른 엔트로피 장치가 할당되었는지 확인하여 사용 가능한 엔트로피를 늘릴 수 있습니다.