基础知识
书生大模型闯关练习
Lv0-Linux基础知识
1. SSH(Secure Shell)
1.1 概述
SSH是用于远程登录和其他网络服务之间的安全协议。它使用加密技术来确保数据的机密性和完整性。SSH的常见用途包括:
-
远程服务器登录:无密码安全访问远程服务器。
-
数据传输:通过安全通道传输文件(如
SCP
和SFTP
)。 -
端口转发:通过SSH隧道转发TCP端口。
1.2 SSH密钥对
SSH使用公钥加密系统,密钥对由两部分组成:
-
公钥:公开分发,存储在服务器上。
-
私钥:保留在客户端,不能外泄。
客户端使用私钥与服务器的公钥进行匹配,从而验证身份,服务器无需存储任何敏感的凭据。
1.3 SSH密钥的生成
在ssh命令中我们可以使用ssh-keygen命令来生成密钥, ssh-keygen支持RSA和DSA两种认证密钥
常用参数包括:
-
-t:指定密钥类型,如dsa、ecdsa、ed25519、rsa。
-
-b:指定密钥长度。
-
-C:添加注释。
-
-f:指定保存密钥的文件名。
1 | ssh-keygen -t rsa -C "youremail@example.com" |
1.4 为不同的服务生成各自的SSH密钥
使用上述命令生成密钥后, 系统会提示你输入密钥文件的保存路径。为了生成多个密钥,确保每个密钥文件名不同
如: 为GitHub生成一个密钥
1 | Enter file in which to save the key (/home/username/.ssh/id_rsa): /home/username/.ssh/id_rsa_github |
在powerShell中可以使用Get-Content
命令查看生成的密钥,如果是linux操作系统可以使用cat
命令
最后将公钥复制粘贴到目标服务的SSH设置中
1.5 配置多个SSH密钥
在~/.ssh/config
文件可以方便地为不同的服务配置不同的SSH密钥
-
添加配置项: 为每个服务添加单独的配置项。
1
2
3
4
5
6
7
8
9Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_github
Host gitlab.com
HostName gitlab.com
User git
IdentityFile ~/.ssh/id_rsa_gitlab解释:
-
Host:自定义别名或远程主机名。
-
HostName:实际的远程服务器主机名(如github.com或gitlab.com)。
-
User:登录时使用的用户名(通常是
git
,用于代码托管平台)。 -
IdentityFile:指定使用的SSH私钥。
-
2. 端口映射
2.1 基础概念
在计算机网络中,端口(Port) 是网络通信中的一个逻辑抽象概念,用于区分同一台计算机上不同网络服务或进程之间的通信通道。它与IP地址一起,用来标识网络中的不同通信终端和服务。端口映射是一种网络技术,它可以将外网中的任意端口映射到内网中的相应端口,实现内网与外网之间的通信。通过端口映射,可以在外网访问内网中的服务或应用,实现跨越网络的便捷通信
2.2 如何工作
1 | ssh -p 37367 root@ssh.intern-ai.org.cn -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no |
-
-p 37367
:是指定 SSH 连接的端口为 37367 -
root@ssh.intern-ai.org.cn
:表示要以root
用户身份连接到ssh.intern-ai.org.cn
这个主机。 -
CNg
-C
启用压缩功能,这可以加快数据传输速度,尤其是在网络速度较慢的情况下。-N
表示不执行远程命令,仅建立连接用于端口转发等。-g
允许远程主机连接到本地转发的端口。这通常用于设置一个“网关”,允许其他计算机通过这个 SSH 会话访问转发端口
-
-L {本地机器_PORT}:127.0.0.1:{开发机_PORT}
:这是设置本地端口转发,将本地机器的指定端口转发到远程主机的127.0.0.1
(即本地回环地址)和指定的开发机端口。 -
-o StrictHostKeyChecking=no
:关闭严格的主机密钥检查,这样可以避免第一次连接时因为未知主机密钥而产生的提示或错误。
使用VSCode可以使用其自动端口映射的功能,不需要自己手动配置
2.3 常见端口和服务
-
21:FTP(文件传输协议)
-
22:SSH(远程登录)
-
25:SMTP(邮件传输)
-
53:DNS(域名解析)
-
80:HTTP(网页浏览)
-
443:HTTPS(安全网页浏览)
2.4 查看和管理端口
使用netstat
命令
3. Linux基础命令
3.1 文件管理相关命令
-
创建文件:可以使用
touch
命令创建空文件。 -
创建目录:使用
mkdir
命令。 -
目录切换:使用
cd
命令。 -
显示所在目录:使用
pwd
命令。 -
查看文件内容:如使用
cat
直接显示文件全部内容,more
和less
可以分页查看。 -
编辑文件:如
vi
或vim
等编辑器。 -
复制文件:用
cp
命令。 -
创建文件链接:用
ln
命令。- -s:创建软链接(符号链接)也是最常用的
-
移动文件:通过
mv
命令。 -
删除文件:使用
rm
命令。 -
删除目录:
rmdir
(只能删除空目录)或rm -r
(可删除非空目录)。 -
查找文件:可以用
find
命令。 -
查看文件或目录的详细信息:使用
ls
命令,如使用ls -l
查看目录下文件的详细信息。 -
处理文件:进行复杂的文件操作,可以使用
sed
命令。
3.2 进程管理相关命令
-
ps:查看正在运行的进程
-
top:动态显示正在运行的进程
-
pstree:树状查看正在运行的进程
-
pgrep:用于查找进程
-
nice:更改进程的优先级
-
jobs:显示进程的相关信息
-
bg 和 fg:将进程调入后台
-
kill:杀死进程
nvidia-smi命令
是一个命令行工具,用于监控 NVIDIA GPU 的状态和性能,以及管理 GPU 相关的任务
4. Conda
一个开源的包管理和环境管理工具, 主要用于简化软件包的安装、依赖管理和隔离虚拟环境。
4.1 两个核心功能
包管理:Conda 可以安装、更新、卸载软件包,并自动解决依赖问题。
环境管理:Conda 允许用户创建和管理多个独立的虚拟环境,每个环境可以有不同的包和工具。
4.2 Conda 的基本操作
-
检查 Conda 版本
1 | conda --version |
-
创建虚拟环境
1 | conda create --name myenv python=3.9 |
-
myenv
是虚拟环境的名称。 -
python=3.9
指定了该环境将使用 Python 3.9。
-
激活和退出环境
1 | conda activate myenv |
1 | conda deactivate |
-
安装软件包
安装软件包时,Conda 会自动处理依赖问题。使用 conda install
安装包。
1 | conda install numpy pandas |
这会在当前激活的环境中安装 numpy
和 pandas
。
-
更新软件包
1 | conda update numpy |
-
列出创建的所有虚拟环境
1 | conda env list |
-
删除虚拟环境
1 | conda env remove --name myenv |
-
导出和导入环境
Conda 允许你导出当前环境的所有包列表,以便于在其他系统上重建相同的环境。
-
导出环境:
1
conda env export > environment.yml
-
从导出的
.yml
文件创建新环境:1
conda env create -f environment.yml
-
添加其他的源
1 | conda config --add [url] |
Lv0-Python基础
1. 环境准备
1.1 下载miniconda
anaconda和miniconda都可以, 推荐后者
清华源miniconda下载链接: 清华大学开源软件镜像站 | Tsinghua Open Source Mirror(建议选择python3.9以上的版本,比如Miniconda3-py310_24.5.0)
1.2 换源
进入命令行开始进行换源,Windows可以直接打开miniconda powershell promt。
首先将pip替换为清华源,只需要一条命令
1 | pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple |
接着我们来给conda替换成清华源。各系统都可以通过修改用户目录下的 .condarc
文件来修改镜像源。Windows 用户无法直接创建名为 .condarc
的文件,可先执行 conda config --set show_channel_urls yes
生成该文件之后再修改。在用户目录找到.condarc
文件后,使用文本编辑器打开,将下面的内容复制进去并保存。
1 | channels: - defaults show_channel_urls: true default_channels: |
接着在命令行中运行 conda clean -i
清除索引缓存,保证用的是镜像站提供的索引。