100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 【环境配置】反向SSH——家中电脑连接校园内网服务器

【环境配置】反向SSH——家中电脑连接校园内网服务器

时间:2018-11-03 13:34:32

相关推荐

【环境配置】反向SSH——家中电脑连接校园内网服务器

1. 需求描述

1.1 具体情境

实验室有一台校园内网GPU服务器,校园内网的特点是只允许内网机器主动访问外网机器,而不允许外网机器主动访问内网机器。

现在需要使用家中的电脑(无公网IP的机器,其可能是另一个单位内网或家用路由器分配IP的机器),通过ssh控制校园内网的GPU服务器。

1.2 实现思路

假设校园内网的GPU服务器为机器A,在家中的电脑为机器C,具有公网IP的云服务器为B(公网IP的机器B需要购买阿里云或者腾讯云的服务器)。

由于机器B具有公网IP,机器C和机器A都可以通过主动连接找到机器B,所以我们可以将B作为A与B之间的桥梁。

首先使用机器 A 通过反向 ssh 连接机器 B ,然后机器 C 使用 ssh 连接 B 就可以通过该反向 ssh 对 A 进行操作了。

1.3 实现要求

能使用家中的电脑 C 通过 ssh 对校园内网GPU服务器 A 进行操作每当GPU服务器 A 开机,就自动连接云服务器 B (前提是要确保机器A能访问外网)

2. 配置过程 (以下指令全部在机器 A 中执行)

校园内网GPU服务器(机器A):公网IP:无用户名:gpu401腾讯云(机器B):公网IP: 666.666.666.666用户名:ubuntu

2.1 配置autossh免密登陆 (A连接B)

# 设置ssh免密码登录,使得 A 能免密码登录 Bssh-keygen -t rsa # 一路回车,生成的id_rsa.pub文件在~/.ssh/文件夹里面。# 将 A 中的这个key推送到vps,使用如下命令进行推送到 Bssh-copy-id -i ~/.ssh/id_rsa.pub ubuntu@666.666.666.666 -p 22# 安装autossh,其能确保 A-B 之间的 反向 ssh 能断线自动重连apt-get install autossh# 测试 autossh + 免密登录是否成功。autossh -M 9991 -NfR 8990:localhost:22 ubuntu@666.666.666.666'''如果该测试指令在 A 执行后,当 B 执行指令 'watch -n 1 netstat -tnlp' 能看到以下红框的端口号,则说明测试通过。'''

2.2 配置 A 开机启动反向ssh

# 使用systemctl来控制服务的注册以及启动# 创建autossh.servicevim /lib/systemd/system/autossh.service# 将下面的内容加进去[Unit]Description=Auto SSH TunnelAfter=network-online.target[Service]User=gpu401Type=simpleExecStart=/usr/bin/autossh -NR 9888:localhost:22 -i /home/gpu401/.ssh/id_rsa ubuntu@666.666.666.666 -p 22 >> /dev/null 2>&1ExecReload=/bin/kill -HUP $MAINPIDExecStop=/bin/kill -TERM $MAINPIDKillMode=processRestart=no[Install]WantedBy=multi-user.targetWantedBy=graphical.target

注意,由于当时是使用了 机器A 中的用户 gpu401 来免密登录 机器B 的, 因此上述配置文件中[Service]UserExecStart都需要进行正确配置。

# 之后执行systemctl enable autosshsystemctl start autossh# 使用以下指令,查看是否成功启动systemctl status autossh'''如果运行成功,当 B 执行指令 'watch -n 1 netstat -tnlp' 能看到以下红框的端口号,则说明测试通过。'''

3. 使用示例(以下指令全部在机器C中执行)

3.1 使用机器 C 登录 机器A

# 首先机器 C 通过 ssh 登录机器 B,然后在 shell 中输入以下指令登录机器A:ssh -p 9888 gpu401@127.0.0.1

3.2 上\下传文件

# 从机器 A 下载整个目录到机器 Bscp -r username@servername:/var/www/remote_dir/(远程目录) /var/www/local_dir(本地目录)# 从机器 A 上传目录到机器 Bscp -r local_dir username@servername:remote_dir# 上传文件同理,取消参数 '-r' 即可scp local_fileName username@servername:remote_dir

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。