Rumah >tutorial komputer >pengetahuan komputer >Bagaimana untuk menyediakan pengesahan kunci SSH dalam sistem Linux

Bagaimana untuk menyediakan pengesahan kunci SSH dalam sistem Linux

王林
王林ke hadapan
2024-03-08 09:49:02655semak imbas

SSH (Secure Shell) ialah protokol rangkaian yang disulitkan yang digunakan secara meluas untuk menjalankan perkhidmatan rangkaian dengan selamat pada rangkaian yang tidak selamat.

SSH menyediakan kaedah komunikasi dan pengesahan yang disulitkan, yang akan menjadikan penghantaran data lebih selamat dan boleh dipercayai.

Pengesahan kunci SSH ialah kaedah pengesahan yang lebih selamat dan lebih disyorkan daripada pengesahan kata laluan tradisional. Dari segi keselamatan, pengesahan kunci SSH menyediakan tahap perlindungan yang lebih tinggi kerana ia berdasarkan mekanisme penyulitan kunci awam dan peribadi, dengan berkesan mengurangkan risiko peretasan kata laluan.

Pengesahan kata laluan tidak begitu selamat dalam banyak kes, kerana kata laluan boleh diteka, dipecahkan atau diancam oleh serangan lelaki di tengah semasa penghantaran. Ini menekankan kepentingan untuk menggunakan langkah keselamatan yang lebih canggih dan berbilang lapisan untuk memastikan identiti dan data pengguna dilindungi dengan lebih berkesan.

Pengesahan kunci adalah dengan menggunakan gabungan kunci awam dan peribadi, yang sangat meningkatkan keselamatan.

Kunci peribadi pengguna disimpan secara setempat, manakala kunci awam disimpan pada pelayan jauh. Susunan ini meningkatkan keselamatan kerana walaupun penyerang memintas kunci awam, adalah sukar untuk menyimpulkan kunci persendirian terbalik. Kaedah ini menyediakan kaedah pengesahan yang lebih dipercayai.

Bagaimana untuk menyediakan pengesahan kunci SSH dalam sistem Linux

Jana pasangan kunci SSH

Pertama, pastikan anda memasang alat OpenSSH pada sistem Linux anda.

Kebanyakan pengedaran Linux biasanya disertakan dengan alat ini yang telah diprapasang. Jika ia tidak dipasang pada sistem anda, ia boleh dipasang dengan mudah melalui pengurus pakej.

Pasang OpenSSH pada Debian/Ubuntu menggunakan apt:

sudo apt update
sudo apt install openssh-client openssh-server

Pasang OpenSSH menggunakan yum pada Red Hat/CentOS:

sudo yum install openssh-clients openssh-server

Jana pasangan kunci menggunakan ssh-keygen

Setelah OpenSSH dipasang, anda boleh menggunakan arahan ssh-keygen untuk menjana pasangan kunci SSH.

Penggunaan asas arahan

adalah seperti berikut:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  • -t rsaNyatakan jenis kunci sebagai RSA.
  • -b 4096Nyatakan panjang kunci kepada 4096 bit untuk meningkatkan keselamatan.
  • -C "your_email@example.com" Tambahkan ulasan, biasanya menggunakan alamat e-mel anda.

Selepas menjana pasangan kunci, anda boleh memilih untuk menyimpannya di lokasi lalai (di bawah direktori ~/.ssh/) atau memilih lokasi lain.

Pasangan kunci yang dijana termasuk dua fail: fail kunci peribadi (id_rsa)和公钥文件(id_rsa.pub). Fail kunci peribadi disimpan secara tempatan, manakala fail kunci awam perlu disalin ke pelayan jauh.

Kunci peribadi adalah maklumat sensitif dan mesti disimpan dengan betul. Kunci awam ialah maklumat awam yang digunakan untuk pengesahan.

Storan dan pengurusan kunci

Secara lalai, pasangan kunci SSH yang dijana akan disimpan dalam direktori ~/.ssh/ 目录下。这个目录包含了两个主要文件:id_rsa(私钥)和 id_rsa.pub pengguna. Direktori ini mengandungi dua fail utama: id_rsa (kunci peribadi) dan id_rsa.pub (kunci awam). Persediaan ini bertujuan untuk memudahkan pengguna mencari dan mengurus kunci apabila menggunakan SSH.

Walau bagaimanapun, kadangkala anda mungkin mahu menyimpan kunci anda di tempat lain atas sebab keselamatan atau organisasi. Ini boleh dicapai dengan menentukan laluan storan semasa menjana pasangan kunci.

Contohnya:

ssh-keygen -t rsa -b 4096 -f /path/to/your/keys/my_key -C "your_email@example.com"

Ini akan menyimpan kunci peribadi sebagai /path/to/your/keys/my_key,公钥存储为 /path/to/your/keys/my_key.pub.

SSH Key Agent ialah program yang boleh mengurus kunci persendirian SSH dan cache kata laluan yang dinyahsulit bagi kunci persendirian selepas log masuk supaya operasi SSH berikutnya tidak memerlukan memasukkan semula kata laluan.

1 Mulakan agen SSH:

eval "$(ssh-agent -s)"

2. Tambahkan kunci peribadi kepada ejen:

ssh-add ~/.ssh/id_rsa

Dengan cara ini, anda tidak perlu memasukkan kata laluan kunci peribadi setiap kali anda log masuk melalui SSH, yang meningkatkan kemudahan dan keselamatan penggunaan.

Dalam penggunaan sebenar, anda mungkin mempunyai berbilang pasangan kunci untuk pelayan atau tujuan yang berbeza.

Untuk mengurus pasangan kunci ini dengan lebih baik, anda boleh menggunakan fail konfigurasi SSH atau alias untuk fail utama.

Konfigurasikan pelayan SSH

Log masuk ke pelayan sasaran

Sebelum anda boleh log masuk ke pelayan sasaran menggunakan pengesahan kunci SSH, pastikan perkhidmatan SSH didayakan pada pelayan sasaran. Dalam kebanyakan sistem Linux, perkhidmatan SSH dimulakan secara lalai.

ssh username@your_server_ip

Pastikan untuk menggantikan username 为你的用户名,your_server_ip dengan alamat IP pelayan sasaran anda. Ini akan cuba log masuk menggunakan pengesahan kata laluan lalai.

Pasang kunci awam secara manual

Memasang kunci awam secara manual ialah kaedah asas yang melibatkan penambahan kandungan kunci awam anda pada fail ~/.ssh/authorized_keys pada pelayan sasaran.

1 Salin kandungan kunci awam tempatan ke papan keratan:

cat ~/.ssh/id_rsa.pub

2 Pada pelayan sasaran, gunakan penyunting teks untuk membuka fail ~/.ssh/authorized_keys:

nano ~/.ssh/authorized_keys

3、将剪贴板上的公钥内容粘贴到文件末尾,并保存文件。

4、回到本地机器,尝试使用密钥身份验证登录:

ssh username@your_server_ip

通过ssh-copy-id简化公钥部署

ssh-copy-id 命令可以简化将本地公钥复制到远程服务器的过程。

这个命令会自动处理将公钥添加到目标服务器的 ~/.ssh/authorized_keys 文件中。

ssh-copy-id username@your_server_ip

确保替换 username 为你的用户名,your_server_ip 为目标服务器的 IP 地址。这个命令将提示你输入用户密码,然后将本地公钥复制到目标服务器上。

通过这两种方法,你可以在目标服务器上配置 SSH 密钥身份验证,提高登录的安全性和便利性。

SSH 配置文件详解

~/.ssh/config 文件的作用和结构

~/.ssh/config 文件是一个用于配置 SSH 客户端行为的配置文件。

它允许你为不同的主机设置自定义的配置选项,从而简化 SSH 连接的管理。

创建 ~/.ssh/config 文件:

touch ~/.ssh/config

编辑 ~/.ssh/config 文件:

nano ~/.ssh/config

使用别名、端口号等配置项简化SSH连接

配置文件中可以包含多个主机条目,每个条目定义了连接到远程主机的配置选项。

以下是一个简单的例子:

Host example
HostName your_server_ip
User username
Port 2222
IdentityFile ~/.ssh/id_rsa
  • Host:设置别名,用于代替实际的主机名。
  • HostName:远程主机的 IP 地址或域名。
  • User:连接时使用的用户名。
  • Port:SSH 连接的端口号。
  • IdentityFile:指定用于身份验证的私钥文件路径。

实际场景中的示例配置文件

以下是一个更为复杂的 ~/.ssh/config 文件,涵盖了多个主机和配置选项:

Host work
HostName work.example.com
User alice
Port 22
IdentityFile ~/.ssh/work_key

Host personal
HostName personal.example.org
User bob
Port 2222
IdentityFile ~/.ssh/personal_key

Host github
HostName github.com
User git
IdentityFile ~/.ssh/github_key

这样,你只需要使用别名就能够轻松连接到相应的主机,而不必记住每个主机的详细信息。

限制和加固SSH访问

禁用密码身份验证

禁用密码身份验证是提高 SSH 安全性的重要步骤之一。

这样,用户只能通过密钥身份验证进行访问,而不再依赖弱密码。

sshd_config中禁用密码身份验证:

1、打开 sshd_config 文件:

sudo nano /etc/ssh/sshd_config

2、找到并修改以下行:

PasswordAuthentication no

3、保存文件并重新启动 SSH 服务:

sudo service ssh restart

使用sshd_config文件设置访问限制

sshd_config 文件包含了用于配置 SSH 服务器的各种选项。

通过适当配置,你可以限制用户访问、定义允许登录的用户、设置登录时的认证方式等。

一些常用的 sshd_config 选项:
  • AllowUsers:指定允许登录的用户列表。
  • DenyUsers:指定禁止登录的用户列表。
  • AllowGroups:指定允许登录的用户组列表。
  • DenyGroups:指定禁止登录的用户组列表。
  • PermitRootLogin:禁用或限制 root 用户的远程登录。
示例:
AllowUsers alice bob
DenyUsers mallory
AllowGroups sshusers
DenyGroups badusers
PermitRootLogin no

Atas ialah kandungan terperinci Bagaimana untuk menyediakan pengesahan kunci SSH dalam sistem Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:mryunwei.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam