GNU/Linux >> Belajar Linux >  >> Cent OS

Koneksi menggunakan SSH ke Host Tidak di DNS/host Berhenti Beberapa Saat Saat Inisiasi Koneksi

ssh, scp atau sftp ke node yang tidak muncul di DNS atau file /etc/hosts lambat untuk membuat koneksi awal. Setelah koneksi dibuat, kecepatannya seperti yang diharapkan. Ada dua kasus yang perlu dipertimbangkan, lihat di bawah. Perhatikan bahwa di sebagian besar lingkungan, masalah ini tidak akan terjadi karena IP akan berada di /etc/hosts atau DNS.

Waktu yang dihabiskan saat menyelesaikan alamat IP dari nama host target/sumber atau menemukan nama host untuk alamat IP target/sumber dan/atau melakukan otentikasi berdasarkan data yang sama. Ada dua gejala verbose yang berbeda saat kita menggunakan -vvv dengan ssh merupakan dua kasus yang berbeda.

Kasus 1

# ssh -vvv 10.10.10.205
... ...
debug1: Next authentication method: gssapi-with-mic
debug3: Trying to reverse map address 10.10.10.205.
debug1: Unspecified GSS failure. Minor code may provide more information
No credentials cache found

Dalam sistem CentOS/RHEL, daemon SSH dikonfigurasi untuk menggunakan Antarmuka Program Aplikasi Layanan Keamanan Umum (GSSAPI) otentikasi secara default. GSSAPI secara default melakukan pencarian (melalui DNS atau cara lain berdasarkan /etc/resolv.conf) untuk IP yang diminta. Perhatikan bahwa pencarian terjadi bahkan jika Anda menggunakan alamat IP. Itu diperlukan untuk autentikasi yang aman/dapat diandalkan.

Jika Anda memeriksa halaman manual konfigurasi SSH:

# man ssh_config
...
GSSAPIAuthentication
     Specifies whether user authentication based on GSSAPI is allowed. The default is no
...

Jika IP / host tidak muncul di /etc/hosts atau di basis data DNS, kueri pencarian habis waktu, saat mencoba ulang, akhirnya menyerah dan terus membuka koneksi. Waktu yang dihabiskan selama pencarian (50 detik atau lebih), hingga prompt kata sandi ditampilkan. Stall ini hanya terjadi pada host yang ada di LAN lokal dan bukan di file DNS atau /etc/hosts. Perhatikan metode autentikasinya adalah GSSAPI.

Kasus 2

# ssh -vvv 10.10.10.12
. . . 
debug1: Offering public key: /root/.ssh/id_dsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
--stalls for 8 seconds--

Di sini, host jarak jauh mencoba melakukan pencarian DNS pada IP node klien. Ini mungkin instalasi mesin fisik atau virtual baru yang tidak diperbarui di /etc/hosts atau DNS dan karenanya terhenti hingga waktu permintaan DNS habis. Sekali lagi, pencarian DNS / host selesai (berdasarkan /etc/resolv.conf pada klien / server).

Solusinya

Solusi yang didukung dan tepat untuk masalah ini adalah agar pencarian nama host/IP berhasil. Untuk melakukannya, Anda dapat:

  • Periksa konfigurasi Anda di /etc/resolv.conf untuk resolusi nama dan konfigurasi server DNS.
  • Jika tidak ditentukan, tentukan host / IP yang baru diperkenalkan untuk dimasukkan dalam server DNS
  • Jika bermasalah atau tidak layak untuk melakukan definisi DNS (kemungkinan besar penugasan bersifat sementara – yaitu sistem pengujian, mesin virtual sementara, dll.) pastikan bahwa nama host / pasangan alamat IP disertakan dalam sumber dan target lingkungan /etc/hosts file (ini jauh lebih praktis)

Solusi

Tanpa DNS / host yang tepat (atau konfigurasi /etc/resolv.conf dalam hal ini), koneksi SSH awalnya akan lambat. Begitulah yang diharapkan di OEL. Atau, situasi menunggu dapat diatasi dengan beberapa perubahan konfigurasi.

Untuk Kasus 1 Otentikasi GSSAPIA bisa saja dinonaktifkan. Meskipun hal itu mungkin, hal ini sangat tidak disarankan karena penggunaan GSSAPI adalah salah satu fitur keamanan mendasar yang disediakan oleh SSH. SSH tidak hanya memungkinkan konten komunikasi menjadi aman tetapi juga dapat memastikan bahwa target tersebut adalah yang dituju. Itu karena GSSAPIAuthentication diatur ke ya di OEL (walaupun halaman manual mengatakan "Tidak" secara default - tetapi ini adalah default dari paket ssh inti - bukan distribusi spesifik). Namun, dimungkinkan untuk menonaktifkannya, jika Anda benar-benar yakin bahwa Anda berada di jaringan tertutup dan sadar bahwa Anda tahu apa yang Anda lakukan:

Penyiapan sementara – hanya untuk melihat apakah itu berfungsi pada baris perintah:

# ssh -o "GSSAPIAuthentication no" 10.10.10.205

Prompt kata sandi akan muncul secara instan jika Kasus 1, adalah kasus Anda. Untuk menyiapkan ini secara permanen (meskipun ada rekomendasi lain), Anda dapat mengubah GSSAPIAuthentication menjadi no dengan salah satu cara berikut di klien:

1. Tambahkan baris di bawah ini ke file konfigurasi ssh direktori home pengguna (~/.ssh/config ):

GSSAPIAuthentication no

2. Tambahkan ke file konfigurasi sistem SSH di klien. yaitu – /etc/ssh/ssh_config dan di sisi server. Edit sisi server (yaitu sistem yang Anda sambungkan, dalam hal ini adalah 10.10.10.205) file konfigurasi – /etc/ssh/sshd_config dan mulai ulang sshd:

# service sshd restart

ini dapat dilakukan ketika sudah ada koneksi SSH.

Untuk Kasus 2, jika Anda entah bagaimana tidak dapat/tidak ingin mengubah konfigurasi DNS atau file /etc/hosts (meskipun ada rekomendasi sebaliknya), Anda dapat mengatasi situasi tersebut dengan menonaktifkan pencarian DNS yang dilakukan untuk protokol SSH. Anda dapat melakukannya dengan menyetel

UseDNS no

di file konfigurasi SSH server – /etc/ssh/sshd_config

dan restart sshd di server

# service sshd restart

ini dapat dilakukan saat koneksi aktif.


Cent OS
  1. Melayani beberapa domain dengan menggunakan virtual host

  2. SSH tanpa kata sandi tidak berfungsi untuk pengguna lokal di server LDAP – CentOS/RHEL 7

  3. Konfigurasi dnsmasq untuk menggunakan Server DNS yang berbeda untuk beberapa Domain (CentOS/RHEL)

  1. Cara Menghubungkan Host Jarak Jauh Menggunakan Perintah ssh

  2. alias nama konfigurasi ssh tidak berfungsi untuk scp

  3. Bagaimana saya bisa menghindari verifikasi host SSH untuk host yang dikenal?

  1. SSH ke host jarak jauh melalui proxy atau bastion dengan ProxyJump

  2. SSH:terhubung ke port host localhost 22:Koneksi ditolak

  3. ssh_exchange_identification:Koneksi ditutup oleh host jarak jauh (tidak menggunakan hosts.deny)