书生大模型实战营第4期——入门篇1 Linux

本文参考实战营提供的教程:Tutorial/blob/camp4/docs/L0/linux

ssh连接配置

终端连接

首先创建开发机,并选择适合的配置:

接下来等待开发机创建完成,并且点击"ssh连接"获取连接命令:

复制登录命令:

打开cmd终端输入登录命令,并且输入对应的密码:

登录界面如下:

登录命令的解释如下:

shell 复制代码
ssh -p 38089 root@ssh.intern-ai.org.cn -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null
  1. ssh: 这是用于安全外壳协议(SSH)的命令行工具,用于远程登录到另一台计算机。
  2. -p 38089: 这个选项指定了 SSH 连接所使用的端口号。在这个例子中,SSH 连接将通过端口 38089,而不是默认的端口 22。
  3. root@ssh.intern-ai.org.cn : 这里的 root 是要登录的用户名,ssh.intern-ai.org.cn 是目标主机的域名或 IP 地址。也就是说,命令的目的是以 root 用户身份登录到 ssh.intern-ai.org.cn 这台服务器。
  4. -o StrictHostKeyChecking=no : 这个选项用于配置 SSH 客户端的行为。StrictHostKeyChecking=no 表示在连接到新主机时,不会检查主机密钥的有效性。这意味着如果是第一次连接到该主机,SSH 客户端不会提示用户确认主机密钥,从而自动接受它。这在某些情况下可能会带来安全风险,因为它可能允许中间人攻击。
  5. -o UserKnownHostsFile=/dev/null : 这个选项指定了 SSH 客户端存储已知主机密钥的文件。在这个例子中,/dev/null 表示不存储任何已知主机密钥。这意味着每次连接时,SSH 客户端都不会记住之前连接的主机的密钥信息。

note: 这条命令用于以 root 用户身份通过非默认端口(38089)连接到 ssh.intern-ai.org.cn 服务器,并且在连接时不进行主机密钥检查,也不保存已知主机的密钥信息。这种设置通常用于临时连接或自动化脚本,但在生产环境中使用时需要谨慎,以避免安全风险。

免密连接

在开发时,每次都输入密码比较麻烦,可以配置ssh key来跳过输入密码的步骤,首先生成ssh key:

shell 复制代码
ssh-keygen -t rsa

输入命令后一路回车,公钥和私钥都保存到~/.ssh下了。将公钥~/.ssh/id_rsa.pub配置到平台就能实现免密登录了:

重新使用ssh命令连接开发机:

也可以使用命令来拷贝密钥:

css 复制代码
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 38089 user@remote_host

也可以手动拷贝到服务器上的 ~/.ssh/authorized_keys里。

bash 复制代码
ssh user@remote_host
mkdir -p ~/.ssh 
echo "your_public_key_content" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys 
chmod 700 ~/.ssh

vscode连接

首先安装ssh插件:

接下来点击显示器形状的远程开发机,点击+号创建新的连接:

输入以下命令配置ssh连接(-i需要额外添加,指定本地ssh密钥):

shell 复制代码
ssh -p 38089 root@ssh.intern-ai.org.cn -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null  -i  ~/.ssh/id_rsa

开发机的配置写入~/.ssh/config下了

javascript 复制代码
Host ssh.intern-ai.org.cn
  HostName ssh.intern-ai.org.cn
  Port 38089
  User root
  StrictHostKeyChecking no
  UserKnownHostsFile /dev/null
  IdentityFile ~/.ssh/id_rsa  

刷新后显示多了一台intern的开发机,点击连接:

此时可以免密登录,或者输入本地ssh的密码连接上vscode:

打开一个文件夹:

结果如下:

ssh端口映射

端口映射是一种网络技术,它可以将外网中的任意端口映射到内网中的相应端口,实现内网与外网之间的通信。通过端口映射,可以在外网访问内网中的服务或应用,实现跨越网络的便捷通信。

在开发应用时,尤其是在需要与外部系统进行交互的情况下,端口映射显得尤为重要。开发人员可以将开发机上的特定端口(如HTTP服务的80端口或HTTPS服务的443端口)映射到本地路。这样,外部用户或就可以通过访问指定的端口,直接与开发机上的应用进行交互。命令如下:

css 复制代码
ssh -p {开发机端口} root@ssh.intern-ai.org.cn -CNg -L {本地端口}:127.0.0.1:{服务器端口} -o StrictHostKeyChecking=no
  • ssh: 安全外壳协议,用于远程登录。
  • **-p **: 指定连接的端口号。
  • root@ssh.intern-ai.org.cn : 登录的用户名是 root,目标主机是 ssh.intern-ai.org.cn
  • -C: 启用数据压缩,提升传输效率。
  • -N: 不执行远程命令,只进行端口转发。
  • -g: 允许其他主机连接到本地转发的端口。
  • -L {本地端口}:127.0.0.1:{服务器端口}: 将本地的端口转发到远程主机的指定端口。
  • -o StrictHostKeyChecking=no: 禁用主机密钥检查,自动接受主机密钥。

为了测试端口映射,使用下面的hello脚本:

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>
            <h2 style="text-align: center;">😀 Hello~ 神弥悠 ~</h2>
            <p align="center">
                <a href="https://github.com/InternLM/Tutorial/blob/camp3">
                    <img src="https://oss.lingkongstudy.com.cn/blog/202410081252022.png" alt="Logo" width="50%" style="border-radius: 5px;">
                </a>
            </p>

            """
    gr.Markdown(html_code)

demo.launch()

安装gradio包:

ini 复制代码
pip install gradio==4.29.0

在浏览器的开发机里面运行命令:

此时打开http://127.0.0.1:7860/是看不到内容的:

需要配置端口映射,将远程的7860映射到本地的7860:

linux基础命令

基础命令: vim命令:

创建conda环境

创建一个test环境,并激活:

总结

以上就是入门篇Linux的三道作业。通过这些作业,我熟悉了开发机的创建与连接,掌握了端口映射的基本操作,了解了Linux的基本语法以及Conda的使用方法。在此过程中,我特别加强了对Vim编辑器的理解,虽然之前对Vim的命令模式不太熟悉,但通过这次学习,我已经能够灵活运用Vim进行文本编辑。加油~

相关推荐
Wy_编程2 小时前
Linux-文本搜索工具grep
linux·运维·服务器
xujiangyan_2 小时前
linux的sysctl系统以及systemd系统。
linux·服务器·网络
Lovyk2 小时前
Linux Shell 常用操作与脚本示例详解
linux·运维·服务器
yuanpan6 小时前
ubuntu系统上的conda虚拟环境导出方便下次安装
linux·ubuntu·conda
AOwhisky7 小时前
Linux 文本处理三剑客:awk、grep、sed 完全指南
linux·运维·服务器·网络·云计算·运维开发
Gavin_9157 小时前
从零开始部署经典开源项目管理系统最新版redmine6-Linux Debian12
linux·ruby on rails·开源·debian·ruby·redmine
花小璇学linux8 小时前
imx6ull-驱动开发篇31——Linux异步通知
linux·驱动开发·嵌入式软件
shelutai8 小时前
ubuntu 编译ffmpeg6.1 增加drawtext,libx264,libx265等
linux·ubuntu·ffmpeg
runfarther8 小时前
搭建LLaMA-Factory环境
linux·运维·服务器·python·自然语言处理·ai编程·llama-factory
hello_ world.8 小时前
RHCA10NUMA
linux