[해결] Putty로 SSH 접속시 Server unexpectedly close

우분투 8.04 에다가 apt-get install openssh-server 명령어로 openssh를 설치했습니다.

그러고나서 putty를 통해 접속해보니 Server unexpectedly closed network connection 이라는 에러와 함꼐 종료됩니다.

login as: 까지도 뜨고 비밀번호도 맞게쳐야 저 에러가뜹니다. 비밀번호 틀리게쓰면 한번더 치도록 나오구요.

뭔가 인증부분이 꼬인것같은데

디버그 모드로 접속한 로그 아래에 남겨드립니다.

참고로 iptables 룰은 초기화 해놨습니다.

원인이 무엇인지 아시는분!

OpenSSH_4.7p1 Debian-8ubuntu1.2, OpenSSL 0.9.8g 19 Oct 2007
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to 222.122.31.234 [222.122.31.234] port 22.
debug1: Connection established.
debug1: permanently_set_uid: 0/0
debug1: identity file /root/.ssh/identity type -1
debug1: identity file /root/.ssh/id_rsa type -1
debug1: identity file /root/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_4.7p1 Debian-8ubuntu1.2
debug1: match: OpenSSH_4.7p1 Debian-8ubuntu1.2 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1.2
debug2: fd 3 setting O_NONBLOCK
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa,ssh-dss
debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128,arcfour256,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr
debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128,arcfour256,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,zlib@openssh.com,zlib
debug2: kex_parse_kexinit: none,zlib@openssh.com,zlib
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit: first_kex_follows 0
debug2: kex_parse_kexinit: reserved 0
debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa,ssh-dss
debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128,arcfour256,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr
debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128,arcfour256,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,zlib@openssh.com
debug2: kex_parse_kexinit: none,zlib@openssh.com
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit: first_kex_follows 0
debug2: kex_parse_kexinit: reserved 0
debug2: mac_setup: found hmac-md5
debug1: kex: server->client aes128-cbc hmac-md5 none
debug2: mac_setup: found hmac-md5
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug2: dh_gen_key: priv key bits set: 126/256
debug2: bits set: 510/1024
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug3: check_host_in_hostfile: filename /root/.ssh/known_hosts
debug3: check_host_in_hostfile: match line 2
debug1: Host ‘222.122.31.234’ is known and matches the RSA host key.
debug1: Found key in /root/.ssh/known_hosts:2
debug2: bits set: 483/1024
debug1: ssh_rsa_verify: signature correct
debug2: kex_derive_keys
debug2: set_newkeys: mode 1
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug2: set_newkeys: mode 0
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /root/.ssh/identity ((nil))
debug2: key: /root/.ssh/id_rsa ((nil))
debug2: key: /root/.ssh/id_dsa ((nil))
debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred gssapi-keyex,gssapi-with-mic,gssapi,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/identity
debug3: no such identity: /root/.ssh/identity
debug1: Trying private key: /root/.ssh/id_rsa
debug3: no such identity: /root/.ssh/id_rsa
debug1: Trying private key: /root/.ssh/id_dsa
debug3: no such identity: /root/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
sangho@222.122.31.234’s password:
debug3: packet_send2: adding 64 (len 60 padlen 4 extra_pad 64)
debug2: we sent a password packet, wait for reply
debug1: Authentication succeeded (password).
debug1: channel 0: new [client-session]
debug3: ssh_session2_open: channel_new: 0
debug2: channel 0: send open
debug1: Entering interactive session.
debug1: channel 0: free: client-session, nchannels 1
debug3: channel 0: status: The following connections are open:
#0 client-session (t3 r-1 i0/0 o0/0 fd 4/5 cfd -1)

debug3: channel 0: close_fds r 4 w 5 e 6 c -1
Connection to 222.122.31.234 closed by remote host.
Connection to 222.122.31.234 closed.
debug1: Transferred: stdin 0, stdout 0, stderr 91 bytes in 0.0 seconds
debug1: Bytes per second: stdin 0.0, stdout 0.0, stderr 16845.6
debug1: Exit status -1

/proc 디렉토리의 권한문제였습니다.
따로 보안이 좋아질까 해서 700으로 설정했었는데 그게 문제였더군요
0555 로 다시 설정하니 정상작동합니다.

저는 그냥 ssh 설치로 설치했습니다.
sudo apt-get install ssh

ssh로만 설치해보세요.

오래전 MS 환경에서 Putty 사용하던 때 경험 한건데

MS라면
지금 컴퓨터 말고 다른 컴퓨터 에서 putty 깔아 접속이 된다면
지금 안되는 컴퓨터에 putty를 초기화 하십시요
숨김 파일보는 상태에서 Program Files 쪽이나 Documents and Settings 쪽 뒤져 보시면
putty 인증 관련 저장 파일이 있습니다.

서버가 변경되었을때
리눅스를 예로 들면
~/.ssh/known_hosts 파일 지워야 합니다.
[attachment=0:r8t7nhvg]screenshot2.png[/attachment:r8t7nhvg]

아니면 혹시 root 로긴 하려는건지요 ?
우분투 당연히 root 로 로긴 안됩니다. 설치 초기 정한 계정으로 로그인하십시요

[quote="강분도":3q4n8pyv]
서버가 변경되었을때
리눅스를 예로 들면
~/.ssh/known_hosts 파일 지워야 합니다.
[/quote:3q4n8pyv]
파일을 완전히 날릴 필요는 없고 ssh로 접속시도할 때 경고가 뜨면서 서버의 public key fingerprint가 known_hosts의 몇번째 줄에 있는 내용과 충돌한다고 나옵니다. known_hosts 파일을 열어서 해당 줄만 지워주셔도 됩니다. 물론, ssh로 접속하는 서버가 하나뿐이라면 그냥 known_hosts 파일을 날리는 게 더 간단하죠.

에… 그리고, sangho님이 붙여 놓으신 로그는 아무래도 client 쪽 로그 같은데요. 서버 쪽의 로그를 봐야 하지 않을까요? /var/log/auth.log나 다른 파일들을 좀 뒤져보셔야 할 것 같은데요.

putty의 설정 잘못일 확률이 높아 보입니다. 로그상으로는 루트로 로긴하다 안되서 다시 다른 사용자로 로긴한 것 처럼 보이는데 다른 사용자로 로긴하자 마자 멈추네요. 느낌상 사용자의 uid가 0이거나 홈이 /root여서 로긴 자체가 제대로 안되고 있는 것일 수도 있습니다.

  1. SSH는 루트로는 로긴이 안됩니다. 설정을 바꾸면 아마도 되겠지만 기본설정은 안되게 되어 있죠.
  2. 사용자 sangho의 홈이 /root가 아닌지 확인 해 보세요.
  3. 사용자 sangho의 uid가 0이 아닌지 확인해 보세요.

사용자가 권한이 없는 디렉토리를 홈으로 하거나 사용할 수 없는 쉘을 쉘 프로그램으로 설정한 경우 로그인이 되지 않고 튕겨 버릴 수 있습니다. 로그상으로는 커넥션은 제대로 만들어 졌는데 그 이후 자동으로 connection이 닫힌 것으로 되어 있는 것으로 봐서는 putty의 설정 잘못으로 connection이 강제로 닫혔을 가능성도 있으니 확인하셔야 할 듯 합니다.

실제 서버의 콘솔(설치된 컴퓨터의 키보드와 모니터)앞에서 로그인 하신 다음 ssh [아이디]@localhost 하셔서 제대로 동작하는지 확인하셔서 만약 제대로 로그인이 된다면 서버는 정상 설정된 것입니다. 그렇다면 putty를 조정하셔야 할 것 같구요. 만약 로그인이 잘 되지 않는다면 제가 언급해 드린 (2)와 (3) 그리고 Lbird님이 언급하신 knownhosts파일을 날려 주거나 에러가 난 곳을 수정하시면 됩니다.

이게 어찌 해결 된거냐면
상호님하고 IRC 우분투 채널에서 문제 해결을 위해 대화를 하는데
저 또한 접속이 안되더군요!
상호님이 스스로 작업 한거를 돌이켜 보더니 /proc 에 700 퍼미션을 주었다더군요
그래서 IDC에 연락해서 퍼미션 0555 주고 해결 했답니다.
어디서 이상한 팁 배워가지고 따라하기는
보안상 /proc 디렉에 퍼미션 700 주면 좋탑니다. ?
단 따라 하시면 위 상호님 처럼 외부에서 접속 불가 합니다.