[关闭]
@donghanyuan0609 2023-04-18T12:30:58.000000Z 字数 1774 阅读 67

计算所服务器所外访问

SSH 连接服务器与 GitLab

跳板机公网 IP 地址:8.141.164.33 ,端口对应规则:所内 10.3.2.10x 对应的是跳板机的 410x 端口,例如 10.3.2.102 的 SSH 对应跳板机的 4102 端口。

所有所内机器的 SSH 均只能使用 publickey 方式认证,不支持密码登录。

~/.ssh/config 中添加如下的主机信息:

# 在计算所内网访问
Host ACT102
    Hostname 10.3.2.102
    User donghanyuan
    Port 22
    IdentityFile ~/.ssh/id_rsa

# 外网访问并在本地 10890 端口开启 SSH Tunnel
Host ACT102-Jump
    Hostname 8.141.164.33
    User donghanyuan
    Port 4102
    IdentityFile ~/.ssh/id_rsa
    DynamicForward 10890

# 通过 SSH Tunnel 连接内网中的 102
Host ACT102-Outside
    Hostname 10.3.2.102
    User donghanyuan
    Port 22
    IdentityFile ~/.ssh/id_rsa
    ProxyCommand connect -S 127.0.0.1:10890 %h %p

# 通过 SSH Tunnel 链接 GitLab
Host Git105-Outside
    Hostname 10.3.2.105
    User git
    Port 22
    IdentityFile ~/.ssh/id_rsa
    ProxyCommand connect -S 127.0.0.1:10890 %h %p

以上参考配置中请将我的用户名 donghanyuan 修改成自己的用户名。

在 GNU/Linux 系统下,如果找不到 connect 命令( command not found: connect ),则需要安装 connect-proxy 软件包,例如在 Debian/Ubuntu 系统下执行 sudo apt-get install -y connect-proxy 命令以安装。在 Windows 系统下,该程序位于 Git 安装目录下的 mingw64\bin\connect.exe ,例如 Git 安装在 C:\Program Files\Git ,则应将上述配置文件 ProxyCommand 中的 connect 替换为绝对路径 "C:\\Program Files\\Git\\mingw64\\bin\\connect.exe" (注意双引号与反斜杠转义)。

首先用终端开启一条作为隧道的 SSH 连接(-N 表示不执行任何命令,只建立连接,按 Ctrl+C 可断开):

  1. ssh -N ACT102-Jump

将执行这条命令的终端置于后台,此时本地的 10890 端口作为 SSH Tunnel 被启用,之后可用以下命令连接所内的服务器, VSCode 的 Remote-SSH 插件同样可连,且可以同时建立多个 SSH 连接。

  1. ssh ACT102-Outside

测试 GitLab 连通性:

  1. ssh Git105-Outside

如返回 Welcome to GitLab, @<Your Username> 即为可用。

从 GitLab 上 clone 仓库:如果在服务器上,直接按网页给出的 SSH 地址;如果在自己本地,将所给地址中的 10.3.2.105 改成上述配置中的 Git105-Outside。以下为示例:

  1. # 在服务器上 clone
  2. git clone git@10.3.2.105:zhangyulong/paper-report.git
  3. # 在本地 clone
  4. git clone git@Git105-Outside:zhangyulong/paper-report.git

补充:可使用支持断线自动重连的 AutoSSH 代替普通的 SSH 命令用来打通 Tunnel 以提高稳定性,建立连接后同样应将此终端置于后台。参考命令:

  1. autossh -M 0 -N ACT102-Jump

浏览器访问 GitLab

使用 SwitchyOmega 浏览器插件,首先需要建立 SSH Tunnel 连接,然后建立两个 Profile :

切换到刚创建的 Switch Profile 即可在浏览器上访问所内 GitLab。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注