一、生成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常见问题排查,以提高安全性并避免可能的错误。