这个是在Linux服务器上,Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-73-generic x86_64)
runner 配置的有问题,服务器上找不到私钥文件
这是我服务器上的文件夹,里面有私钥,我在配置runner的时候,地址是一致的
@陌离~: 那估计是权限的问题,runner执行时用户是bg_admin吗
@往往m: 对的
权限还要改吗
@陌离~: 你gitlab runner是用什么用户执行的?如果是root用户看下 /etc/gitlab-runner/config.toml
,如果不是root用户 看下 ~/.gitlab-runner/config.toml
@往往m: 就是说在服务器上需要安装gitlab-runner?我是在本机上安装的gitlab-runner
@陌离~: 哦 我明白了,你在本地装了gitlab-runner然后你有把密钥路径指定成服务器上面密钥所在的路径,你本地runner执行的时候怎么能拿到你服务器上面的文件呢?
@往往m: 对,搞他喵2天愣是卡在这
@往往m: 服务器上的gitlab-runner文件夹打不开,我改权限也改不了
@陌离~: config.toml
[[runners]]
executor = "ssh"
[runners.ssh]
host = "example.com" 这是你要连的服务器的地址
port = "22" 服务器端口
user = "root" 用这个用户去连服务器
password = "password" 用户密码
identity_file = "/path/to/identity/file" 或者用户密钥
runner根据这个文件,连接服务器执行操作
不用装在服务器上,在本地你配置好也行
@往往m: 这给最后那个我直接放的文件路径
@往往m: 我向服务器发送的是私钥,服务器拿公钥还是私钥验证啊,我感觉会不会是我验证的也不对
@陌离~: 公钥私钥是一对的,不同场景用法不一样。
第一种:服务器保存公钥,你的电脑上保存私钥。你把公钥给别的服务器,你就能连上其他的服务器,适合你控制多台服务器的场景。
第二种:服务器保存私钥,你的电脑上保存公钥。你把公钥给别人别人就能连上服务器,适合多个人控制一台服务器的场景。
@往往m: 密钥搞好了,它又说
说找不到这个文件夹,这个root用户就不对,我的用户是bj_admin,这个怎么改掉啊
@往往m: 我用管理员命令进入这个文件夹发现的确没有这个文件
我需要在这里面重新建立文件夹吗,可我通过查资料发现这个文件夹是自动建立的
@陌离~: 你runner运行在哪个机器上?找到runner的配置文件发出来看看
@往往m:
在Linux服务器上
@陌离~: 有密码可以把identity_file去掉
@往往m: 好的,我试试
@往往m: 去掉之后,报错信息还是上面的没有这个/root/.ssh/known_hosts文件
@陌离~: 在runner所在服务器上手动ssh连2.218一次
@往往m:
需要输入密码,输入之后才可以连接
@陌离~: 再跑一遍job,应该可以了
@往往m:
变成这个了,这个是环境的问题好像
@往往m: 大佬,这个说仓库克隆地址无法连接,而且无法替换成新的地址怎么办啊?
@陌离~: clone前先执行ping 或者telnet看看 估计是网络不通
@往往m: 对,直接就是请求超时
@往往m: 然后把ip换成我这边gitlab的ip就可以克隆,但是服务器上改不掉克隆地址
@往往m:
就像这样,我gitlab的ip是192.168.2.218,把克隆地址的ip换成这个就可以克隆
@陌离~: clone地址不是你在gitlab_ci.yml文件配置的吗?你改下不就行了
@往往m:
我这么写好像不行,它还是使用的原来的地址
@陌离~: 你这容器里有git命令吗?
@往往m: 额,好像没有,我是想让它可以在Linux上进行编译