1、SSH的配置:
- 什么是SSH:SSH全称Secure Shell,中文翻译为安全外壳,它是一种网络安全协议,通过加密和认证机制实现安全的访问和文件传输等业务。SSH 协议通过对网络数据进行加密和验证,在不安全的网络环境中提供了安全的网络服务。SSH 是(C/S架构)由服务器和客户端组成,为建立安全的 SSH 通道,双方需要先建立 TCP 连接,然后协商使用的版本号和各类算法,并生成相同的会话密钥用于后续的对称加密。在完成用户认证后,双方即可建立会话进行数据交互
- 简单的ssh连接:直接在本地终端输入命令:ssh -p 33595 root@ssh.intern-ai.org.cn -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null (命令可在开发机平台SSH连接板块获取) ,这里的33595是开发机开放的ssh端口
- 2使用的方法要求每次在本地ssh连接都要输入密码,更进一步,可以通过在vscode中配置ssh密钥进行直接连接。本文使用RSA算法生成密钥,ssh密钥验证身份的原理是:用户本地生成一对密钥,公钥添加到远程服务器上,当用户想访问远程服务器,需要验证身份时,远程服务器通过公钥将自己的随机挑战加密后发送给本地,本地再解密后发回给服务器验明身份。⬇️为使用vscode配置ssh密钥进行远程连接成功
2、端口映射
- 为什么要端口映射:端口映射是一种网络技术,它可以将外网中的任意端口映射到内网中的相应端口,实现内网与外网之间的通信。通过端口映射,可以在外网访问内网中的服务或应用,实现跨越网络的便捷通信。
- 方法:服务器运行指令:
ssh -p port_1 root@ssh.intern-ai.org.cn -CNg -L {本地机器_PORT}:127.0.0.1:{开发机_PORT} -o StrictHostKeyChecking=no
- 这里的port_1是服务器通过ssh连接的端口,开发机_PORT指的是要进行数据交换而要监视的端口。
-C
:启用压缩,减少传输数据量,-N
:不执行远程命令,只建立隧道,-g
:允许远程主机连接到本地转发的端口。 然后本地就可以直接通过访问127.0.0.1:7856来访问服务器运行的程序。 - 测试:首先在服务器端使用vim写一段python代码:
import socket import re import gradio as gr # 获取主机名 def get_hostname(): hostname = socket.gethostname() match = re.search(r'-(\d+)$', hostname) name = match.group(1) return name # 创建 Gradio 界面 with gr.Blocks(gr.themes.Soft()) as demo: html_code = f""" <p align="center"> <a href="https://intern-ai.org.cn/home"> <img src="https://intern-ai.org.cn/assets/headerLogo-4ea34f23.svg" alt="Logo" width="20%" style="border-radius: 5px;"> </a> </p> <h1 style="text-align: center;">☁️ Welcome {get_hostname()} user, welcome to the ShuSheng LLM Practical Camp Course!</h1> <h2 style="text-align: center;">😀 Let’s go on a journey through ShuSheng Island together.</h2> <p align="center"> <a href="https://github.com/InternLM/Tutorial/blob/camp3"> <img src="https://oss.lingkongstudy.com.cn/blog/202406301604074.jpg" alt="Logo" width="20%" style="border-radius: 5px;"> </a> </p> """ gr.Markdown(html_code) demo.launch()
服务器通过python hello_world.py运行后,再运行ssh -p port_1 root@ssh.intern-ai.org.cn -CNg -L {本地机器_PORT}:127.0.0.1:{开发机_PORT} -o StrictHostKeyChecking=no 打开端口映射。然后本地就可以直接访问127.0.0.1:本地机器_PORT进行访问,⬇️为访问结果