使用 ssh-keygen 命令生成密钥并配置无密码 ssh

  1. 使用 -t 选项指定密钥类型。
    例子:
# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again:

使用 -t 选项指定要创建的密钥类型。
可能的值为
a)
协议版本 1 的“rsa1”
湾协议版本 2 的“dsa”、“ecdsa”或者“rsa”。

  1. 我们可以选择指定密码来加密密钥的私有部分。
    如果我们加密个人密钥,则每次使用该密钥时都必须提供密码短语。
    这可以防止攻击者能够访问私钥并可以冒充我们并访问我们有权访问的所有计算机。
    攻击者仍然需要提供密码。

  2. 步骤1示例中的ssh-key命令在~/.ssh目录下生成了两个key:

$ ls ~/.ssh
id_rsa
id_rsa.pub
  1. 要在不提供密码的情况下登录远程系统或者将文件复制到远程系统,请将公钥(在此示例中为 ~/.ssh/id_rsa.pub)复制到远程系统上的 ~/.ssh/authorized_keys。
    将远程 ~/.ssh 目录权限设置为 700 。
    要允许多个连接,请将公钥添加到远程系统上的 authorized_keys 文件,而不是复制它。
    以下示例添加了公钥:
$ cat id_rsa.pub >> authorized_keys
  1. 然后,我们可以使用 ssh 或者 scp 工具访问远程系统,而无需提供密码。
如何使用 ssh-keygen 命令配置无密码 ssh

使用 ssh-keygen 命令生成公钥/私钥认证密钥对。
身份验证密钥允许用户在不提供密码的情况下连接到远程系统。
必须分别为每个用户生成密钥。
如果以 root 用户身份生成密钥对,则只有 root 用户可以使用这些密钥。

欢迎 on it road

强制执行基于密钥的身份验证

  1. 我们可以通过禁用标准密码身份验证并强制执行基于密钥的身份验证来进一步提高系统安全性。
    为此,请在 /etc/ssh/sshd_config 配置文件中将 PasswordAuthentication 选项设置为 no,如下所示:
# vi /etc/ssh/sshd_config
PasswordAuthentication no
  1. 这不允许密钥不在服务器上特定用户的authorized_keys 文件中的用户通过ssh 连接。
    连接被拒绝并显示以下消息:
$ ssh remote_host
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
  1. 将 PasswordAuthentication 选项设置为 yes ,这是默认值,允许用户使用密码进行身份验证。
日期:2020-09-17 00:13:59 来源:oir作者:oir