wiki/docs/registry.md
Dict Xiong ec119bdbf8 nasp.ob.ac.cn -> nasp.fit (#4)
Reviewed-on: #4
Co-authored-by: Dict Xiong <me@beardic.cn>
Co-committed-by: Dict Xiong <me@beardic.cn>
2024-06-21 10:48:07 +08:00

95 lines
4.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 集群注册登录说明
集群登录账户通过[NASP Registry](https://git.nasp.fit/NASP/registry)仓库管理。
## 使用方法
集群的跳板机(`nasp.fit:36022`)、重装后的实验机(`g1`-`g16`),均强制使用秘钥对的方法登录,不能通过密码登录。如果你没有现成的秘钥对,需要先创建一个。
你需要把**公钥**上传到仓库的`/authorized_keys/<your_user_name>/`目录下。路径中的用户名将成为你在实验机上的用户名需要满足unix用户名标准以小写字母开头只能包含小写字母、数字、连字符和下划线。你可以用下面的命令测试你的用户名
```bash
check_username() {
if ( echo $1 | grep -qxE "^[a-z][-a-z0-9_]*\$" ); then
echo "GOOD"
else
echo "BAD"
fi
}
check_username "111"
# BAD
check_username "a111"
# GOOD
```
**注意:使用非法的用户名可能导致集群配置崩溃!**
`/authorized_keys/<your_user_name>/`目录下可以包含一个或多个文件,每个文件中可以包含一个或多个(由换行符分隔开的)公钥,可以按照你的喜好安置文件。
[NASP Registry](https://git.nasp.fit/NASP/registry)仓库的主分支main受到保护用户无法直接向其推送更新。所以你需要
- 如果你是新用户联系管理员把你加入NASP组织
- 克隆仓库到本地,创建一个新的分支:`git clone https://git.nasp.fit/NASP/registry && cd registry && git checkout -b <your_branch_name> `
- 根据上面的指导,添加你的公钥;
- 在修改完成之后,提交修改,推送新分支到远端:`git add -A && git commit -m "add my key" && git push -u origin <your_branch_name>`
- 在网站上创建[合并请求mr](https://git.nasp.fit/NASP/registry/compare/main...main),拉取从你的分支合并到主分支;可参考:[#41](https://git.nasp.fit/NASP/registry/pulls/41)
- 找到另一位在NASP组织内的同学让其批准你的合并请求如图![](attachments/6386bc2c5a9d3dc7dc0c9ee5a4b67ed.png)
- 随后,你可以进行合并操作(创建压缩提交),并删除你的分支。
至多五分钟后,你就可以登录跳板机。跳板机的地址是`nasp.fit`,用户名固定为`ssh`,端口号`36022`
```bash
ssh -p 36022 ssh@nasp.fit
```
随后,在跳板机上,你可以用你的用户名登录实验机(端口号`12022`
> 如果你没有使用SSH Agent下面这条命令可能会认证失败提示输入密码。原因是实验机要求使用公私钥认证但私钥存在你本地电脑上而不在跳板机上。使用SSH Agent可以让你本机的私钥在跳板机上工作否则请跳过下面这条命令直接使用`ProxyJump`选项。
```bash
ssh -p 12022 <your_user_name>@g7
```
通过配置ssh的`ProxyJump`选项,你可以将上两步操作合二为一,做到跳板机对用户透明:
```bash
# the same for scp/sftp
ssh -p 12022 -o ProxyJump=ssh@nasp.fit:36022 <your_user_name>@g7
```
或者在`~/.ssh/config`里面配置:
```
Host g7
HostName g7
User <your_user_name>
Port 12022
ProxyJump ssh@nasp.fit:36022
```
从而能够在vscode中远程连接。
### 疑难解答
如果遇到任何连接不上的问题,请加入`-v`选项查看日志:
```
# 检查到跳板机的连接性
ssh -v -i path/to/your/private_key -p 36022 ssh@nasp.fit
# 检查到实验机的连接性
ssh -v -i path/to/your/private_key -p 12022 -o ProxyJump=ssh@nasp.fit:36022 <your_user_name>@g7
```
如果你无法解决连接问题,请联系集群管理员协助。
## 目录结构
- `authorized_keys` 用户公钥
- 若干以用户名命名的文件夹
- 若干用户公钥文件
- `authorized_keys` 历史遗留的公钥(将被移除)
- `scripts` 若干配置脚本
- `jumpserver_cron.sh` 跳板机上的定时任务脚本
- `jumpserver_deploy.sh` 跳板机部署脚本
- `testbed_cron.sh` 实验机上的定时任务脚本
- `testbed_deploy.sh` 实验机部署脚本
- `nasp` nasp用户组的sudo配置