家里科研实验愉快指南

家里科研实验愉快指南

背景:为了让大伙能够在家里能够愉快的科研实验,通过SSH反向隧道,从而达到校外变校内,在家也能够轻松连接校内服务器。

必要配置:一台公网服务器。

反向隧道建立流程

公网服务器配置

1、在自己购买的服务器上(注意:必须是公网服务器)。编辑ssh的配置文件。

text
复制代码
#自己租的云服务器上 vim /etc/ssh/sshd_config

2、往sshd_config文件添加以下内容

text
复制代码
GatewayPorts yes AllowTcpForwarding yes TCPKeepAlive yes

3、重启SSH服务:

text
复制代码
#自己租的云服务上 systemctl restart sshd

学校服务器配置

1、配置密钥和免密登录

text
复制代码
#密钥生成 ssh-keygen -t rsa #将密钥拷贝到公网服务器 ,6.123.123.164是公网的ip 例如:ssh-copy-id root@6.123.123.164 ssh-copy-id [公网服务器用户名]@[公网服务器IP]

2、在学校服务器建立隧道

在学校服务器上执行以下命命令

text
复制代码
#root 是自己公网服务器上的用户名,别的用户名也可以,只要在公网服务器存在即可 ssh -fN -R 22222:localhost:22 [公网服务器用户名]@[公网服务器IP]
  • -f: 后台运行。
  • -N: 不执行远程命令(仅用于转发端口)。
  • -R: 反向隧道关键参数。格式为 [公网端口]:[本地IP]:[本地端口]
  • 22222: 流量将经过公网服务器的这个端口(自己定义即可)。
  • localhost:22: 流量最终转发到学校服务器本机的 22 端口(SSH)。

注意事项:

​ 这里配置的端口,记得也要在公共服务器的安全配置策略中开放该端口,否则也无法访问。

如何测试访问:

方式一:打开windows的powershell,按下回车键后,输入学校服务器的密码即可。

text
复制代码
ssh -p 22222 [校内服务器上用户名]@[公网IP]

方式二:vscdoe配置。在C:\Users\YourName.ssh\config 文件中添加以下内容(一般是该路径)

text
复制代码
Host school-server HostName [公网IP] Port 22222 User [校内服务器上用户名]

一些自动化操作

为了解服务每次重启之后都需要手动开启SSH反向隧道的问题。我把该指定的执行,注册成了一个系统服务,每次开关机后都可以自动执行了。(但是,如果毕业后不是当前公共服务器了,则需要手动建立新的映射)。

目前该自定义系统服务存在于:

text
复制代码
/home/edu/Service/ssh-tunnel.service

服务内容为:

shell
复制代码
[Unit] Description=Reverse SSH Tunnel to Public Server After=network-online.target Wants=network-online.target [Service] User=[校内服务器上用户名] ExecStart=/usr/bin/ssh -N -o "ExitOnForwardFailure=yes" -o "ServerAliveInterval=60" -R 0.0.0.0:22222:localhost:22 [公网服务器用户名]@[公网IP] Restart=always RestartSec=10 [Install] WantedBy=multi-user.target

该自定义服务是通过软连接注册到系统服务中。 软连接建立指令和服务启动指令如下(执行顺序不能乱):

text
复制代码
# 在学校服务器执行 sudo ln -s /home/edu/Service/ssh-tunnel.service /etc/systemd/system/ssh-tunnel.service # 重新加载服务 sudo systemctl daemon-reload # 设置开机自启 sudo systemctl enable ssh-tunnel # 立即启动服务 sudo systemctl start ssh-tunnel

以下指令是查看服务运行状态:

text
复制代码
sudo systemctl status ssh-tunnel
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
真帆碳
下载 APP