성공적인 로그인 후 Linux 연결 종료


23

데비안 5.2.2 서버에서 작업하고 있습니다. 리눅스에 대한 관리 지식이 거의 없기 때문에 나는 무언가를 망쳤다 고 생각합니다. apt-get update와 apt-get upgrade를 사용하여 모든 것을 최신 상태로 유지 한 다음 Apache, PHP 및 MySQL을 다운로드하여 설치했습니다. 이러한 도구는 정상적으로 작동하는 것처럼 보이지만 이제는 로컬 콘솔을 통해 서버를 제외하고는 로그인 할 수 없습니다. GUI를 통해 로그인을 시도하거나 ssh, scp 등을 통해 원격으로 로그인하려고하면 로그인에 성공하면 즉시 연결이 끊어집니다. 즉, 초기 연결에는 아무런 문제가 없지만 올바른 사용자 이름과 암호 (루트 또는 모든 사용자)를 입력하면 연결이 끊어집니다. GUI를 사용하면 화면이 잠시 검은 색으로 바뀌고 로그인 프롬프트로 돌아갑니다. ssh를 사용하면 "[서버]에 대한 연결이 닫힙니다."

도움을 주시면 더 많은 정보를 제공 할 수있는 방법이 있으면 알려 주시기 바랍니다. 시간 내 주셔서 감사합니다.

편집 :

-모든 사용자가 로컬 콘솔에서 로그인 할 수 있습니다

-현재 컴퓨터에 로컬로 액세스 할 수 없으므로 지금 바로 할 수있는 것은 ssh입니다. 다음은 비밀번호를 입력 한 후 ssh -vvv [server] 의 출력입니다 .

Linux xxxxxxx.com 2.6.26.8+20091222+1056-debhawk-5.2.2-custom #1 SMP PREEMPT Tue Dec 22 10:58:57 EST 2009 i686

Last login: Mon Apr 30 14:48:07 2012 from xxxxxxx.com
debug2: channel 0: rcvd eof
debug2: channel 0: output open -> drain
debug2: channel 0: obuf empty
debug2: channel 0: close_write
debug2: channel 0: output drain -> closed
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug2: channel 0: rcvd close
debug2: channel 0: close_read
debug2: channel 0: input open -> closed
debug3: channel 0: will not send data after close
debug2: channel 0: almost dead
debug2: channel 0: gc: notify user
debug2: channel 0: gc: user detached
debug2: channel 0: send close
debug2: channel 0: is dead
debug2: channel 0: garbage collecting
debug1: channel 0: free: client-session, nchannels 1
debug3: channel 0: status: The following connections are open:
#0 client-session (t4 r0 i3/0 o3/0 fd -1/-1)

debug3: channel 0: close_fds r -1 w -1 e 6
Connection to xxx.x.xx.xx closed.
debug1: Transferred: stdin 0, stdout 0, stderr 35 bytes in 0.0 seconds
debug1: Bytes per second: stdin 0.0, stdout 0.0, stderr 3845.3
debug1: Exit status 254

5
Linux는 운영 체제가 아닌 커널입니다. 커널 버전 5.2.2가 없으므로 어떤 배포 를 사용하고 있습니까?
Sven

2
콘솔을 통해 로그온하고 원격으로 로그온하려고 할 때 /var/log/messages/car/log/secure로그를 확인하십시오 . ssh -vvv <servername>무엇이 잘못되었는지 알 수 있도록 로그온 하십시오. dmesg출력도 유용 할 수 있지만 관련 부품 만 다듬고 게시해야합니다. 로컬 콘솔 또는 루트 만있는 사용자 계정으로 로그온 할 수 있습니까? SSH 데몬이 실행 중 ps auxwww|grep ssh입니까 ( )?
Bram

답변:


24

쉘 경로에 대한 잘못된 설정으로 인해 쉘을 생성하는 데 문제가 될 수 있음을 제안하는 비슷한 게시물이 몇 개 있습니다. /etc/passwd

이를 확인하려면 사용자 쉘 경로가 존재하고 실행 가능한지 판별하십시오.

# cat /etc/passwd | grep tomh
tomh:x:1000:1000:Tom H:/home/tomh:/bin/bash <-- check this exists

쉘 점검 :

# file /bin/bash
/bin/bash: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped

또한 셸이 /sbin/nologin또는로 설정되어 있지 않은지 확인하십시오 /bin/false. 인증에 성공하더라도 로그인이 차단됩니다.

http://www.linuxforums.org/forum/ubuntu-linux/173779-solved-ssh-issue.html
http://www.unix.com/hp-ux/169496-solved-ssh-debug1-exit-status -254-problem.html
http://www.mail-archive.com/seawolf-list@redhat.com/msg04460.html


이것은 실제로 cygwin을 새로 설치했을 때의 문제였습니다. 설치로 만든 사용자는 / bin / false의 경로를 가져야했습니다. 이것을 / bin / bash로 변경하면 문제가 해결되었습니다. 감사!
Mitch Kent

1
내 경험상 사용자를 만들 때 쉘을 지정하는 것이 현명합니다. 기본 설정은 dist마다 다릅니다.
MetalGodwin

4

이러한 문제가 발생했을 때 여전히 / var / log / messages 연결을 공개했습니다.

pam_loginuid(sshd:session): Cannot open /proc/self/loginuid: Read-only file system

vi /etc/init.d/named를 편집하면 / proc가 마운트 된 방식을 변경할 수 있으므로 재부팅 후 오류가 발생하지 않았습니다.

기본적으로 라인

if [ ! -e "${CHROOT_PREFIX}/proc/meminfo" ]; then
mkdir -p “${CHROOT_PREFIX}/proc”
        mount -tproc -oro,nosuid,nodev,noexec proc ${CHROOT_PREFIX}/proc 2>/dev/null
fi;

로 변경되었습니다

if [ ! -e "${CHROOT_PREFIX}/proc/meminfo" ]; then
mkdir -p “${CHROOT_PREFIX}/proc”
        mount –bind -o ro /proc “${CHROOT_PREFIX}/proc” 2>/dev/null
fi;

내가 http://www.computersalat.de/linux/strato-vserver/ssh-login-problem-nach-neustart/#comment-905 에서 찾은 팁


SF에 오신 것을 환영합니다. 4 개의 공백으로 코드를 들여 쓰거나 그 주위에 백틱을 사용하여 답의 스타일을 향상시킬 수 있습니다.
ℝaphink

SysV가 아닌 systemd를 사용하는 CentOS 7과 동등한 것은 무엇입니까?
Steve Jorgensen

4

내 문제는 로그인 사용자 이름 디렉토리를 디렉토리에서 사용할 수 없다는 것 /home입니다. 따라서 'testuser'라는 사용자가있는 경우 /home/testuser디렉토리가 사용 가능한지 확인하십시오 . /var/log/messages파일 에서 배웠습니다 .


/var/log/messages/auth.log포인터를 확실히 확인하십시오 . 파일 문제도있었습니다
Nick

3
debug3: channel 0: close_fds r -1 w -1 e 6
Connection to xxx.x.xx.xx closed.
debug1: Transferred: stdin 0, stdout 0, stderr 35 bytes in 0.0 seconds
debug1: Bytes per second: stdin 0.0, stdout 0.0, stderr 3845.3
debug1: Exit status 254

SSH 서버 sshd_config파일에서 다음 행을 추가하십시오.

UsePAM no

아래는 sshd_configOS X에서 사용하는 것입니다. Debian이 아닌 Macports를 사용하여 OS X에서 동일한 문제가 발생했기 때문에 (데비안 머신이 아닌) 게시하고 있습니다.

AddressFamily any
ListenAddress 0.0.0.0
Port 1522

# The default requires explicit activation of protocol 1
Protocol 2

# HostKeys for protocol version 2
HostKey /opt/local/etc/ssh/ssh_host_ed25519_key
HostKey /opt/local/etc/ssh/ssh_host_ecdsa_key
HostKey /opt/local/etc/ssh/ssh_host_rsa_key
HostKey /opt/local/etc/ssh/ssh_host_dsa_key

# Ciphers and keying
#RekeyLimit default none

# Logging
# obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
#LogLevel INFO

# User Authentication

PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
UsePAM no

# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile  .ssh/authorized_keys

# Use sandbox on OS X
UsePrivilegeSeparation sandbox

# All user's environment
PermitUserEnvironment yes

# no default banner path
#Banner none

# override default of no subsystems
Subsystem   sftp    /opt/local/libexec/sftp-server

1
UsePAM = yes는 centos7 / i686 LXD 이미지의 문제입니다. 'no'로 설정하면 ssh 로그인이 다시 작동합니다. 그러나 sshd_config에 "주의 : Red Hat Enterprise Linux에서는 '경고 :'UsePAM no ''가 지원되지 않으며 몇 가지 문제가 발생할 수 있습니다." 이것이 정확히 무엇을 의미하는지 아는 사람이 있다면, 약간의 빛을 비추십시오.
ILIV

UsePAM = no로 변경하려고 할 때 RSA 키로 인증해야하더라도 암호를 입력하라는 요청을 받았습니다.
Steve Jorgensen

2

LDAP를 사용하는 경우 다음과 같은 경우를 모두 교체하십시오.

pam_unix_*.so

/etc/pam.d/의 모든 파일에서

pam_unix.so

이것은 libpam-ldap 패키지의 버그 (예 : pam.d 파일)입니다. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=612825

시스템이 올바르게 해결 될 수 있는지 확인하십시오.

/etc/secuiry/limits.conf를 확인하여 계정에 로그인 양에 대한 제한이 있는지 확인하고 다음과 같이 늘리십시오.

*       hard    maxlogins   0

Bram에서 언급 한 / var / log / messages 외에도 /var/log/auth.log를 확인하고 관련 출력을 붙여 넣으십시오. 너무 많은 정보가 너무 적은 것보다 낫습니다.


1

나는 @ tom-h가 제안한 방식으로 실제로 이러한 증상을 정확하게 경험했으며 해상도는 매우 간단했습니다.

vipwpasswd 파일 을 해결하고 간단하게 편집하려면 셸을 / bin / false에서 / bin / bash 또는 기본 설정 옵션으로 조정하십시오.

# cat /etc/passwd | grep adamjohn
adamjohn:x:1000:1000:Adam John:/home/adamjohn:/bin/false <-- check this exists
# vi /etc/passwd
adamjohn:x:1000:1000:Adam John:/home/adamjohn:/bin/bash <-- change this item

경우에 따라 민감한 계정을 보호하기 위해 수행 될 수도 있습니다. 다른 액세스 제한이있을 수 있습니다. 서버 보호의 중요성을 알고 이러한 유형의 서버 액세스를 허용하는 의미를 알고 있어야합니다.


1

LDAP와 Ubuntu 16.04와 비슷한 문제가있었습니다. "ssh -vv ..."는 암호 인증에 성공했지만 "원격 호스트에 의해 연결이 닫혔습니다."라는 메시지가 나타납니다.

"bind_policy"구성의 /etc/ldap.conf에서 수정되었습니다.

/var/log/auth.log는 다음을 보여줍니다.

sshd[19884]: Accepted password for xxxx from xx.xx.xx.xx port 48426 ssh2
sshd[19884]: pam_unix(sshd:session): session opened for user xxxx by (uid=0)
systemd-logind[577]: New session 22 of user xxxx.
systemd: pam_unix(systemd-user:session): session opened for user xxxx by (uid=0)
sshd[19884]: nss_ldap: could not search LDAP server - Server is unavailable
sshd[19884]: fatal: login_get_lastlog: Cannot find account for uid 1502 
sshd[19884]: pam_unix(sshd:session):   session closed for user xxxx

문제가 /etc/ldap.conf에 있음을 발견했습니다. bind_policy를 "soft"로 변경 했으므로 서버 장애시 nss_ldap이 즉시 반환됩니다. 기본값은 "hard_open"이며 LDAP 서버 연결에 실패하면 다시 연결됩니다. "bind_policy soft"행을 주석 처리하면 기본값으로 다시 변경되어 문제가 해결되었습니다. :-)



0

이것들은 모두 좋은 제안입니다. 제 경우에는 PuTTY 설정으로 인해 통증이 발생했습니다.

"SSH"구성에서 서버로 전송하기 위해 원격 명령을 넣었습니다. 99 %의 시간 동안 작동하지만 명령이 실패하면 세션이 닫힙니다.

명령 ??? 화면 -rd

실제로 다시 시작할 세션이있을 때 효과적입니다. 다시 시작한 후 끔찍하게 실패합니다.

해결책:

bashrc / bash_profile로 이동하십시오.


0

필자의 경우 SSH 서버에 쉘이없는 사용자원인 이었습니다 . 그것은 (쉬운 -N) SSH 클라이언트와 스위치를 사용하면 매우 쉬운 수정 이 있습니다.

로부터 man 페이지 :

-N 원격 명령을 실행하지 마십시오. 포트를 전달하는 데 유용합니다.

나는 여기에 몇 가지 대답에 동의 할 수 없습니다. 쉘이있는 사용자는 /bin/false, /bin/nologin그것은 일반적으로 로그인 할 수있는 가능성없이 목적으로 만 SSH 터널에 사용되는 사용자에 대해 사용하고 SSH 서버에 임의의 명령을 실행할 수있어, 적절한 구성입니다. 따라서 서버에서 "고정"하지 말고 -NSSH 클라이언트와 함께 스위치를 사용하십시오.


0

/etc/passwd사용자에게 맞는 쉘이 있는지 확인하십시오 .

예를 들어, ahmad쉘이 없어서 사용자 가 서버에 로그인 할 수 없습니다.

ahmad:x:10000:1003::/home/ahmad:/bin/false

쉘이 설정되어 /bin/false있으므로 사용자 ahmad에게 쉘이 없다는 것을 의미하므로 이를 수정 /bin/false하려면/bin/bash bash 또는 다른 쉘로 합니다.

Plesk와 같은 웹 호스팅 제어판을 사용하는 경우 사용자가 서버에 액세스 할 수 있는지 확인하십시오.


-1

LDAP 문제 일 수 있습니다. LDAP, Kerberos 및 SMB 설정을 구성하기위한 authconfig가

--enablemkhomedir


안녕하세요, 다른 질문에 답변 해보세요. OP는 프로덕션에 완전히 구식 인 debian 5에 대해 이야기합니다
bgtvfr
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.