SSH免密码登录方法

总结摘要
要让 SSH 免密码登录服务器,最常用的方法是设置 SSH 密钥对。这样不仅可以免去每次输入密码的麻烦,而且比传统的密码验证更安全。

要让 SSH 免密码登录服务器,最常用的方法是设置 SSH 密钥对。这样不仅可以免去每次输入密码的麻烦,而且比传统的密码验证更安全。

操作步骤如下:

第一步:在本地电脑生成密钥对

首先,在你自己的电脑(客户端)上打开终端(Linux/macOS)或 PowerShell(Windows)。

输入以下命令:

1
ssh-keygen -t rsa -b 4096
  1. 系统会提示你输入文件保存位置,可以直接按回车键使用默认路径 (~/.ssh/id_rsa)。
  2. 接着会提示你输入密码短语(passphrase)。如果这里设置了密码,每次使用密钥时仍需要输入该密码(但可以借助 SSH agent 避免每次都输)。如果希望完全免密,直接留空并按回车即可。

第二步:将公钥复制到服务器

你需要把刚才生成的公钥内容,添加到服务器的 ~/.ssh/authorized_keys 文件中。主要有两种方法:

方法 A:使用 ssh-copy-id(推荐)

这是最简单的方法,在终端中运行:

1
ssh-copy-id user@your_server_ip
  • user:替换成你的服务器用户名
  • your_server_ip:替换成你的服务器 IP 地址或域名

之后输入一次密码,公钥就会自动上传并配置好。

方法 B:手动复制

如果本地没有 ssh-copy-id 命令,可以手动操作:

  1. 查看公钥内容(在本地电脑上):

    1
    
    cat ~/.ssh/id_rsa.pub

    选中并复制显示的全部内容(以 ssh-rsa 开头)。

  2. 登录服务器(这一步还需要输入密码):

    1
    
    ssh user@your_server_ip
  3. 在服务器上配置公钥

    1
    2
    3
    4
    
    mkdir -p ~/.ssh
    echo "这里粘贴你刚才复制的公钥内容" >> ~/.ssh/authorized_keys
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys

    最后两行的 chmod 命令用于设置正确的权限,这是 SSH 安全要求所必需的。

第三步:测试登录

配置完成后,在本地电脑退出当前 SSH 连接,然后重新尝试登录:

1
ssh user@your_server_ip

如果一切顺利,你应该可以直接登录,系统不会再提示输入密码。


如果仍然提示输入密码,可以检查以下几点:

  1. 权限设置:确保服务器上的 ~/.ssh 目录权限是 700~/.ssh/authorized_keys 文件权限是 600
  2. SSH 配置:检查服务器上的 /etc/ssh/sshd_config 文件,确保以下设置是 yes 且未被注释掉:
    1
    
    PubkeyAuthentication yes
    如果修改了这个文件,需要重启 SSH 服务才能生效:sudo systemctl restart sshdsudo service ssh restart
  3. 客户端调试:如果还是不行,可以在连接时加上 -v 参数(如 ssh -v user@ip),查看详细的连接日志,这通常会给出具体的失败原因。