您的位置:

SSH-Keygen详解

一、生成SSH密钥对

SSH-Keygen是一个基于密钥对的安全连接工具,而密钥对就是由公钥和私钥组成。以下是使用SSH-Keygen生成密钥对的步骤:

$ ssh-keygen

在提示符下输入上述命令并按回车键,会出现如下画面:

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):

默认情况下,SSH-Keygen会将密钥对存储在默认路径 /root/.ssh/id_rsa 中。如果需要更改默认路径,直接输入新路径即可。

接下来程序会要求输入passphrase,建议使用随机生成的强密码。当然,如果不需要设置passphrase,则可以直接按“Enter”跳过此步骤。如下所示:

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

成功设置好密钥对后,会在终端上输出类似以下的信息:

Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
The key's randomart image is:
+---[RSA 2048]----+
|            ...oo|
|           . oo  |
|            .o.. |
|             . o |
|        S .   + .|
|   o   . o . E.  |
|  . o .  o o .   |
|   . o   o. .o   |
|    o..o..  .    |
+-----END RSA KEY-+

二、安全设置

一旦生成密钥对,下一步便是安全地设置文件权限。根据安全原则,应该只允许密钥拥有者有读、写权限。

执行以下命令,即可设置文件权限:

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/id_rsa
$ chmod 644 ~/.ssh/id_rsa.pub

三、使用SSH密钥对

生成SSH密钥对后,用户需要将公钥文件传输到服务器端,以便将公钥文件添加到授权文件中。具体操作如下:

1、使用以下命令查看公钥:

$ cat ~/.ssh/id_rsa.pub

将公钥文件的内容复制到终端,然后保存。而后,将该公钥文件内容复制到服务器的 ~/.ssh/authorized_keys 文件中。

2、新开终端,在终端中输入如下命令,链接到服务器:

$ ssh user@host

注意: 在上述命令中,user是服务器登录名,host是目标服务器的IP地址或域名。

如果这是第一次连接服务器,会看到类似于以下的内容:

The authenticity of host 'xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx)' can't be established.
RSA key fingerprint is 3f:1b:f4:bd:47:xx:xx:xx:xx:xx:xx:xx:f2:4f:b3:c0.
Are you sure you want to continue connecting (yes/no)?

这时输入“yes”并按回车键。

之后会提示输入密码,如需跳过密码输入可在步骤1中设置passphrase,或在此处直接按回车键。

如果SSH-Keygen生成的公钥文件已添加到授权文件中,连接会顺利完成,不会再次要求输入密码。

四、使用不同的算法来生成密钥对

以 Edward Curve 为例,这种加密方式能提高安全性:

$ ssh-keygen -t ed25519

提示符将会要求设置文件存储路径,还要求设置加密密码等信息。

五、SSH-Keygen常见问题排查

如果ssh-keygen命令无法工作,或者抛出“fatal error”或“command not found”类似的错误信息,用户可以尝试以下排查方法。

1、检查SSH-Keygen是否正在运行

如果一个SSH-Keygen进程正在运行,再次运行可能会引起冲突。通过运行以下命令,用户能够确认进程是否正在执行。

$ ps aux | grep ssh-keygen

2、确认SSH-Keygen是否安装

如果SSH-Keygen未安装,则用户需要先安装OpenSSH Client和Server。可以执行以下命令,检查OpenSSH Server包是否已安装:

$ dpkg-query -W openssh-server

3、确认错误消息是否还包含其他信息

如果错误消息仅提到了“ssh-keygen”,因此它不具有足够的信息来确切地解决问题。将终端窗口中的代码和错误消息复制并进行搜索,并查找解决方案。

4、确认您是否有适当的许可权

如果用户没有访问/tmp或/ var / log目录以及SSH-Keygen命令的其他必备文件的足够权限,则可能无法运行。

六、总结

通过使用SSH-Keygen生成密钥对,可以建立基于密钥的安全连接,提高远程登陆的安全性。用户应该合理设置密钥的存储路径、加密密码等关键因素,同时进行良好的安全设置和SSH-Keygen常见问题排查,以提高安全性并避免可能的错误。