Memecahkan masalah akses

Halaman ini memberikan tips pemecahan masalah untuk masalah akses Solusi Bare Metal.

Periksa apakah pertanyaan atau masalah Anda telah ditangani di halaman Masalah umum dan batasan.

Klien SSH tidak dapat terhubung

Jika klien SSH gagal terhubung ke server, Anda mungkin melihat salah satu dari error berikut:

  • connection timeout atau connection refused: Klien SSH tidak dapat terhubung.

  • Permission denied (publickey): Klien SSH gagal mengautentikasi.

Untuk mendiagnosis koneksi SSH yang gagal, ikuti langkah-langkah berikut:

  1. Uji konektivitas.

    Pastikan host dapat dijangkau dan port SSH (22) terbuka menggunakan perintah ping, traceroute, dan nc.

    ping SERVER_NAME
    
    traceroute SERVER_NAME
    
    echo "" | nc SERVER_NAME 22
    

    Jika cara ini tidak berhasil, mungkin masalahnya ada pada lapisan jaringan, bukan pada SSH.

  2. Periksa output debug sisi klien.

    1. Aktifkan panjang protokol SSH.

      ssh -v SERVER_NAME -i ~/.ssh/id_ecdsa
      

      Perintah tersebut mencetak output debug yang menunjukkan peristiwa utama dari protokol SSH sisi klien.

      Contoh output berikut menunjukkan bahwa klien mengirim kuncinya, tetapi server menolaknya. Server meminta autentikasi untuk melanjutkan dengan kunci publik lain, tetapi klien tidak memiliki kunci tambahan untuk ditawarkan.

      .. .. ..
      debug1: Server host key: ecdsa-sha2-nistp256 SHA256:V9cRYdqcAJv+RPfN+oofNTVdUxs6VlocP4uMWOxeGKI
      debug1: Host 'bms-server' is known and matches the ECDSA host key.
      debug1: Found key in /root/.ssh/known_hosts:1
      debug1: rekey after 134217728 blocks
      debug1: SSH2_MSG_NEWKEYS sent
      debug1: expecting SSH2_MSG_NEWKEYS
      debug1: SSH2_MSG_NEWKEYS received
      debug1: rekey after 134217728 blocks
      debug1: SSH2_MSG_EXT_INFO received
      debug1: kex_input_ext_info: server-sig-algs=
      debug1: SSH2_MSG_SERVICE_ACCEPT received
      debug1: Authentications that can continue: publickey
      debug1: Next authentication method: publickey
      debug1: Offering ECDSA public key: /root/.ssh/id_ecdsa
      debug1: Authentications that can continue: publickey
      debug1: No more authentication methods to try.
      Permission denied (publickey).
      
    2. Jika output panjang SSH tidak menunjukkan dengan jelas penyebab pesan error, jalankan perintah strace:

      strace ssh SERVER_NAME -i ~/.ssh/id_ecdsa > strace-ssh.txt 2>&1
      
    3. Periksa output strace untuk menemukan error yang terkait dengan masalah inti.

      Dalam beberapa kasus, output debug sisi klien tidak cukup untuk mengidentifikasi masalah. Anda mungkin juga perlu menjalankan pelacakan sisi server untuk menemukan error. Hingga Anda tidak dapat menerapkan SSH ke server, gunakan konsol serial interaktif untuk melakukan langkah berikutnya.

  3. Periksa output debug sisi server.

    1. Temukan setelan SSH saat ini.

      grep -v "^#" /etc/ssh/sshd_config | grep -v "^$"
      
    2. Untuk mendapatkan informasi mendetail tentang SSH, tetapkan parameter berikut dalam file /etc/ssh/sshd_config untuk mendapatkan informasi mendetail.

      SyslogFacility AUTH
      LogLevel DEBUG
      
    3. Untuk menerapkan perubahan, mulai ulang layanan.

      service sshd restart
      
    4. Di sisi klien, jalankan perintah ssh dan ekstrak pesan sshd dari log:

      grep sshd /var/log/messages
      

      Atau, Anda dapat mengekspor semua pesan yang relevan untuk jangka waktu tertentu menggunakan perintah berikut:

      journalctl -u sshd -S "START_TIME" -U "END_TIME" --utc
      

      Ganti kode berikut:

      • START_TIME: Waktu mulai jangka waktu dalam format yyyy-mm-dd hh:mm:ss.
      • END_TIME: Waktu berakhir jangka waktu dalam format yyyy-mm-dd hh:mm:ss.

      Contoh:

      journalctl -u sshd -S "2023-04-25 18:38:00" -U "2023-04-25 18:40:00" --utc
      

Untuk memperbaiki masalah ini, pertimbangkan langkah-langkah berikut:

  • Verifikasi apakah file kunci klien disetel dengan izin hanya baca (tandai 400). Jika tidak, klien SSH tidak akan menerimanya.

    Untuk menetapkan tanda hanya baca untuk kunci pribadi yang digunakan, jalankan perintah berikut:

    chmod 400 ~/.ssh/id_ed25519
    
  • Di sisi server, periksa apakah kunci publik klien telah ditentukan dalam file konfigurasi lokal (~/.ssh/authorized_keys) milik pengguna yang sesuai.

  • Dalam beberapa kasus, masalahnya mungkin terkait dengan versi protokol SSH atau algoritma SSH. Output debug sisi server dan sisi klien mungkin menunjukkan masalah tersebut. Biasanya, halaman man untuk ssh dan sshd_config memberikan detail untuk mengelola konfigurasi yang diperlukan. Misalnya, untuk menemukan algoritma pertukaran kunci atau cipher yang didukung, gunakan perintah berikut:

    # Find key exchange algorithms
    ssh -Q kex
    # Find the symmetric encryption ciphers
    ssh -Q cipher