2025-09-17
点 赞
1
热 度
47
评 论
0

内网穿透使用gitlab的ssh服务

  1. 首页
  2. 服务器
  3. 内网穿透使用gitlab的ssh服务

在使用 frp 穿透 gitlab 的 ssh 服务前首先要明白两点:

1.gitlab 的 ssh 服务默认运行在 22 端口

2.gitlab 的 ssh 服务必须运行在非 22 端口才能在使用 SSH 克隆的位置产生端口号和 ssh 协议头

因此想正常使用 SSH 克隆就只有一个办法——穿透的远程端口(remote port)和本地端口保持一致。

但是在大部分 frp 服务中都不开放低于 10000 的端口号,而且即使使用自己的 frps 服务器也依然不推荐使用 22 端口直接转发,这可能导致冲突或者其他安全问题。

因此我们需要将 gitlab 的 ssh 服务改为大于 10000 小于 65535 的端口,并确保 frp 服务器上该端口空闲,这只需在/etc/gitlab/gitlab.rb 中找到以下语句或直接将其添加至 gitlab.rb 文件

gitlab_rails['gitlab_ssh_host'] = 'host'    # 内网穿透服务端域名或IP
gitlab_rails['gitlab_ssh_user'] = 'git'    # 访问ssh使用的用户,一般是git,可以不写这条
gitlab_rails['gitlab_shell_ssh_port'] = port    # ssh服务的端口号

使用以下命令重载 gitlab 配置文件,并重启 gitlab 服务

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

最后使用内网穿透(如 frp)将相应端口穿透即可

在使用 ssh 之前需要先生成 ssh 密钥,并将公钥添加至自己的 gitlab 账户,gitlab 提供了多种加密方式,可参考下面链接的文档选择合适的加密方式:

https://docs.gitlab.com/user/ssh/#supported-ssh-key-types

在终端(或者 CMD)中使用以下命令生成 ssh 密钥:

ssh-keygen -t ed25519 -C "<comment>"

其中 <comment> 是注释,可以使用邮箱做注释;生成密钥的过程中可以选择密钥存储位置(回车默认存储在 ~/.ssh/id_ 加密方式)和验证密码(建议输入启用验证密码,直接回车则为空),生成密钥完成后进入提示给出的 pub 公钥位置,将公钥复制并粘贴到 gitlab 的 SSH Keys 设置中。

可以使用以下命令在其他设备测试是否成功穿透:

ssh -T ssh://host:port

第一次使用会遇到图 1 所示情况:

图 1

输入 yes,然后连接会被关闭,再输入一次命令并根据提示输入验证密码即可成功访问(如图 2)。

图 2


我自己用的账号

enfj 主人公

具有版权性

请您在转载、复制时注明本文 作者、链接及内容来源信息。 若涉及转载第三方内容,还需一同注明。

具有时效性

目录

欢迎来到Henry的站点,为您导航全站动态

18 文章数
4 分类数
1 评论数
5标签数