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 error berikut:

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

  • Permission denied (publickey): Klien SSH gagal melakukan autentikasi.

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

  1. Menguji 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 tidak berhasil, masalahnya mungkin ada di 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 ini mencetak output debug yang menampilkan peristiwa utama 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. Sampai Anda dapat menggunakan 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 tersebut 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 akhir 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 ditetapkan dengan izin hanya baca (flag 400). Jika tidak, klien SSH tidak akan menerimanya.

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

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

  • Dalam beberapa kasus, masalah 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 mempertahankan 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