首页 > 系统相关 >【服务器运维】Linux基础技能与Conda的使用

【服务器运维】Linux基础技能与Conda的使用

时间:2024-12-03 11:03:10浏览次数:10  
标签:文件 运维 Linux 命令 conda 使用 进程 Conda 目录

前言

近期在参加书生大模型实战营,将会总结课程中的学习笔记发布到博客中来与大家一起分享学习交流。本次学习如何使用Linux与Conda,使用的服务器环境是InternStduio(以下简称IS平台)提供的,感谢上海人工智能实验室与书生实战营。

InternStduio开发机如何创建,可以参考官方文档,不再过多赘述~

准备环境

这里使用InternStduio作为本次练习的运行环境,具体的配置版本如下
Ubuntu 20.04 系统环境, 内置 cudatoolkit12.2

InternStudio开发机介绍:在 InternStudio 中您使用的开发机就是一个 Docker 容器。容器中通常包含运行一个应用程序的依赖,并且实现了计算资源的隔离。

使用SSH远程连接

什么是SSH

SSH全称Secure Shell,中文翻译为安全外壳,它是一种网络安全协议,通过加密和认证机制实现安全的访问和文件传输等业务。SSH 协议通过对网络数据进行加密和验证,在不安全的网络环境中提供了安全的网络服务。

使用密码进行SSH远程连接

我们首先使用的是密码登录方式,完成虚拟机创建后,我们需要打开自己电脑的powerShell终端,使用Win+R快捷键打开运行框,输入powerShell,打开powerShell终端。如果使用Mac则使用commadn+空格键打开聚焦搜索输入teri打开终端。

在进入IS平台中开发机页面找到我们创建的开发机,点击SSH连接。在这里就可以轻松拿到指令~

指令解析:

ssh -p 42936 root@ssh.intern-ai.org.cn -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null

ssh:这是调用SSH客户端程序的命令,用来建立一个加密的通信会话。
-p 42936:指定要使用的端口号。默认情况下,SSH使用22号端口,但这里指定了42936作为替代端口。
root@ssh.intern-ai.org.cn:指定目标主机和登录用户名。root是用户名,而ssh.intern-ai.org.cn是目标主机的域名或IP地址。
-o StrictHostKeyChecking=no:这是一个选项,告诉SSH客户端不要检查主机密钥。正常情况下,SSH客户端会在首次连接到新主机时提示用户确认主机密钥,以防止中间人攻击。设置为no则跳过了这个安全步骤,自动接受主机密钥。
-o UserKnownHostsFile=/dev/null:这也是一个选项,它告诉SSH客户端将已知主机文件设置为/dev/null。通常,SSH客户端会维护一个已知主机文件来记录已经访问过的主机的密钥。通过指向/dev/null,实际上是禁用了这个功能,意味着每次连接时都不会保存或检查主机密钥。

当我们复制好指令,将其粘贴到powershell【终端】中,然后回车。

这里我们需要输入密码,我们将登录命令下面的密码复制下来,然后粘贴回终端中~

但是!这里密码粘贴密码是不显示的,这是正常的。

密码输入好之后回车,出现类似下面的内容就是登录成功了~

如果我们想要退出远程连接,输入两次exit就可以啦

配置SSH密钥进行SSH远程连接

如果我们每次远程都输入密码比较麻烦,我们可以通过设置SSH key来跳过输入密码这一步骤,在ssh命令中我们可以使用ssh-keygen命令来生成密钥~

PS:如果计算机用户名是中文的,可能部分平台无法识别,比如IS就无法识别

ssh-keygen支持RSA和DSA两种认证密钥。

常用参数包括:

  • -t:指定密钥类型,如dsa、ecdsa、ed25519、rsa。
  • -b:指定密钥长度。
  • -C:添加注释。
  • -f:指定保存密钥的文件名。
  • -i:读取未加密的ssh-v2兼容的私钥/公钥文件。

这里我们使用RSA算法生成密钥,命令为:

ssh-keygen -t rsa

输入命令后一路回车就可以了,这里的密钥默认情况下是生成在~/.ssh/目录下的,~表示的是家目录,如果是windows就是C:\Users\{your_username}\

在powerShell中可以使用Get-Content命令查看生成的密钥,如果是linux操作系统可以使用cat命令。

随后去平台上配置一下~

此时我们再次去使用终端连接开发机就不用再输入密码了,瞬间感觉幸福提升了好多。

使用VSCode进行SSH远程连接

首先,少年你需要有vscode,其次需要准备一个插件,安装后进入远程连接

可能部分显示设置会隐藏起来,在隐藏选项中找找就行。

安装完成插件以后,点击侧边栏的远程连接图标,并在SSH中点击“+”按钮,使用之前的登录指令就行。

随后点击链接就会打开一个新的窗口~

选择打开文件夹,并选择需要打开的文件夹

随后侧边文件资源管理器显示的内容就是远程容器【或者是服务器】内的啦

这里是这个插件远程连接配置的一些说明,以供参考~

Host ssh.intern-ai.org.cn #主机ip也可以是域名
  HostName ssh.intern-ai.org.cn #主机名
  Port 37367 #主机的SSH端口
  User root #登录SSH使用的用户
  StrictHostKeyChecking no
  UserKnownHostsFile /dev/null

远程端口映射

端口映射 is what?

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

有很多程序可能在外网访问不是那么的方便,会存在一些端口限制,因此我们可以选择使用端口映射去解决这个问题~将外网链接映射到我们本地主机,我们使用本地连接访问。

下面的流程图可以方便理解端口映射的过程(出处:书生大模型实战营)

参考指令

ssh -p 37367 root@ssh.intern-ai.org.cn -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no

图解:
个人PC会远程连接到开发机唯一暴露在外的37367端口,(这个在SSH的时候提到过每个人的开发机暴露的端口都不一样),并设置隧道选项。暴露端口是作为中转站进行流量的转发。

  • -C:启用压缩,减少传输数据量。
  • -N:不执行远程命令,只建立隧道。
  • -g:允许远程主机连接到本地转发的端口。

当在个人PC上执行这个SSH命令后,SSH客户端会在本地机器的7860端口上监听。

任何发送到本地7860端口的流量,都会被SSH隧道转发到远程服务器的127.0.0.1地址上的7860端口。

这意味着,即使开发机的这个端口没有直接暴露给外部网络,我们也可以通过这个隧道安全地访问远程服务器上的服务。

使用 SSH 命令进行端口映射

参考指令,部分平台可以直接获取(比如IS平台)。

ssh -p 37367 root@ssh.intern-ai.org.cn -CNg -L {本地机器_PORT}:127.0.0.1:{开发机_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:关闭严格的主机密钥检查,这样可以避免第一次连接时因为未知主机密钥而产生的提示或错误。

下面是一个代码DEMO(来自书生训练营),我们需要将其储存到服务器上然后运行通过SSH代理端口到本地进行访问~

新建一个HelloWorld.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;">

标签:文件,运维,Linux,命令,conda,使用,进程,Conda,目录
From: https://blog.csdn.net/qq_29162275/article/details/144171600

相关文章

  • 夜莺运维指南之基本部署
    对于一套监控系统而言,核心就是采集数据并存储,然后做告警判定、数据展示分析,整个流程图如下:1.夜莺服务端前置说明:各种环境的选型建议Dockercompose方式:可用于快速测试,不建议上生产,如果要生产环境使用Dockercompose,需要对Dockercompose真的很熟二进制部署:这是......
  • 系统文件IO 例题 Linux环境 C语言实现
    问题:通过系统文件IO,实现文件拷贝功能。测试:文本  图片 视频代码:#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<stdio.h>#include<unistd.h>intmain(intargc,char*argv[]){if(argc<3){printf("a......
  • 宝塔Linux面板的系统要求是什么?
    宝塔Linux面板对系统环境有明确的要求,以确保其稳定运行和最佳性能。以下是详细的系统要求:内存要求:最低要求:至少512MB以上,推荐768MB以上。纯面板运行大约占用系统60MB内存。更高的内存配置可以确保面板和网站的流畅运行,尤其是在处理多个任务或高流量网站时。硬盘空间要求:......
  • 初识Linux---Linux中的常用基本指令(上)
    Linux中的基本指令一.Linux操作系统的背景二.Linux下的基本指令01.ls指令02.pwd命令03.cd指令04.touch指令和nano05.mkdir指令(重要):06.rmdir指令&&rm指令(重要)07.man指令(重要):07.cp指令(重要)08mv指令(重要)09cat指令10.more指令11.less指令(重要)一.Linux操作系统的......
  • Linux内核ftrace的使用
    文章目录ftrace使用一、ftrace的功能与用途二、ftrace的实现原理三、ftrace的使用步骤1.查看tracer:通过查看available\_tracers文件,了解当前内核中可用的插件追踪器2.选择tracer3.设置参数和过滤器4.开启追踪5.读取追踪结果四、ftrace的常用traceravailable_tracer......
  • linuxC语言day3
    描述:*组成的菱形图案,用户输入一个奇数n,表示菱形的最大宽度(即中间一行的星号数)。程序应该使用while循环生成这个菱形图案。1.利用while循环实现操作#include<stdio.h>#include<string.h>#include<stdlib.h>intmain(intargc,constchar*argv[]){ intn,i=1,......
  • Linux操作系统下的进程通信
    目录1.进程通信的概念2.管道1.匿名管道pipe函数2.命名管道mkfifo函数3.内存映射mmap()函数munmap()函数4.消息队列消息队列函数5.总结 管道:内存映射消息队列1.进程通信的概念    进程间通信简称为IPC(Interprocesscommunication),进程间通信就是......
  • Linux history 命令详解
    简介history 命令显示当前 shell 会话中以前执行过的命令列表。这对于无需重新输入命令即可重新调用或重新执行命令特别有用。示例用法显示命令历史列表history#示例输出如下:1ls-l2cd/var/log3catsyslog执行历史记录中的命令!<number>!2#number表......
  • linux-11 关于shell(十)执行入口、模数
      比如说在系统刚刚启动的时候,这里要求我们进行登录,我输入用户名,然后输入密码,就可以正常登录,正常登录以后,会显示什么,叫命令提示符对吧?叫做prompt,我们把它称为叫命令提示符。如下图,那就意味着我们在底下可以输入命令了,对吧?既然叫命令提示符,那么所输入的一定得是命令,要注......
  • ssh连接linux服务器中断后,如何让命令继续在服务器运行
    ssh连接linux服务器中断后,如何让命令继续在服务器运行这个问题也许是我们这些小白比较头疼的问题,尤其对于做机器学习需要花很久的时间才能训练出一个结果。然而就在这时,因为各种不可抗力我们使用ssh连接服务器时,ssh的窗口突然断开了连接,那么在服务器上跑的程序就也跟着断掉了,之前......