当前位置:首页 > 行业动态 > 正文

如何创建SSH密钥对?

创建SSH密钥对的步骤如下:,,1. 打开终端。,2. 输入命令 ssh-keygen -t rsa。,3. 按提示操作,完成生成。

创建SSH密钥对是确保远程服务器和客户端之间安全通信的重要步骤,以下是详细的教程,包括在Linux和Windows系统上生成SSH密钥对的步骤:

如何创建SSH密钥对?  第1张

Linux系统上创建SSH密钥对

1. 打开终端

在本地机器上打开终端应用程序。

2. 生成SSH密钥对

使用以下命令生成SSH密钥对:

ssh-keygen -t rsa -b 4096

这将生成一个4096位的RSA密钥对,您可以选择其他密钥类型和位数,但RSA是最常用的。

3. 提供密钥保存位置和密码(可选)

系统会提示您提供密钥保存位置和可选的密码,按回车键接受默认值或输入自定义路径和密码。

示例如下:

Enter file in which to save the key (/home/username/.ssh/id_rsa): [Press Enter]
Enter passphrase (empty for no passphrase): [Type a passphrase]
Enter same passphrase again: [Type passphrase again]

4. 生成密钥对

系统会生成公钥(id_rsa.pub)和私钥(id_rsa)文件,并显示密钥指纹等相关信息。

5. 将公钥添加到远程服务器

在本地生成SSH密钥对后,接下来需要将公钥添加到远程SSH服务器,以便进行身份验证。

复制公钥内容:

cat ~/.ssh/id_rsa.pub

终端会显示公钥内容,复制该内容,或者使用其他编辑器打开公钥文件并复制其内容。

登录远程服务器:

ssh username@remote_server

将username替换为您在远程服务器上的用户名,remote_server替换为远程服务器的IP地址或域名。

创建.ssh目录(如果不存在):

mkdir -p ~/.ssh

编辑authorized_keys文件:

nano ~/.ssh/authorized_keys

如果文件已存在,请将光标移到文件的末尾,如果文件不存在,则创建一个新文件并打开编辑器。

将公钥粘贴到authorized_keys文件中,确保将整个公钥粘贴为一行,并保存文件。

设置文件权限:

chmod 600 ~/.ssh/authorized_keys

退出远程服务器:

exit

Windows系统上创建SSH密钥对

1. 下载PuTTYgen工具

PuTTYgen是一个开源实用程序,允许您为最流行的Windows SSH客户端PuTTY生成SSH密钥,如果您没有安装PuTTYgen,请转到PuTTY下载页面并下载PuTTY安装包,安装很简单,双击安装包并按照说明操作。

2. 启动PuTTYgen工具

启动PuTTYgen工具,双击其.exe文件或转到Windows开始菜单→ PuTTY → PuTTYgen。

3. 创建SSH密钥

保留默认RSA,对于大多数人来说,Number of bits in a generated key 2048就足够了,或者,您可以将其更改为4096,单击Generate按钮开始生成新密钥对的过程。

系统会要求您将鼠标移到Key部分的空白区域以生成一些随机性,移动指针时,绿色进度条将前进,这个过程应该需要几秒钟。

生成过程完成后,公钥将显示在窗口中。

(可选)如果要使用密码,请在“Key passphrase”字段中键入密码,并在“Confirm passphrase”字段中确认相同的密码,如果您选择使用密码短语,则可以通过保护私钥免遭未经授权的使用来获得额外的安全保护。

如果设置密码,则每次使用私钥时都需要输入密码。

单击“Save private key”按钮保存私钥,您可以使用.ppk扩展名(PuTTY私钥)将文件保存在任何目录中,但建议您将其保存在可以轻松找到它的位置,为私钥文件使用描述性名称是很常见的。

或者,您也可以保存公钥,但稍后可以通过加载私钥重新生成公钥。

右键单击标记为“Public key for pasting into OpenSSH authorized_keys file”的文本字段,然后单击“全选”选择所有字符,打开文本编辑器,粘贴字符并保存,确保你粘贴整个密钥,建议将文件保存在保存私钥的同一目录中,使用相同名称的私钥和.txt或.pub作为文件扩展名。

4. 将公钥复制到Linux服务器

现在您已生成SSH密钥对,下一步是将公钥复制到要管理的服务器。

启动PuTTY程序并登录到远程Linux服务器。

如果您的用户SSH目录不存在,请使用mkdir命令创建它并设置正确的权限:

mkdir -p ~/.ssh
chmod 0700 ~/.ssh

用文本编辑器打开~/.ssh/authorized_keys文件,并粘贴在步骤3中复制的公钥到~/.ssh/authorized_keys中:

nano ~/.ssh/authorized_keys

整个公钥文本应该在一行上。

运行以下命令以确保只有您的用户可以读写该~/.ssh/authorized_keys文件:

chmod 600 ~/.ssh/authorized_keys

5. 使用SSH密钥登录服务器

Pageant是一种PuTTY SSH身份验证代理,它将私钥保存在内存中,Pageant二进制文件是PuTTY.msi安装包的一部分,可以通过转到Windows开始菜单→ PuTTY → Pageant来启动。

当您启动Pageant时,它会在系统托盘中放置一个图标,双击图标,将打开Pageant窗口。

要加载密钥,请按“Add key”按钮,这将打开一个新文件对话框,找到私钥文件,然后按“打开”,如果您尚未设置密码,则会立即加载密钥,否则,系统将提示您输入密码,输入密码,Pageant将加载私钥,完成上述步骤后,您应该能够登录到远程服务器而不会被提示输入密码,要测试它,请打开一个新的PuTTY SSH会话并尝试登录到您的服务器,PuTTY将使用加载的密钥,您将在不输入密码的情况下登录Linux服务器。

高级选项:使用SSH代理

SSH代理是一种方便的方法,允许您在通过SSH连接到远程服务器时使用本地机器上的SSH密钥,这对于跳板服务器等复杂的网络配置特别有用,以下是使用SSH代理的步骤:

1. 在本地机器上编辑SSH配置文件:

使用以下命令编辑SSH配置文件:

nano ~/.ssh/config

在文件中添加以下内容:

Host remote_server
    ForwardAgent yes

将remote_server替换为远程服务器的别名或IP地址,保存并关闭文件。

2. 连接到跳板服务器:

如果您使用了跳板服务器,可以使用以下命令连接到远程服务器:

ssh -A username@jump_server

从跳板服务器连接到目标远程服务器:在跳板服务器上,使用以下命令连接到目标远程服务器:

ssh username@remote_server

将remote_server替换为目标远程服务器的IP地址或域名,使用SSH代理后,您无需在本地机器上复制和添加SSH密钥,而是直接使用本地机器上的密钥进行远程身份验证。

常见问题与解答(FAQs)

Q1: 如果我已经有一个现有的SSH密钥对,如何将其添加到新的远程服务器?

A1: 您可以使用ssh-copy-id命令将现有公钥添加到新的远程服务器。

ssh-copy-id username@new_remote_server

Q2: 如何在多个远程服务器上使用同一个SSH密钥对?

A2: 您可以将公钥添加到每个远程服务器的~/.ssh/authorized_keys文件中,并确保私钥文件存储在安全的位置且不被泄露。

Q3: 如果我想更改现有的SSH密钥对的密码,该怎么办?

A3: 您可以使用以下命令更改现有私钥的密码:

ssh-keygen -p [private_key_file]

系统会提示您输入当前密码和新密码。

0

随机文章