在配置服务器的 .ssh
目录以支持 SSH 免密码登录时,可以按照以下步骤进行:
1. 确保 .ssh
目录和 authorized_keys
文件存在
在服务器的用户目录下(例如 /home/username
),执行以下命令来创建 .ssh
目录和 authorized_keys
文件:
mkdir -p ~/.ssh
touch ~/.ssh/authorized_keys
2. 设置 .ssh
目录和 authorized_keys
文件的权限
为了确保安全,.ssh
目录和 authorized_keys
文件应具有以下权限:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
3. 将客户端公钥添加到 authorized_keys
方法1:手动复制
-
在客户端(你希望用来连接服务器的计算机)生成 SSH 密钥对(如果还没有的话):
ssh-keygen -t rsa -b 4096
-
公钥通常位于客户端的
~/.ssh/id_rsa.pub
文件中。你可以将公钥内容复制到服务器的~/.ssh/authorized_keys
文件中:cat ~/.ssh/id_rsa.pub | ssh username@server_ip "cat >> ~/.ssh/authorized_keys"
方法2:使用 ssh-copy-id
在客户端直接使用 ssh-copy-id
命令将公钥复制到服务器:
ssh-copy-id username@server_ip
这会自动将客户端的公钥添加到服务器的 authorized_keys
文件中。
4. 检查 SSH 配置
在服务器上,确保 sshd_config
配置文件允许公钥认证:
sudo vim /etc/ssh/sshd_config
确保以下选项设置正确:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
编辑完后,重新启动 SSH 服务:
sudo systemctl restart ssh
5. 测试 SSH 登录
在客户端运行以下命令测试是否可以免密码登录:
ssh username@server_ip
注意事项
- 确保服务器防火墙允许 SSH 连接(通常是 22 端口)。
.ssh
和authorized_keys
权限配置正确且无误。