.ssh目录缺失authorized_keys文件,SSH密钥登录失败求助
首先纠正一个安装命令的错误:你写的apt install open ssh-server是错误的,正确的SSH服务安装命令是:
sudo apt install openssh-server
确保你实际安装的是openssh-server,否则可能导致后续功能异常。
接下来解决authorized_keys缺失的问题:这个文件不会自动生成,需要手动创建并添加客户端公钥,具体步骤如下:
1. 创建并配置authorized_keys文件
- 进入当前用户的
.ssh目录(注意命令小写,你之前的Cd要改为cd):cd ~/.ssh - 创建空的
authorized_keys文件:touch authorized_keys - 设置严格的权限(SSH服务对这个文件和目录的权限要求很高,权限过松会直接拒绝密钥登录):
chmod 600 authorized_keys chmod 700 ~/.ssh
2. 添加客户端公钥到文件中
从需要登录你主机的客户端上,复制其~/.ssh/id_rsa.pub文件的全部内容,粘贴到你主机的~/.ssh/authorized_keys文件末尾即可。
如果客户端和你的主机在同一网络,推荐用ssh-copy-id命令一键完成(替换your_username和your_host_ip为你的主机用户名和IP):
ssh-copy-id your_username@your_host_ip
这个命令会自动创建authorized_keys(如果不存在)、添加客户端公钥,并自动设置正确的权限,比手动操作更可靠。
3. 验证sshd_config配置
打开/etc/ssh/sshd_config文件,确认以下配置项已启用(去掉前面的#注释):
PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
如果你配置了自定义的AuthorizedKeysFile路径,要确保路径指向你刚才创建的文件,且该路径的目录权限合规。
4. 重启SSH服务
修改配置后重启服务使设置生效:
sudo systemctl restart sshd
完成以上步骤后,客户端就能通过密钥正常登录你的主机了。
内容的提问来源于stack exchange,提问作者moonlight
相关产品推荐
相关产品推荐

