配置SSH密钥免密码登录需三步:首先在本地运行ssh-keygen -t rsa -b 2048生成密钥对,私钥id_rsa保存于~/.ssh/,公钥id_rsa.pub用于后续配置;然后通过ssh-copy-id user@192.168.1.100将公钥复制到远程服务器的~/.ssh/authorized_keys文件中,若无该命令可手动执行cat ~/.ssh/id_rsa.pub | ssh user@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"完成复制;最后确保远程服务器~/.ssh目录权限为700,authorized_keys文件权限为600,使用chmod命令设置即可,完成后即可实现免密登录。

在Linux中配置SSH密钥实现免密码登录,可以提升远程访问的安全性和效率。核心步骤包括生成密钥对、将公钥复制到目标服务器、并确保权限设置正确。只要完成配置,就可以直接登录远程主机而无需每次输入密码。
生成SSH密钥对
本地机器上需要先生成一对SSH密钥(私钥和公钥)。使用ssh-keygen命令即可完成:
ssh-keygen -t rsa -b 2048
执行后会提示你选择保存路径(默认是~/.ssh/id_rsa),也可以设置密钥密码(可选)。如果只是用于免密登录且信任本地环境,可直接回车跳过密码设置。
完成后会在~/.ssh/目录下生成两个文件:
- id_rsa:私钥,保存在本地,不能泄露
- id_rsa.pub:公钥,需要复制到远程服务器
将公钥复制到远程服务器
把本地生成的公钥内容添加到远程主机的~/.ssh/authorized_keys文件中。最简单的方法是使用SSH自带的复制工具:
ssh-copy-id username@server_ip
例如:
ssh-copy-id user@192.168.1.100
系统会提示你输入一次远程用户的密码。验证通过后,公钥会自动追加到远程主机的authorized_keys文件中。
如果没有ssh-copy-id命令,可以手动复制:
cat ~/.ssh/id_rsa.pub | ssh username@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
设置正确的文件权限
SSH对文件权限要求严格,权限不正确会导致密钥认证失败。在远程服务器上确保以下设置:
- ~/.ssh目录权限应为700:chmod 700 ~/.ssh
- ~/.ssh/authorized_keys文件权限应为600:chmod 600 ~/.ssh/authorized_keys
测试免密码登录
配置完成后,尝试通过SSH连接远程主机:
ssh username@server_ip
如果一切正常,将直接登录,不再提示输入密码。
若仍需输入密码,可检查远程服务器的SSH配置文件/etc/ssh/sshd_config,确认以下参数已启用:
- PubkeyAuthentication yes
- AuthorizedKeysFile .ssh/authorized_keys
修改后需重启SSH服务:sudo systemctl restart sshd
基本上就这些。配置一次,长期受益。注意保护好本地私钥文件,避免丢失或泄露。










