本文参考实战营提供的教程: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
- ssh: 这是用于安全外壳协议(SSH)的命令行工具,用于远程登录到另一台计算机。
- -p 38089: 这个选项指定了 SSH 连接所使用的端口号。在这个例子中,SSH 连接将通过端口 38089,而不是默认的端口 22。
- root@ssh.intern-ai.org.cn : 这里的
root
是要登录的用户名,ssh.intern-ai.org.cn
是目标主机的域名或 IP 地址。也就是说,命令的目的是以root
用户身份登录到ssh.intern-ai.org.cn
这台服务器。 - -o StrictHostKeyChecking=no : 这个选项用于配置 SSH 客户端的行为。
StrictHostKeyChecking=no
表示在连接到新主机时,不会检查主机密钥的有效性。这意味着如果是第一次连接到该主机,SSH 客户端不会提示用户确认主机密钥,从而自动接受它。这在某些情况下可能会带来安全风险,因为它可能允许中间人攻击。 - -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进行文本编辑。加油~