构建密钥对验证的SSH体系

1. 在客户端中创建密钥对

在客户端机器上创建密钥对,用于后续的SSH验证。可以使用ssh-keygen命令,支持的加密算法有RSA和DSA。

操作步骤

  • 打开终端,输入以下命令以生成RSA密钥对:

    ssh-keygen -t rsa
  • 根据提示设置密钥短语并确认存储位置,默认存储位置为/home/username/.ssh/id_rsa(私钥)和/home/username/.ssh/id_rsa.pub(公钥)。

示例
假设客户端用户为alice,使用CentOS操作系统:

[alice@localhost ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/alice/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/alice/.ssh/id_rsa.
Your public key has been saved in /home/alice/.ssh/id_rsa.pub.

2. 将公钥文件上传至服务器

将生成的公钥文件上传到目标服务器的目标用户的公钥数据库中,可以使用ssh-copy-idscp命令。

操作步骤

  • 使用ssh-copy-id命令将公钥上传:

    ssh-copy-id -i ~/.ssh/id_rsa.pub user@host
  • 或者使用scp命令上传公钥文件,然后手动添加到目标用户的authorized_keys文件中:

    scp ~/.ssh/id_rsa.pub user@host:/tmp
    ssh user@host 'cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys'

示例
假设服务器用户为bob,服务器IP地址为192.168.1.100

[alice@localhost ~]$ scp ~/.ssh/id_rsa.pub bob@192.168.1.100:/tmp
bob@192.168.1.100's password:
id_rsa.pub                                     100%  412     0.4KB/s   00:00
[bob@server ~]$ cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys

3. 在服务器中导入公钥文本

将公钥文本添加至目标用户的公钥库。默认公钥库位置为~/.ssh/authorized_keys

操作步骤

  • 使用cat命令将公钥文件内容追加到authorized_keys文件中:

    cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
  • 确认公钥已正确添加:

    tail -1 ~/.ssh/authorized_keys

示例
假设目标用户为bob,在服务器上执行以下命令:

[root@localhost ~]# su - bob
[bob@localhost ~]$ cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
[bob@localhost ~]$ tail -1 ~/.ssh/authorized_keys
ssh-rsa AAAAB3Nza... alice@localhost.localdomain

4. 客户端使用密钥对验证登陆

客户端使用生成的私钥对登陆服务器,以验证密钥对的正确性。

操作步骤

  • 使用ssh命令进行登陆,指定目标用户和服务器IP地址:

    ssh user@serverIP
  • 输入生成密钥对时设置的密钥短语,成功登陆后不需要再次输入服务器用户密码。

示例
假设客户端用户alice尝试登陆服务器用户bob,服务器IP地址为192.168.1.100

[alice@localhost ~]$ ssh bob@192.168.1.100
Enter passphrase for key '/home/alice/.ssh/id_rsa':
Last login: Mon Jul  6 12:34:56 2024 from 192.168.1.50
[bob@localhost ~]$

本文由mdnice多平台发布


逼格高的汤圆
10 声望2 粉丝