SSH连接及端口映射实现VScode
什么是端口映射
端口映射是一种网络技术,将外网的任意端口映射到内网相应端口,使得内网和外网能通信,外网可以访问内网的服务应用。
ssh -p 37367port_num端口号 user_name用户名root@ssh.intern-ai.org.cn域名或IP -CNg -L 7860(本地机器port):127.0.0.1:7860(开发机port) -o StrictHostKeyChecking=no
各部分含义:
-p 37367:是指定 SSH 连接的端口为 37367,这个前面提到过。
root@ssh.intern-ai.org.cn:表示要以 root 用户身份连接到 ssh.intern-ai.org.cn 这个主机。
-CNg:
-C 通常用于启用压缩。
-N 表示不执行远程命令,仅建立连接用于端口转发等。
-g 允许远程主机连接到本地转发的端口。
-L {本地机器_PORT}:127.0.0.1:{开发机_PORT}:这是设置本地端口转发,将本地机器的指定端口(由 {本地机器_PORT} 表示)转发到远程主机(这里即 ssh.intern-ai.org.cn)的 127.0.0.1 (即本地回环地址)和指定的开发机端口(由 {开发机_PORT} 表示)。
-o StrictHostKeyChecking=no:关闭严格的主机密钥检查,这样可以避免第一次连接时因为未知主机密钥而产生的提示或错误。
VScode进行SSH连接并实现开发机外网访问
安装插件Remote-SSH
VScode远程连接开发机
安装后侧边栏有远程连接图标,点击后出现SSH点击“+”按钮,添加开发机SSH连接的登录命令即可
可以选择配置文件config,意思是将所有远程连接过的信息存储,打开配置文件可以看到(也可以不修改),如果删除下面两行会跳出指纹验证弹窗。
Host ssh.intern-ai.org.cn #主机ip也可以是域名
HostName ssh.intern-ai.org.cn #主机名
Port 37367 #主机的SSH端口
User root #登录SSH使用的用户
StrictHostKeyChecking no #表示禁用严格的主机密钥检查。这意味着当连接到一个新的 SSH 服务器时,不会严格验证服务器的主机密钥,可能会带来一定的安全风险。
UserKnownHostsFile /dev/null # 将用户已知的主机密钥文件设置为 /dev/null ,这实质上是忽略了对已知主机密钥的记录和使用。
在弹出窗口点击“连接”可以远程到开发机了
在左侧栏打开文件夹,选择/root/ 路径确定则进入了开发机的工作目录
写测试代码
创建test.py文件
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()
在开发机进行端口映射
ssh -p 37367 root@ssh.intern-ai.org.cn -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no
此时能从开发机连接访问
使用 vscode 进行端口映射
当然,如果我们运行不同的web ui的话,需要重复输入命令,这样很麻烦,这就需要用到VScode了。前面我们已经SSH远程连接了开发机,VScode提供了自动端口映射的功能,我们不需要手动配置,我们可以使用“Ctrl+Shift+~”快捷键唤醒终端,在终端的右侧可以找到端口选项:
在这里可以查看端口映射的信息,如果需要修改端口的话,可以在端口那一栏修改端口号。