开发者社区 问答 正文

authorized_keys 里面配置了客户端的公钥,git不能免密访问

git 账户 下面,authorized_keys 里面配置了客户端的公钥,git不能免密访问,还是需要密码访问

展开
收起
1992942093625127 2019-01-16 17:35:12 713 分享 版权
阿里云 AI 助理回答

遇到在Git账户的authorized_keys中配置了客户端公钥后,仍无法实现免密访问的问题,可以按照以下步骤进行排查和解决:

问题分析

  • 确认公钥已正确添加到服务器上的~/.ssh/authorized_keys文件中。
  • 检查服务器SSH服务的配置,确保允许使用公钥认证。
  • 验证文件权限是否设置恰当,避免因权限过高导致认证失败。

解决步骤

步骤1:验证公钥配置

  1. 登录服务器:首先通过其他方式(如使用密码)登录到您的Git服务器。
  2. 检查公钥:确认您的公钥内容确实在目标用户(通常是git用户)的~/.ssh/authorized_keys文件内。如果使用的是非默认用户,请相应地调整路径。

步骤2:检查SSH服务配置

  1. 编辑SSH配置文件:使用文本编辑器(如vim)打开SSH服务的配置文件。
    sudo vim /etc/ssh/sshd_config
    
  2. 确保公钥认证开启:检查以下行是否存在并取消注释(如有需要),确保其值为yes
    PubkeyAuthentication yes
    
  3. 重启SSH服务:修改配置后,重启SSH服务使更改生效。
    sudo systemctl restart sshd
    

步骤3:检查文件权限

  1. 检查.ssh目录权限:应为700。
    ls -ld ~/.ssh
    
  2. 检查authorized_keys文件权限:应为600。
    ls -l ~/.ssh/authorized_keys
    
  3. 调整权限(如果需要):
    sudo chmod 700 ~/.ssh
    sudo chmod 600 ~/.ssh/authorized_keys
    

步骤4:客户端验证

  1. 清除SSH缓存:在客户端执行以下命令,以清除可能的旧密钥或错误缓存。
    ssh-keygen -f "/Users/<your_username>/.ssh/known_hosts" -R "<your_git_server_ip>"
    
  2. 测试连接:尝试从客户端再次发起SSH连接,观察是否还需要输入密码。
    ssh -T git@<your_git_server_ip>
    

注意事项

  • 密钥匹配性:确保使用的私钥与服务器上对应的公钥匹配。
  • 环境差异:不同操作系统或SSH版本可能存在特定配置要求,请根据实际情况调整。
  • 安全组与防火墙:确认服务器的安全组规则和防火墙设置未阻止SSH连接。

通过上述步骤,通常可以解决Git仓库免密访问的问题。如果问题依旧存在,建议进一步检查日志文件(如/var/log/auth.log)以获取更详细的错误信息,并考虑是否有其他安全策略或软件(如SELinux、Fail2ban)影响了SSH访问。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答