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

4.0 KiB
Raw Permalink Blame History

集群注册登录说明

集群登录账户通过NASP Registry仓库管理。

使用方法

集群的跳板机(nasp.fit:36022)、重装后的实验机(g1-g16),均强制使用秘钥对的方法登录,不能通过密码登录。如果你没有现成的秘钥对,需要先创建一个。

你需要把公钥上传到仓库的/authorized_keys/<your_user_name>/目录下。路径中的用户名将成为你在实验机上的用户名需要满足unix用户名标准以小写字母开头只能包含小写字母、数字、连字符和下划线。你可以用下面的命令测试你的用户名

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仓库的主分支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,拉取从你的分支合并到主分支;可参考:#41
  • 找到另一位在NASP组织内的同学让其批准你的合并请求如图
  • 随后,你可以进行合并操作(创建压缩提交),并删除你的分支。

至多五分钟后,你就可以登录跳板机。跳板机的地址是nasp.fit,用户名固定为ssh,端口号36022

ssh -p 36022 ssh@nasp.fit

随后,在跳板机上,你可以用你的用户名登录实验机(端口号12022

如果你没有使用SSH Agent下面这条命令可能会认证失败提示输入密码。原因是实验机要求使用公私钥认证但私钥存在你本地电脑上而不在跳板机上。使用SSH Agent可以让你本机的私钥在跳板机上工作否则请跳过下面这条命令直接使用ProxyJump选项。

ssh -p 12022 <your_user_name>@g7

通过配置ssh的ProxyJump选项,你可以将上两步操作合二为一,做到跳板机对用户透明:

# 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配置