Saya melihat keterlambatan SSH Login. Secara khusus, ada 2 tempat di mana saya melihat rentang dari penundaan instan hingga multi-detik.
- Antara mengeluarkan perintah ssh dan mendapatkan prompt masuk dan
- antara memasukkan frasa sandi dan memiliki beban shell
Sekarang, secara khusus saya melihat rincian ssh hanya di sini. Jelas latensi jaringan, kecepatan perangkat keras dan OS yang terlibat, skrip login kompleks, dll dapat menyebabkan penundaan. Untuk konteks saya ssh ke banyak distribusi linux dan beberapa host Solaris menggunakan sebagian besar Ubuntu, CentOS, dan MacOS X sebagai sistem klien saya. Hampir sepanjang waktu, konfigurasi server ssh tidak berubah dari pengaturan default OS.
Konfigurasi server ssh apa yang harus saya minati? Apakah ada parameter OS / kernel yang dapat disetel? Trik masuk shell? Dll?
Jawaban:
Coba atur
UseDNS
keno
dalam/etc/sshd_config
atau/etc/ssh/sshd_config
.sumber
ssh -vvv
)./etc/ssh/sshd_config
! Saya menambahkan/etc/sshd_config
dan tidak melihat perbedaan sama sekali !!Ketika saya berlari
ssh -vvv
di server dengan kinerja lambat yang serupa, saya melihat hang di sini:Dengan mengedit
/etc/ssh/ssh_config
dan mengomentari metode autentikasi itu, kinerja login saya kembali normal. Inilah yang saya miliki di/etc/ssh/ssh_config
server saya:Anda dapat mengatur ini secara global di server, sehingga tidak menerima GSSAPI untuk mengautentikasi. Cukup tambahkan
GSSAPIAuthentication no
ke/etc/ssh/sshd_config
pada server dan restart layanan.sumber
GSSAPIAuthentication no
danUseDNS no
dalam/etc/ssh/sshd_config
file.Bagi saya, pelakunya adalah resolusi IPv6, waktunya habis. (Pengaturan DNS yang buruk di penyedia host saya, saya kira.) Saya menemukan ini dengan melakukan
ssh -v
, yang menunjukkan langkah mana yang menggantung.Solusinya adalah
ssh
dengan-4
opsi:ssh -4 [email protected]
sumber
debug2: resolving "thing.net.au" port 22
tanpa kesalahan, tetapi ini tidak terjadi dengan -4, menunjukkan ini masalah DNS IPv6.Dengan systemd, login mungkin tergantung pada komunikasi dbus dengan logind setelah beberapa upgrade, maka Anda perlu me-restart logind
Melihatnya di debian 8, arch linx, dan pada daftar suse
sumber
Anda selalu dapat memulai
ssh
dengan-v
opsi yang menampilkan apa yang sedang dilakukan saat ini.Dengan informasi yang Anda berikan, saya hanya dapat menyarankan beberapa konfigurasi sisi klien:
Karena Anda menulis bahwa Anda memasukkan kata sandi secara manual, saya sarankan Anda menggunakan otentikasi kunci publik jika memungkinkan. Ini menghilangkan Anda sebagai hambatan kecepatan.
Anda juga dapat menonaktifkan penerusan X
-x
dan penerusan otentikasi-a
(ini mungkin sudah dinonaktifkan secara default). Terutama menonaktifkan penerusan X dapat memberi Anda peningkatan kecepatan besar jika klien Anda perlu memulai X-server untukssh
perintah (misalnya di bawah OS X).Segala sesuatu yang lain benar-benar tergantung pada jenis penundaan yang Anda alami di mana dan kapan.
sumber
Mengenai poin 2., berikut adalah jawaban yang tidak perlu memodifikasi server atau memerlukan hak root / administratif.
Anda perlu mengedit file "user ssh_config" Anda yaitu:
(Catatan: Anda harus membuat direktori $ HOME / .ssh jika tidak ada)
Dan tambahkan:
Anda dapat melakukannya berdasarkan per host jika diperlukan :) contoh:
Pastikan alamat IP cocok dengan IP server Anda. Satu keuntungan keren adalah bahwa sekarang ssh akan menyediakan pelengkapan otomatis untuk server ini. Jadi, Anda dapat mengetik
ssh lin
+Tab
dan harus melengkapinya secara otomatisssh linux-srv
.sumber
Periksa
/etc/resolv.conf
pada server untuk memastikan bahwa server DNS, yang tercantum dalam file ini, berfungsi dengan baik, dan hapus semua DNS yang tidak berfungsi.Terkadang ini sangat membantu.
sumber
Selain masalah DNS yang telah disebutkan, jika Anda ssh'ing ke server dengan banyak NFS mounts, maka mungkin ada penundaan antara kata sandi dan prompt ketika
quota
perintah memeriksa penggunaan / kuota Anda pada semua sistem file yang tidak dipasang dengannoquota
. Pada sistem Solaris, Anda dapat melihat ini di default/etc/profile
dan melewatkannya dengan menjalankantouch $HOME/.hushlogin
.sumber
Bekerja dengan baik.
UseDNS no tidak bekerja dengan OpenIndiana !!!
Baca "man sshd_config" untuk semua opsi
"LookupClientHostnames no" jika server Anda tidak dapat menyelesaikan
sumber
Jika tidak ada jawaban di atas yang berfungsi dan Anda menghadapi masalah reverse lookup dns Anda juga dapat memeriksa apakah
nscd
(daemon cache layanan nama) diinstal dan berjalan.Jika ini masalahnya, itu karena Anda tidak memiliki cache dns, dan setiap kali Anda menanyakan nama host yang tidak ada di hostfile Anda, Anda mengirim pertanyaan ke server nama Anda alih-alih mencari di cache.
Saya mencoba semua opsi di atas dan satu-satunya perubahan yang berhasil adalah mulai
nscd
.Anda juga harus memverifikasi urutan untuk membuat resolusi kueri dns di
/etc/nsswitch.conf
untuk menggunakan file hosts terlebih dahulu.sumber
Ini mungkin hanya khusus untuk Debian / Ubuntu OpenSSH, yang mencakup pengguna-group-mode.patch yang ditulis oleh salah satu pengelola paket Debian. Patch ini memungkinkan file ~ / .ssh untuk memiliki set bit yang dapat ditulis grup (g + w) jika hanya ada satu pengguna dengan gid yang sama dengan file tersebut. Fungsi secure_permissions () patch melakukan pemeriksaan ini. Salah satu fase pemeriksaan adalah untuk pergi melalui setiap entri passwd menggunakan getpwent () dan membandingkan gid entri dengan gid file.
Pada sistem dengan banyak entri dan / atau otentikasi NIS / LDAP lambat, pemeriksaan ini akan lambat. nscd tidak melakukan cache getpwent () panggilan, sehingga setiap entri passwd akan dibaca melalui jaringan jika server tidak lokal. Pada sistem yang saya temukan ini, ia menambahkan sekitar 4 detik untuk setiap doa ssh atau masuk ke sistem.
Cara mengatasinya adalah dengan menghapus bit yang dapat ditulisi pada semua file di ~ / .ssh dengan melakukan
chmod g-w ~/.ssh/*
.sumber
Saya menemukan bahwa me-restart systemd-logind.service hanya menyembuhkan masalah selama beberapa jam. Mengubah UsePAM dari yes menjadi no di sshd_config telah menghasilkan login cepat, meskipun motd tidak lagi ditampilkan. Komentar tentang masalah keamanan?
sumber
Untuk menyelesaikan semua jawaban yang menunjukkan bahwa resolusi DNS dapat memperlambat login ssh Anda, terkadang aturan firewall tidak ada. Misalnya, jika Anda DROP semua INPUT paquets secara default
maka Anda harus menerima INPUT untuk port ssh dan permintaan DNS
sumber
ssh -vvv
koneksi berjalan dengan sangat baik sampai tergantung pada sistem yang mencoba untuk mendapatkan terminal selama setidaknya 20 detik:Setelah melakukan
systemctl restart systemd-logind
di server saya punya koneksi instan lagi!Ini ada di debian8 ! Jadi systemd adalah masalahnya di sini!
Catatan: Bastien Durel sudah memberikan jawaban untuk masalah ini, namun tidak memiliki informasi debug. Saya harap ini bermanfaat bagi seseorang.
sumber
session [default=1] pam_lastlog.so nowtmp showfailed
di/etc/pam.d/postlogin
. Rupanya memperbarui file lastlog sangat lambat pada OpenVZ VPS berbasis wadah saya.Saya baru-baru ini menemukan penyebab lain dari login ssh yang lambat.
Bahkan jika Anda sudah
UseDNS no
masuk/etc/sshd_config
, sshd masih dapat melakukan pencarian DNS terbalik jika/etc/hosts.deny
memiliki entri seperti:Itu mungkin terjadi jika Anda memiliki DenyHosts diinstal di sistem Anda.
Akan lebih bagus jika seseorang tahu bagaimana membuat DenyHosts menghindari memasukkan entri semacam ini
/etc/hosts.deny
.Berikut ini adalah tautan, ke FAQ DenyHosts , tentang cara menghapus entri dari
/etc/hosts.deny
- lihat Bagaimana cara menghapus alamat IP yang diblokir DenyHosts?sumber
Kami mungkin menemukan bahwa metode resolusi nama yang dipilih bukan file host dan kemudian DNS.
Sebagai contoh, ini akan menjadi konfigurasi yang biasa:
Pertama, file host tercapai (opsi: file) dan kemudian DNS (opsi: dns), namun kita dapat menemukan bahwa sistem resolusi nama lain telah ditambahkan yang tidak operasional dan menyebabkan kita lambat dalam mencoba melakukan resolusi terbalik.
Jika urutan resolusi nama tidak benar, Anda dapat mengubahnya di:
/etc/nsswitch.conf
Diambil dari: http://www.sysadmit.com/2017/07/linux-ssh-login-lento.html
sumber
Saya mencoba semua jawaban tetapi tidak ada yang berhasil. akhirnya saya menemukan masalah saya:
pertama saya jalankan
sudo tail -f /var/log/auth.log
sehingga saya bisa melihat log ssh kemudian di sesi lain berjalanssh 172.16.111.166
dan melihat menunggusetelah mencari saya menemukan baris ini di / etc / ssd / ssh_config
Saya berkomentar dan penundaan itu hilang
sumber
Catatan: Ini dimulai sebagai "Cara debug", tutorial, tetapi akhirnya menjadi solusi yang membantu saya di server Ubuntu 16.04 LTS.
TLDR : Jalankan
landscape-sysinfo
dan periksa apakah perintah itu membutuhkan waktu lama untuk selesai; itu adalah cetakan informasi sistem pada login SSH baru. Perhatikan bahwa perintah ini tidak tersedia di semua sistem,landscape-common
paket menginstalnya. ("Tapi tunggu, masih ada lagi ...")Mulai server ssh kedua pada port lain pada mesin yang memiliki masalah, lakukan dalam mode debug, yang tidak akan membuatnya bercabang dan akan mencetak pesan debug:
terhubung ke server itu dari komputer lain dalam mode verbose:
Klien saya menampilkan baris berikut tepat sebelum mulai tidur:
Googling yang tidak terlalu membantu, tetapi log server lebih baik:
Saya menyadari bahwa ketika saya mengubah
UsePAM yes
keUsePAM no
kemudian masalah ini diselesaikan.Tidak terkait dengan
UseDNS
atau pengaturan lainnya, hanyaUsePAM
memengaruhi masalah ini di sistem saya.Saya tidak tahu mengapa, dan aku juga tidak meninggalkan
UsePAM
dino
, karena saya tidak tahu mana efek samping, tapi ini membuat saya terus menyelidiki.Jadi tolong jangan menganggap ini sebagai jawaban, tetapi langkah pertama untuk mulai mencari tahu apa yang salah.
Jadi saya terus menyelidiki, dan berlari
sshd
denganstrace
(sudo strace /usr/sbin/sshd -ddd -p 44321
). Ini menghasilkan yang berikut:Garis itu
/etc/update-motd.d
membuatku curiga, ternyata prosesnya menunggu hasil dari barang-barang yang ada di dalamnya/etc/update-motd.d
Jadi saya
cd
masuk/etc/update-motd.d
dan menjalankansudo chmod -x *
perintah untuk menghambat PAM untuk menjalankan semua file yang menghasilkan dinamika iniMessage Of The Day
, yang mencakup beban sistem dan jika paket perlu ditingkatkan, dan ini menyelesaikan masalah.Ini adalah server berbasis pada CPU N3150 "hemat energi" yang memiliki banyak pekerjaan yang harus dilakukan 24/7, jadi saya pikir mengumpulkan semua data motd ini terlalu banyak untuk itu.
Saya mungkin mulai mengaktifkan skrip di folder itu secara selektif, untuk melihat mana yang kurang berbahaya, tetapi panggilan khusus
landscape-sysinfo
sangat lambat, dan50-landscape-sysinfo
memang memanggil perintah itu. Saya pikir itu yang menyebabkan keterlambatan terbesar.Setelah mengaktifkan kembali sebagian besar file saya sampai pada kesimpulan bahwa
50-landscape-sysinfo
dan99-esm
merupakan penyebab masalah saya.50-landscape-sysinfo
butuh sekitar 5 detik untuk dieksekusi dan99-esm
sekitar 3 detik. Semua file yang tersisa sekitar 2 detik sama sekali.Tidak penting
50-landscape-sysinfo
dan99-esm
sangat penting.50-landscape-sysinfo
mencetak statistik sistem yang menarik (dan juga jika Anda kekurangan ruang!), dan99-esm
mencetak pesan yang berkaitan denganUbuntu Extended Security Maintenance
Akhirnya, Anda dapat membuat skrip dengan
echo '/usr/bin/landscape-sysinfo' > info.sh && chmod +x info.sh
dan mendapatkan hasil cetak atas permintaan.sumber
Utas ini sudah menyediakan banyak solusi, tetapi utas saya tidak diberikan di sini =). Jadi begini. Masalah saya (butuh sekitar 1 menit untuk login ssh ke raspberry pi saya), disebabkan oleh file .bash_history rusak. Karena file dibaca saat masuk, ini menyebabkan keterlambatan masuk. Setelah saya menghapus file, waktu masuk kembali normal, seperti instan.
Semoga ini bisa membantu beberapa orang lain.
sumber
Bagi saya, saya membutuhkan GSSAPI, dan saya tidak ingin mematikan pencarian DNS terbalik. Itu sepertinya bukan ide yang bagus, jadi saya memeriksa halaman utama untuk resolv.conf. Ternyata firewall antara saya dan server yang saya tuju sedang mengganggu permintaan DNS, karena mereka tidak dalam bentuk yang diharapkan firewall. Pada akhirnya, semua yang perlu saya lakukan adalah menambahkan baris ini ke resolv.conf di server yang menjadi tujuan saya:
options single-request-reopen
sumber
Hebatnya, paket pembaruan bind pada CentOS 7 dinamai, sekarang menyatakan dalam log bahwa /etc/named.conf memiliki masalah izin. Itu telah bekerja dengan baik selama berbulan-bulan dengan 0640. Sekarang ia ingin 0644. Ini masuk akal karena daemon bernama milik pengguna 'bernama'.
Dengan menamai semuanya lambat, dari ssh login ke halaman melayani dari server web lokal, aplikasi LAMP lamban dll, kemungkinan besar karena setiap permintaan akan waktu pada server lokal yang mati sebelum mencari DNS eksternal, sekunder yang dikonfigurasi.
sumber
Bagi saya ada masalah di
/etc/hosts
file lokal saya . Begitussh
juga mencoba dua IP berbeda (satu salah) yang butuh selamanya untuk time-out.Menggunakan
ssh -v
melakukan trik di sini:sumber
/etc/hosts
server?