INFO-设置 SSH 免密登录:实现安全高效的远程访问

适用模块

linux

具体说明

设置 SSH 免密登录可以让你在不输入密码的情况下,通过 SSH 连接到远程服务器。这通常通过使用 SSH 密钥对来实现。

使用示例

设置 SSH 免密登录可以让你在不输入密码的情况下,通过 SSH 连接到远程服务器。这通常通过使用 SSH 密钥对来实现。以下是详细步骤:

1. 生成 SSH 密钥对

在客户端机器上(即你要从中连接到远程服务器的机器)生成 SSH 密钥对:

ssh-keygen -t rsa -b 4096
  • -t rsa: 指定密钥类型为 RSA。
  • -b 4096: 指定密钥长度为 4096 位。
  • 在提示输入文件保存位置时,按回车键使用默认位置(通常是 ~/.ssh/id_rsa)。
  • 你可以选择设置一个密码短语来为私钥增加一层安全性,但这会要求在使用时输入该密码短语。

2. 将公钥复制到远程服务器

使用 ssh-copy-id 命令将公钥复制到远程服务器。假设远程服务器的用户名是 username,IP 地址或域名是 remote_host

ssh-copy-id username@remote_host
  • 这条命令会将你的公钥(通常是 ~/.ssh/id_rsa.pub)复制到远程服务器的 ~/.ssh/authorized_keys 文件中。
  • 在运行这条命令时,你需要输入远程服务器的用户密码。

3. 手动复制公钥(如果没有 ssh-copy-id

如果你不能使用 ssh-copy-id,你可以手动复制公钥:

  • 查看并复制公钥内容:

    cat ~/.ssh/id_rsa.pub
  • 登录到远程服务器:

    ssh username@remote_host
  • 在远程服务器上,将公钥添加到 ~/.ssh/authorized_keys 文件中:

    mkdir -p ~/.ssh
    echo "your-public-key-content" >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    chmod 700 ~/.ssh

4. 验证免密登录

在完成上述步骤后,尝试从客户端机器连接到远程服务器以验证免密登录:

ssh username@remote_host

如果一切设置正确,你应该能够直接登录,而不需要输入密码。

5. 安全设置

  • 确保 ~/.ssh/authorized_keys 文件的权限设置为 600~/.ssh 目录的权限为 700
  • 考虑在 SSH 配置文件(通常是 /etc/ssh/sshd_config)中禁用基于密码的登录,以增强安全性:

    PasswordAuthentication no

    修改后,重启 SSH 服务:

    sudo systemctl restart sshd

作者:焦巍