Cara Menghasilkan dan Mengelola Kunci SSH di Linux

Cara Menghasilkan dan Mengelola Kunci SSH di Linux

Protokol SSH (Secure Shell) menyediakan kemampuan untuk melakukan komunikasi terenkripsi melalui jaringan komputer. Operasi Khas yang Dapat Kami Lakukan Menggunakan Protokol Adalah Login Jarak Jauh dan Eksekusi Perintah Jarak Jauh. Saat kami login di komputer jarak jauh (dengan ssh utilitas, misalnya), kami diminta untuk memberikan kata sandi untuk akun yang kami gunakan untuk login. Untuk keamanan yang ditingkatkan, kami dapat memutuskan untuk menggunakan tombol SSH sebagai kredensial: Setelah server SSH dikonfigurasi dengan tepat, untuk dapat login kita harus mengetahui sesuatu (kata sandi) tetapi juga memiliki sesuatu (kunci). Dalam tutorial ini kita melihat cara menghasilkan, mengelola, dan menggunakan kunci ssh.

Dalam tutorial ini Anda akan belajar:

  • Apa itu keypair ssh
  • Apa perbedaan antara kunci ssh swasta dan publik dan apa peran mereka
  • Cara menghasilkan tombol ssh
  • Cara memodifikasi kata sandi kunci ssh pribadi
  • Cara mentransfer kunci publik ke server SSH
Cara Menghasilkan dan Mengelola Kunci SSH di Linux

Persyaratan dan konvensi perangkat lunak yang digunakan

Persyaratan Perangkat Lunak dan Konvensi Baris Perintah Linux
Kategori Persyaratan, konvensi atau versi perangkat lunak yang digunakan
Sistem Distribusi Independen
Perangkat lunak Utilitas OpenSsh
Lainnya Tidak ada persyaratan lain yang diperlukan
Konvensi # - mensyaratkan Linux -Commands untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo memerintah
$-mensyaratkan Linux-Commands untuk dieksekusi sebagai pengguna reguler yang tidak istimewa

Bagaimana cara kerja tombol SSH

Kunci SSH digunakan sebagai kredensial login, seringkali sebagai pengganti kata sandi teks sederhana yang jelas. Mereka bekerja berpasangan: kami selalu memiliki publik dan a pribadi kunci. Kunci pribadi harus tetap di komputer lokal yang bertindak sebagai klien: digunakan untuk dekripsi informasi dan tidak boleh dibagikan. Kunci publik, di sisi lain, digunakan untuk mengenkripsi data dan harus disalin di server jarak jauh (kontennya disalin dalam ~/.ssh/otorisasi_keys File di direktori $ home dari pengguna kami login sebagai di server - kita akan melihat bagaimana melakukan operasi seperti itu dalam perjalanan tutorial ini).

Kemampuan untuk menggunakan SSH-Keys sebagai kredensial login harus diizinkan sisi server oleh administrator sistem, dengan mengatur PubKeyAuthentication opsi untuk Ya dalam /etc/ssh/sshd.konfigurasi mengajukan. Kata sandi teks yang jelas dan kunci publik dapat diizinkan sebagai metode otentikasi secara bersamaan, atau, misalnya, orang dapat memutuskan untuk mengizinkan akses hanya melalui kunci publik.

Alat dan utilitas yang akan kami gunakan dalam tutorial ini diinstal secara default di semua distribusi Linux utama, sebagai bagian dari OpenSsh Software Suite.



Menghasilkan keypair SSH

Menghasilkan keypair ssh adalah operasi yang sangat sederhana: yang harus kita lakukan adalah menggunakan ssh-keygen kegunaan. Cara termudah untuk melakukan operasi adalah dengan memohon perintah tanpa argumen atau opsi:

$ ssh-keygen menghasilkan pasangan kunci RSA publik/pribadi. Masukkan file untuk menyimpan kunci (/home/egdoc/.SSH/ID_RSA): Masukkan sandi (kosong tanpa frasa sandi): Masukkan frasa sandi yang sama lagi: Identifikasi Anda telah disimpan di/home/egdoc/.SSH/ID_RSA Kunci publik Anda telah disimpan di/home/egdoc/.ssh/id_rsa.Pub sidik jari kunci adalah: SHA256: jrcj3a3eq4wo/lx4vaccpckyeayu0ai80emcda7m5dk egdoc@fingolfin gambar acak kunci adalah: + --- [RSA 3072] ---- + | =.+.Hai . | | * = o… | | E ... o + . | | . Hai+. Hai + .| | os. + o o.| | o + o.+ o | | . o o.ob.O… | | o o .B.B . | | +… Oo = . | +---- [SHA256]-----+ 

Mari kita analisis apa yang terjadi saat memohon perintah dengan cara ini. Hal pertama yang kami minta adalah di mana tombol yang dihasilkan harus disimpan: secara default kunci pribadi yang dihasilkan dipanggil id_rsa, dan nama publik diperoleh dengan menambahkan .pub ekstensi untuk itu. Keduanya, secara default, dibuat di dalam ~/.ssh direktori; Kami bebas, bagaimanapun, untuk memberikan nama dan lokasi alternatif.

Hal kedua yang kami minta, adalah menyediakan a frasa sandi: digunakan untuk mengamankan kunci pribadi. Kita bisa memasukkan frasa sandi atau hanya tekan enter dan membiarkan lapangan kosong. Dalam kasus pertama, kami akan diminta untuk memberikan kata sandi yang kami gunakan setiap kali kami mencoba menggunakan kunci. Jika kita membiarkan bidang kosong, sebagai gantinya, kita dapat mencapai login tanpa kata sandi di server: ini bisa mewakili risiko keamanan, karena semua orang dengan akses ke kunci dapat dengan mudah menyamar sebagai kita; Di sisi lain, pengaturan ini biasanya digunakan untuk melakukan operasi tanpa pengawasan melalui SSH, karena, misalnya cadangan yang dijadwalkan.

Setelah kami memberikan kata sandi, kunci dihasilkan dan sidik jari kunci Dan gambar randomArt ditampilkan di layar. Selesai! Pada titik ini kami memiliki keypair ssh kami di tempat.

Ubah jenis kunci dan ukuran bit

Secara default, ketika tidak ada opsi khusus yang diteruskan ke ssh-keygen perintah, an RSA pasangan kunci dihasilkan dengan ukuran 3072 bit. Untuk menggunakan jenis kunci alternatif, kita harus menggunakan -T opsi ssh-keygen dan memberikan jenis kunci yang ingin kami gunakan sebagai argumennya. Jenis kunci yang tersedia adalah:

  • DSA
  • ECDSA
  • ECDSA-SK
  • ED25519
  • ED25519-skk
  • RSA

Setiap jenis kunci memiliki default dalam hal ukuran bit. Kunci DSA, misalnya harus tepat 1024 bit, sedangkan untuk kunci ecdsa, seperti yang dinyatakan dalam manual:

-B Bendera menentukan panjang kunci dengan memilih dari salah satu ukuran kurva elips: 256, 384 atau 521 bit.

Jenis kunci lainnya seperti ECDSA-SK, ED25519 dan ED25519-SK memiliki panjang tetap yang tidak dapat diubah.

Jika memungkinkan, untuk mengubah ukuran bit yang harus digunakan untuk generasi kunci, kita dapat menggunakan -B opsi ssh-keygen utilitas, dan lulus jumlah ukuran bit sebagai argumennya. Katakanlah kami ingin menghasilkan kunci RSA 4096 bit (bukan default 3072); Kami akan menjalankan:

$ ssh -keygen -b 4096 


Tentukan jalur kunci secara tidak interaksi

Seperti yang kita lihat dalam contoh, ketika tidak ditentukan nama default yang digunakan untuk tombol yang dihasilkan akan id_rsa. Tentu saja kita dapat mengubahnya secara interaktif, bila diminta, tetapi bagaimana jika kita ingin memberikannya sebelumnya? Nah, dalam hal ini kita bisa memohon ssh-keygen bersama dengan -F opsi, dan berikan nama file untuk digunakan untuk kunci sebagai argumennya. Misalkan kita ingin kunci kita disimpan sebagai ~/.ssh/linuxconfig_rsa (pribadi) dan ~/.ssh/linuxconfig_rsa.pub (publik);
Kami akan menjalankan:

$ ssh -keygen -f ~/.ssh/linuxconfig_rsa 

Mengubah Kata Sandi Kunci Pribadi

Seperti yang sudah kita lihat, ketika kita membuat tombol ssh, kita memiliki kesempatan untuk melindungi kunci pribadi dengan kata sandi yang dapat kita berikan saat diminta. Bagaimana jika kita ingin memodifikasi kata sandi ini di masa mendatang? Bagaimana kita bisa mengubah kata sandi kunci pribadi?

Mudah! Yang harus kita lakukan adalah memohon ssh-keygen utilitas dengan -P pilihan. Ketika kami memohon perintah dengan opsi ini, pertama -tama kami akan diminta untuk menyediakan jalur kunci pribadi yang ingin kami ubah, maka kami akan diminta untuk memberikan frasa sandi lama yang digunakan untuk itu (jika ada), dan akhirnya kami akan melakukannya diminta untuk memasukkan frasa sandi baru dua kali:

$ ssh -keygen -p Masukkan file di mana kuncinya adalah (/home/egdoc/.SSH/ID_RSA): Masukkan frasa sandi lama: kunci memiliki komentar "Masukkan frasa sandi baru (kosong tanpa frasa sandi): Masukkan frasa sandi yang sama lagi: Identifikasi Anda telah disimpan dengan frasa sandi baru yang baru. 

Kunci default yang akan dipilih untuk perubahan kata sandi adalah ~/.ssh/id_rsa, seperti yang terjadi pada waktu penciptaan. Jika kami ingin menyediakan jalur kunci pribadi secara langsung dan tidak interaksi, kami dapat, sekali lagi, menggunakan -F opsi, dan lulus
Jalur kunci sebagai argumen, misalnya:

$ ssh -keygen -p -f ~/.ssh/id_rsa 


Memuat kunci publik di server

Untuk dapat menggunakan tombol SSH yang kami hasilkan sebagai metode otentikasi pada server jarak jauh, kami perlu mengunggah kunci publik kami di atasnya. Set alat openssh menyediakan utilitas yang dirancang khusus untuk melakukan tugas ini:
ssh-copy-id. Berikut adalah contoh penggunaannya. Untuk menyalin kunci SSH default id_rsa.pub Di server jarak jauh, kami akan menjalankan:

$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] 

Apa yang kami lakukan dalam contoh di atas cukup sederhana. Kami memohon ssh-copy-id utilitas dengan -Saya Opsi: Opsi ini mari kita tentukan kunci publik yang harus digunakan. Kami melewati kunci jalurnya sebagai argumen opsi ( .pub akhiran ditambahkan secara otomatis jika tidak ada). Argumen utama yang kami berikan adalah, sebagai gantinya, pengguna yang ingin kami login sebagai (opsional) bersama dengan alamat IP server.

Output dari perintah di atas akan menjadi sesuatu yang mirip dengan yang berikut:

/usr/bin/ssh-copy-id: info: sumber kunci yang akan diinstal: "/home/egdoc/.ssh/id_rsa.pub "/usr/bin/ssh-copy-id: Info: mencoba masuk dengan kunci baru, untuk menyaring apa saja yang sudah diinstal/usr/bin/ssh-copy-id: info: 1 tombol (s) tetap akan diinstal - jika Anda diminta sekarang untuk menginstal tombol baru [email protected] sandi 39: 

Untuk kunci yang akan diinstal di server SSH, kami harus terlebih dahulu memberikan kata sandi saat ini yang kami gunakan untuk login. Setelah kita melakukannya, jika semuanya berjalan seperti yang diharapkan, kita akan melihat tanggapan berikut:

Jumlah kunci yang ditambahkan: 1 Sekarang coba masuk ke mesin, dengan: "ssh '[email protected] '"dan periksa untuk memastikan bahwa hanya kunci yang Anda inginkan ditambahkan. 

Jika kami tidak yakin tentang tombol apa yang akan disalin di server jarak jauh, kami dapat meluncurkan ssh-copy-id dengan -N opsi untuk melakukan Dry-run: Kunci tidak akan diinstal di server; Sebaliknya yang akan disalin akan dilaporkan di layar.

Port default yang digunakan oleh server ssh adalah 22; Namun, terkadang administrator sistem dapat memutuskan untuk mengubahnya, hanya untuk menghindari serangan brute force yang paling umum. Dalam kasus seperti itu, empat koneksi SSH kami untuk bekerja, kami harus menggunakan -P (kependekan dari --pelabuhan) opsi saat memohon ssh-copy-id perintah dan lewati port yang harus digunakan untuk koneksi sebagai argumennya. Seandainya port yang digunakan adalah 15342, Misalnya, kami akan menjalankan:

ssh-copy-id -i ~/.ssh/id_rsa.pub -p 15342 [email protected] 

Kesimpulan

Dalam tutorial ini kami mempelajari dasar -dasar kunci SSH: kami melihat bahwa pasangan kunci juga disusun oleh kunci publik dan pribadi, untuk apa mereka digunakan, dan bagaimana mereka harus diperlakukan. Kami melihat cara menghasilkan tombol, apa saja jenis kunci yang dapat kami gunakan, dan bagaimana kami dapat menentukan ukurannya dalam bit pada saat penciptaan. Kami juga melihat bagaimana kunci pribadi SSH dapat dilindungi dengan kata sandi, dan bagaimana kami dapat mengubahnya. Akhirnya kami belajar bagaimana kami dapat menggunakan ssh-copy-id utilitas untuk menyalin kunci publik tertentu di server tujuan.

Tutorial Linux Terkait:

  • Pengantar Otomatisasi Linux, Alat dan Teknik
  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Cara Mengatur Server OpenVPN di Ubuntu 20.04
  • Menguasai loop skrip bash
  • Cara mengelola koneksi nirkabel menggunakan IWD di Linux
  • Mint 20: Lebih baik dari Ubuntu dan Microsoft Windows?
  • Can Linux mendapatkan virus? Menjelajahi kerentanan Linux…
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • Sistem Linux Hung? Cara melarikan diri ke baris perintah dan…
  • Daftar dan Instalasi Klien FTP di Ubuntu 22.04 Linux…