Koneksi penutupan Linux setelah login berhasil

23

Saya bekerja pada server dengan Debian 5.2.2. Hampir tidak memiliki pengetahuan administrasi dengan Linux, saya pikir saya mengacaukan sesuatu. Saya menggunakan pembaruan apt-get dan upgrade apt-get untuk mendapatkan semuanya yang terbaru dan kemudian saya mengunduh dan menginstal Apache, PHP, dan MySQL. Alat-alat itu tampaknya berfungsi dengan baik, tetapi sekarang saya bahkan tidak bisa masuk ke server KECUALI melalui konsol lokal. Jika saya mencoba masuk melalui GUI atau jika saya mencoba masuk dari jarak jauh melalui ssh, scp, atau apa pun, saya akan segera terputus setelah berhasil masuk. Dengan kata lain, tidak ada masalah dengan koneksi awal, tetapi ketika saya memasukkan nama pengguna dan kata sandi yang benar (untuk root atau pengguna lain), saya terputus. Dengan GUI, layar menjadi gelap selama sedetik dan kemudian menempatkan saya kembali ke prompt login. Dengan ssh, saya mendapatkan "koneksi ke [server] ditutup."

Bantuan apa pun dihargai, dan jika ada cara saya dapat memberikan informasi lebih lanjut, beri tahu saya. Terima kasih atas waktu Anda.

Suntingan:

- Setiap pengguna dapat login di konsol lokal

- Saat ini saya tidak memiliki akses lokal ke mesin, jadi yang bisa saya lakukan sekarang adalah ssh. Ini adalah output dari ssh -vvv [server] setelah saya memasukkan kata sandi:

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
rymo
sumber
5
Linux adalah kernel, bukan sistem operasi. Tidak ada kernel versi 5.2.2, jadi distribusi apa yang Anda gunakan?
Sven
2
logon melalui konsol dan periksa /var/log/messagesdan /car/log/securelog ketika Anda mencoba logon dari jarak jauh. Cobalah masuk ssh -vvv <servername>sehingga Anda dapat melihat apa yang salah. dmesgoutput mungkin berguna juga tetapi Anda harus memotong dan memposting hanya bagian yang relevan. Bisakah Anda masuk dengan akun pengguna mana saja di konsol lokal atau hanya root? Apakah daemon SSH berjalan ( ps auxwww|grep ssh)?
Bram

Jawaban:

24

Ada beberapa posting serupa yang menyarankan bahwa ini bisa menjadi masalah dengan menelurkan shell karena pengaturan yang salah untuk path shell di /etc/passwd

Untuk memeriksa ini, tentukan bahwa jalur shell pengguna Anda ada dan dapat dieksekusi;

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

Cek shell ada:

# 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

juga, periksa apakah shell tidak disetel ke salah /sbin/nologinatau /bin/false, yang juga akan memblokir login, bahkan dengan otentikasi yang berhasil.

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

Tom H
sumber
Ini memang masalah saya, dengan instalasi cygwin baru, pengguna yang dibuat oleh instalasi memiliki pengguna akan path / bin / false. Mengubah ini ke / bin / bash memperbaiki masalah. Terima kasih!
Mitch Kent
1
Dalam pengalaman saya, bijaksana untuk menentukan shell saat membuat pengguna. Pengaturan standar bervariasi dari dist ke dist.
MetalGodwin
4

Ketika saya mengalami masalah seperti itu, saya masih memiliki satu koneksi terbuka / var / log / pesan terungkap:

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

Mengedit vi /etc/init.d/named diizinkan untuk mengubah cara / proc di-mount, sehingga kesalahan tidak terjadi setelah reboot.

Pada dasarnya garis

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;

Diubah menjadi

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

Kiat yang saya temukan di http://www.computersalat.de/linux/strato-vserver/ssh-login-problem-nach-neustart/#comment-905

Heinrich Krebs
sumber
Selamat datang di SF. Anda dapat meningkatkan gaya jawaban Anda dengan indentasi kode dengan 4 spasi (atau menggunakan backtick di sekitarnya).
ℝaphink
Apa yang setara pada CentOS 7 yang menggunakan systemd daripada SysV?
Steve Jorgensen
4

Masalah saya adalah direktori nama pengguna login tidak tersedia di /homedirektori. Jadi, jika Anda memiliki pengguna yang disebut 'testuser', pastikan /home/testuserdirektori tersebut tersedia. Belajar itu dari /var/log/messagesfile.

menggertakkan
sumber
Pasti memeriksa /var/log/messages/auth.logpointer. Juga memiliki masalah file
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

Di sshd_configfile server SSH Anda , tambahkan baris berikut:

UsePAM no

Di bawah ini adalah yang sshd_configsaya gunakan pada OS X. Saya mempostingnya (bukan satu pada mesin Debian) karena saya mengalami masalah yang sama pada OS X menggunakan Macports (dan bukan Debian).

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

sumber
1
UsePAM = ya adalah masalah pada gambar LXD centos7 / i686 saya. Setelah diatur ke 'tidak', login ssh berfungsi lagi. Namun, ada catatan di sshd_config: "PERINGATAN: 'UsePAM no' tidak didukung di Red Hat Enterprise Linux dan dapat menyebabkan beberapa masalah." Jika ada yang tahu apa artinya ini, tolong, beri penjelasan.
ILIV
Ketika saya mencoba mengubah ke UsePAM = tidak, saya diminta untuk memasukkan kata sandi, meskipun saya harus mengautentikasi dengan kunci RSA.
Steve Jorgensen
2

Jika Anda menggunakan LDAP ganti setiap kejadian:

pam_unix_*.so

di semua file di /etc/pam.d/ dengan:

pam_unix.so

Ini adalah bug dalam paket libpam-ldap (contoh file pam.d), lihat: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=612825

Pastikan sistem dapat menyelesaikan dengan benar, ssh agak khusus tentang itu.

Periksa /etc/secuiry/limits.conf untuk melihat apakah ada akun yang memiliki batasan keras pada jumlah login dan tingkatkan itu, yaitu:

*       hard    maxlogins   0

Selain / var / log / pesan seperti yang disebutkan oleh Bram, periksa juga / var / log / auth.log dan silakan tempel output yang relevan. Terlalu banyak informasi lebih baik daripada terlalu sedikit.

aseq
sumber
1

Saya memang menemukan persis gejala-gejala ini dalam mode yang disarankan oleh @ tom-h sebelumnya ... dan resolusinya sangat mudah.

Untuk menyelesaikan, cukup vipwdan edit file passwd, sesuaikan shell dari / bin / false ke / bin / bash atau opsi pilihan Anda.

# 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

Harap dipahami bahwa dalam beberapa kasus ini mungkin dilakukan untuk melindungi akun yang sensitif. Mungkin ada pembatasan akses lainnya. Anda harus mengetahui pentingnya melindungi server dan menyadari implikasi dari mengizinkan jenis akses ini.

Adam John
sumber
1

Saya memiliki masalah serupa dengan Ubuntu 16.04 dengan LDAP. "ssh -vv ..." menunjukkan otentikasi kata sandi berhasil, tetapi kemudian muncul pesan: "Koneksi ke ... ditutup oleh host jarak jauh."

Diperbaiki di /etc/ldap.conf dalam konfigurasi "bind_policy".

/var/log/auth.log menunjukkan:

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

Menemukan bahwa masalahnya ada di /etc/ldap.conf. Saya telah mengubah bind_policy menjadi "soft", jadi nss_ldap segera kembali pada kegagalan server. Standarnya adalah "hard_open", yang terhubung kembali jika membuka koneksi ke server LDAP gagal. Mengomentari baris "bind_policy soft" mengubahnya kembali ke default, dan memecahkan masalah. :-)

Namo Amituofo
sumber
0

Semua ini adalah saran bagus. Dalam kasus saya, itu adalah pengaturan Putty yang menyebabkan rasa sakit saya:

Saya telah meletakkan perintah jarak jauh untuk mengirim ke server di bawah konfigurasi "SSH". Yang bekerja sangat baik 99% dari waktu, namun, ketika perintah gagal, itu hanya menutup sesi.

Perintah??? layar -rd

Bekerja sangat baik ketika sebenarnya ada sesi untuk melanjutkan. Gagal mengerikan setelah restart.

Solusinya:

pindahkan itu ke bashrc / bash_profile.

Dave
sumber
0

Dalam kasus saya, itu disebabkan oleh pengguna tanpa shell di server SSH . Ini memiliki perbaikan yang sangat mudah, cukup gunakan -Nsaklar dengan klien SSH (Buka) Anda.

Dari halaman manual :

-N Jangan menjalankan perintah jarak jauh. Ini berguna untuk hanya meneruskan porta.

Saya hanya tidak setuju dengan beberapa jawaban di sini. Pengguna dengan shell /bin/false, /bin/nologinadalah konfigurasi yang tepat, biasanya digunakan untuk pengguna yang hanya digunakan untuk terowongan SSH, tanpa kemungkinan untuk masuk dan menjalankan perintah apa pun di server SSH. Jadi jangan mencoba untuk "memperbaikinya" di server, cukup gunakan -Nsaklar dengan klien SSH Anda.

Dawid Ferenczy Rogožan
sumber
0

Pastikan /etc/passwdmemiliki shell yang tepat untuk pengguna.

Misalnya, pengguna ahmadtidak dapat masuk ke server karena shell yang hilang:

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

Karena shell diatur ke /bin/falseitu berarti pengguna ahmadtidak memiliki shell, dan untuk memperbaikinya Anda harus mengubah /bin/falseke /bin/bashuntuk bash atau apa pun shell lainnya.

Jika Anda menggunakan panel kontrol hosting web misalnya Plesk, pastikan pengguna memiliki kemampuan untuk mengakses server.

Ahmad
sumber
-1

Mungkin masalah LDAP. Authconfig untuk mengonfigurasi pengaturan LDAP, Kerberos, dan SMB dijalankan tanpa,

--enablemkhomedir

tampico
sumber
Halo, coba jawab pertanyaan lain: Pembicaraan OP tentang debian 5, sepenuhnya ketinggalan jaman untuk produksi
bgtvfr