Jawaban:
Ada beberapa hal yang bisa salah. Tambahkan -vvv
untuk membuat ssh mencetak jejak terperinci dari apa yang dilakukannya, dan melihat di mana ia berhenti.
Masalahnya bisa di klien atau di server.
Masalah umum pada server adalah jika Anda terhubung dari klien yang membalikkan waktu pencarian DNS terbalik. ("Reverse DNS lookup" berarti kembali dari alamat IP mesin klien ke nama host. Itu tidak benar-benar berguna untuk keamanan, hanya sedikit membantu untuk mendiagnosis upaya breakin dari entri log, tetapi konfigurasi default tetap melakukannya.) Untuk mematikan pencarian DNS terbalik, tambahkan UseDNS no
ke /etc/ssh/sshd_config
(Anda harus melakukan root pada server; ingatlah untuk memulai kembali layanan SSH sesudahnya).
Hal lain yang bisa salah adalah waktu otentikasi GSSAPI habis. Jika Anda tidak tahu apa itu, Anda mungkin tidak mengandalkannya; Anda dapat mematikannya dengan menambahkan baris GSSAPIAuthentication no
ke /etc/ssh/ssh_config
atau ~/.ssh/config
(yang ada di sisi klien).
UseDNS no
memperbaikinya seperti pesona. Saya berada di jaringan internal tanpa server DNS untuk menangani pencarian terbalik untuk IP internal.
GSSAPIAuthentication
? (Googling selama 15 menit tidak menjelaskan itu)
Biarkan waktu proses login dan lihat berapa lama:
[root@gislab00207 ~]# time ssh root@ISSLABNTL01
root@isslabntl01's password:
Last login: Fri Oct 4 07:55:03 2013 from 3.60.40.232
[root@ISSLABNTL01 ~]# exit
logout
Connection to ISSLABNTL01 closed.
real 0m45.192s
user 0m0.003s
sys 0m0.005s
You have new mail in /var/spool/mail/root
[root@gislab00207 ~]#
Lihat di atas butuh sekitar 45 detik untuk login -------- VERY SLOW
Setelah Anda login sebagai root edit file sshd_config dan ubah entri UseDNS seperti di bawah ini. Di sini saya menggunakan sed bukan mengedit file.
[root@ISSLABNTL01 ~]# grep -i dns /etc/ssh/sshd_config
#UseDNS yes
[root@ISSLABNTL01 ~]# sed -i 's/#UseDNS yes/UseDNS no/g' /etc/ssh/sshd_config
[root@ISSLABNTL01 ~]# grep -i dns /etc/ssh/sshd_config
UseDNS no
[root@ISSLABNTL01 ~]# service sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
[root@ISSLABNTL01 ~]# exit
Biarkan kami mengatur waktu proses login dan lihat sekarang berapa lama.
[root@gislab00207 ~]# time ssh root@ISSLABNTL01
root@isslabntl01's password:
Last login: Fri Oct 4 07:55:03 2013 from 3.60.40.232
[root@ISSLABNTL01 ~]# exit
logout
Connection to ISSLABNTL01 closed.
real 0m6.192s
user 0m0.003s
sys 0m0.005s
You have new mail in /var/spool/mail/root
[root@gislab00207 ~]#
Lihat sekarang 6 detik, saatnya bagi saya untuk mengetikkan kata sandi.
UseDNS no
Menyelesaikannya
Ini adalah sesuatu yang salah dari instalasi Ubuntu.
Untuk memperbaikinya Anda harus mengubah baris ini di /etc/nsswitch.conf :
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
Dan ubah untuk yang ini:
hosts: files dns
nsswitch.conf
seperti ini meminta masalah dan tidak memberikan solusi umum untuk memperlambat SSH.
Dalam kasus saya, masalah ini dapat diselesaikan dengan memulai kembali systemd-logind
:
systemctl restart systemd-logind
Ini disebutkan pada Serverfault .
Saya harus melakukan ini secara teratur, dan saya tidak tahu apa akar masalahnya.
Output debug untuk ssh dalam kasus saya baru berhenti selama 30 detik ketika sedang 'terhubung'. Solusinya ternyata terkait dengan pengaturan DNS pada sistem lokal saya. Konfigurasi jaringan sebelumnya telah meninggalkan server DNS palsu dalam /etc/resolv.conf
file. Menggantinya dengan server DNS saat ini memperbaiki masalah.
Bagi saya sedang mengubah sistem dns ke 127.0.0.1, sebelum ini adalah tuan rumah tidak ada.
nano /etc/resolv.conf
Dan tulis yang berikut ini
domain localdomain
search localdomain
(Removed this line) ===> nameserver 10.0.0.1
(Added this line) ===> nameserver 127.0.0.1
Saya tidak tahu sebanyak apa tentang lingkungan poster seperti yang saya inginkan, tetapi untuk orang lain dengan masalah yang sama, mungkin ada masalah dengan sssd
, yang kita gunakan untuk mengikat mojo ldap.
Ini terjadi pada saya:
$ time ssh server.example.com
real 2m0.018s
user 0m0.006s
sys 0m0.004s
Saya harus mendapatkan akses ke server (dalam kasus saya melalui konsol) kemudian lakukan:
service restart sssd
Setelah itu, semuanya berjalan baik. Saya belum punya waktu untuk men-debug penyebab root, tetapi bandaid ini bekerja untuk saya.
Saya dapat memecahkan prompt kata sandi yang lambat melalui ssh - issue dengan memeriksa Aktifkan DNS Relay di pengaturan DHCP pada router dlink saya. Setelah itu koneksi dengan SSH bekerja dalam satu detik.
Network Settings -> Router Settings -> Enable DNS Relay [x]
Konfigurasi default meneruskan setiap permintaan DNS ke penyedia. Itu lambat meskipun saya terhubung dengan ssh pi@10.0.0.103. Petunjuk untuk solusinya adalah entri di /etc/resolv.conf "search upc.at" yang disediakan melalui dhcp.
Status manual dlink:
When DNS Relay is enabled, DHCP clients of the router will be assigned
the router's LAN IP address as their DNS server. All DNS requests that
the router receives will be forwarded to your ISPs DNS servers.
When DNS relay is disabled, all DHCP clients of the router will
be assigned the ISP's DNS server.
Setelah rilis dhcp pada klien dan server, menghubungkan melalui SSH kembali dengan cepat. HTH.