构建密钥对验证的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-id
或scp
命令。
操作步骤:
使用
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多平台发布
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。