Debian系统创建SSH密钥提示No such file or directory问题咨询
问题解答
1 目录创建失败原因
ssh-keygen工具仅在使用默认生成路径(当前用户家目录下的.ssh目录)时会自动创建.ssh目录,如果你用-f参数指定自定义输出路径,工具不会递归创建不存在的上级目录。你指定的输出路径/home/serverkeys/.ssh/id_rsa中,只要/home/serverkeys或者/home/serverkeys/.ssh任意一级目录不存在,就会抛出找不到路径的报错。- 执行以下命令即可修复:
# 递归创建所需目录 mkdir -p /home/serverkeys/.ssh # 设置.ssh目录权限为仅所有者可读可写可执行,避免ssh安全校验报错 chmod 700 /home/serverkeys/.ssh # 如果该密钥是给serverkeys用户使用,需要修正目录属主 chown -R serverkeys:serverkeys /home/serverkeys/.ssh
- 你当前执行
ls -ld看到的是当前所在目录的权限,和/home/serverkeys目录的存在性、权限无关,建议先执行ls /home确认serverkeys用户的家目录是否已经创建。
2 root账户使用与权限继承问题
- 生产环境不建议长期使用root账户执行操作,误操作或者程序漏洞都会带来极高的安全风险,建议创建普通用户搭配sudo做权限管控使用。
- 系统全局安装的软件包所有用户都可正常调用,不存在权限继承问题:apt安装的软件默认会把可执行文件放到
/usr/bin、/usr/sbin等全局路径,所有用户的环境变量默认都包含这些路径,普通用户只要有对应命令的执行权限就能用,涉及到需要root权限的操作,给普通用户配置sudo权限即可。
3 Jenkins拉取同机公开Gitlab仓库的配置要求
- 公开仓库如果使用HTTPS协议匿名拉取,不需要配置SSH密钥可以直接拉取代码。
- 以下场景仍建议配置SSH密钥:
- 后续有调整仓库为私有、或者需要Jenkins推送代码(比如自动打标签、提交构建产物)的需求
- 避免匿名拉取的请求阈值限制、提升拉取稳定性
- 便于做细粒度的权限管控,区分不同服务的拉取权限
- 哪怕二者部署在同一台服务器,以上逻辑同样生效,和跨服务器部署的配置逻辑没有差异。
内容的提问来源于stack exchange,提问作者Golide
相关产品推荐
相关产品推荐

