Linux成功login后closures连接

我正在使用Debian 5.2.2在服务器上工作。 几乎没有Linux的pipe理知识,我想我搞砸了。 我使用apt-get更新和apt-get升级来获取所有内容,然后下载并安装Apache,PHP和MySQL。 这些工具似乎工作正常,但现在我甚至不能通过本地控制台login到服务器。 如果我尝试通过GUIlogin,或者如果我尝试通过ssh,scp或其他任何方式进行远程login,我将在login成功后立即断开连接。 换句话说,它与初始连接没有问题,但是当我input正确的用户名和密码(对于root或任何用户)时,我断开连接。 使用GUI,屏幕会变黑一秒,然后让我回到login提示。 与SSH,我得到“连接到[服务器]closures”。 我试过WinSCP,并得到“连接意外closures,服务器发送命令退出状态254.”

任何帮助表示赞赏,如果有任何方法,我可以给更多的信息,请让我知道。 感谢您的时间。

编辑:

– 任何用户都可以在本地控制台上login

– 目前我没有本地访问机器,所以我现在可以做的是ssh。 input密码后,输出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 

有几个类似的post提示这可能是产生shell的问题,因为/etc/passwd的shellpath设置不正确

要检查这一点,请确定您的用户shellpath存在并且是可执行的;

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

检查shell是否存在:

 # 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 

另外,请检查shell是否设置为/sbin/nologin/bin/false ,这也会阻止login,即使身份validation成功。

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/[email protected]/msg04460.html

我的问题是login用户名目录不在/home目录中。 所以,如果你有一个名为“testuser”的用户,请确保/home/testuser目录可用。 从/var/log/messages文件中了解到。

当我遇到这样的问题时,我仍然有一个连接打开/ 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

如果您正在使用LDAP,请replace以下所有情况:

 pam_unix_*.so 

在/etc/pam.d/中的所有文件中:

 pam_unix.so 

这是libpam-ldap包(例如pam.d文件)中的错误,请参阅: http ://bugs.debian.org/cgi-bin/bugreport.cgi?bug= 612825

确保系统可以正确parsing,ssh有点特别。

检查/etc/secuiry/limits.conf来查看是否有任何帐户对login数量有严格的限制并增加这些限制,即:

 * hard maxlogins 0 

除了Bram提到的/ var / log / messages之外,还要检查/var/log/auth.log,并粘贴任何相关的输出。 太多的信息比太less。

我确实遇到了@ tom-h早些时候提出的这些症状……这个决议非常简单。

要解决,只需vipw和编辑密码文件,将shell从/ 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 

请理解,在某些情况下,这可能是为了保护敏感帐户。 可能还有其他访问限制。 您应该知道保护服务器的重要性,并了解允许此类访问的含义。

所有这些都是很好的build议。 在我的情况下,这是一个PuTTY设置,导致我的痛苦:

我已经把一个远程命令发送到“SSH”configuration下的服务器。 这在99%的时间内效果很好,但是,当命令失败时,它只会closures会话。

命令? 屏幕-rd

实际上有一个会议恢复时,工作很好。 重启后失败。

解决scheme:

移动到bashrc / bash_profile。

 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 

下面是我在OS X上使用的sshd_config 。我发布它(而不是在Debian机器上),因为我在使用Macports(而不是Debian)的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