登录

获取交我算帐号后,可通过浏览器登录可视化平台 HPC Studio,也可通过传统的 SSH 登录。下面将介绍 SSH 登录方法。

通过 SSH 登录集群

本文主要内容:

  • 使用 SSH 登录集群的注意事项;

  • 首次登录准备,如信息采集、客户端下载、SSH 登录、SSH 文件传输、无密码登录等;

  • 故障排除和反馈。

注意事项

  • 交我算帐号仅限于同一课题组的成员使用,请勿将帐号借给他人使用。

  • 请妥善保管好您的帐号密码,不要告知他人。管理员不会要求您提供密码。

  • 恶意的 SSH 客户端软件会窃取您的密码,请在官网下载正版授权 SSH 客户端软件。

  • 登录集群后,请不要跳转到其他登录节点。任务完成后请关闭 SSH 会话。

  • 若无法登录,请检查输入密码或确认 IP 地址是否正确。您可以参考故障排除和反馈,将诊断信息发送给HPC 邮箱

SSH 登录

帐号开通后您会收到含有以下内容的邮件,包含帐号用户名和密码用于登录集群。登录集群有两种方式:SSH 命令行登录、SSH 客户端登录。

Username:YOUR_USERNAMEPassword:YOUR_PASSWORD

登录方法一:命令行登录

  • 思源一号

$ ssh username@sylogin.hpc.sjtu.edu.cn
  • π 2.0 和 AI 平台

$ ssh username@pilogin.hpc.sjtu.edu.cn
  • ARM 平台(限校内 IP,或使用 SJTU VPN)

$ ssh username@armlogin.hpc.sjtu.edu.cn

说明:

  • 登录节点 IP 地址(或主机名)分别为 sylogin.hpc.sjtu.edu.cn(思源一号)、pilogin.hpc.sjtu.edu.cn(π 2.0 和 AI)、armlogin.hpc.sjtu.edu.cn(ARM)

  • 通过上述命令登录,会自动分配到多个登录节点之一

  • SSH 端口均为默认值 22

登录方法二:客户端登录

Windows 推荐使用 Putty 免费客户端,下载后双击即可运行使用。可至Putty 官网下载。Linux / Unix / Mac 操作系统拥有自己的 SSH 客户端,包括 ssh, scp, sftp 等。

下面介绍 Windows 用户使用 Putty 客户端登录思源一号。

启动客户端 Putty,填写登录节点地址 sylogin.hpc.sjtu.edu.cn (适用于思源一号),或 pilogin.hpc.sjtu.edu.cn (适用于 π 2.0 和 AI 集群),端口号采用默认值 22,然后点 Open 按钮,如下图所示:

../_images/putty1.png

在终端窗口中,输入您的 SSH 用户名和密码进行登录:

../_images/putty2.png

提示:输入密码时,不显示字符,请照常进行操作,然后按回车键登录。

通过 SSH 传输文件

登录节点资源有限,不推荐在登录节点直接进行大批量的数据传输。交我算HPC+AI平台提供了专门用于数据传输的节点,登录该节点后可以通过rsync,scp等方式将个人目录下的数据下载到本地,或者反向上传本地数据到个人目录。详情请参考具体请参考数据传输

无密码登录

提示:“无密码登录”仅适用于使用 SSH 命令行工具的 Linux/ UNIX / Mac 用户

“无密码登录”使您无需输入用户名和密码即可登录,它还可以作为服务器的别名来简化使用。无密码登录需要建立从远程主机(集群的登录节点)到本地主机(您自己的计算机)的SSH信任关系。建立信任关系后,双方将通过 SSH 密钥对进行身份验证。

首先,您需要在本地主机上生成的 SSH 密钥对。为安全起见,集群要求使用密码短语 (passphrase) 来保护密钥对。使用密码短语来保护密钥对,每次双方身份验证时都需要输入密码。

$ ssh-keygen -t rsa

接下来屏幕会显示:

Generating public/private rsa key pair. Enter fileinwhich to save the key(/XXX/XXX/.ssh/id_rsa):# 存储地址,默认回车即可Enter passphrase(emptyforno passphrase):# 请设置密码短语,并记住。输入的时候屏幕无显示Enter same passphrase again:# 再输入一遍密码短语

在无密码短语的情况下,您的私钥未经加密就存储在您的硬盘上,任何人拿到您的私钥都可以随意的访问对应的SSH服务器。

ssh-keygen 将在 ~/.ssh 中生成一个密钥对,包含两个文件:id_rsa(需保留的私钥),和id_rsa.pub可作为您的身份发送的公钥)。然后,使用 ssh-copy-id 将本地主机的公钥 id_rsa.pub添加到远程主机的信任列表中。实际上,ssh-copy-id 所做的就是将id_rsa.pub的内容添加到远程主机的文件 ~/.ssh/authorized_keys 中。

(在自己电脑上)$ ssh-copy-id YOUR_USERNAME@TARGET_IP

若手动自行在服务器上添加 authorized_keys 文件,需确保 authorized_keys 文件的权限为 600:

(在集群上)$ chmod600~/.ssh/authorized_keys
../_images/sshfile.png

我们还可以将连接参数写入 ~/.ssh/config 中,以使其简洁明了。 新建或编辑文件 ~/.ssh/config:

$ EDIT ~/.ssh/config

还需分配以下内容: 主机分配远程主机的别名,主机名是远程主机的真实域名或IP地址,端口分配 SSH 端口,用户分配 SSH 用户名。

HosthpcHostNameTARGET_IPUserYOUR_USERNAME

您需要确保此文件的权限正确:

$ chmod600~/.ssh/config

然后,您只需输入以下内容即可登录集群:

$ ssh hpc

当 SSH 密钥对发生泄漏,请立即清理本地电脑 .ssh 文件夹里的密钥对,并重新在本地生成密钥对(生成时请设置密码短语)。另外请删除集群上的 ~/.ssh/authorized_keys 文件。

如何重新生成密钥对

(在集群上)$ rm -f ~/.ssh/authorized_keys# 清除服务器上原有的 authorized_keys(在自己电脑上)$ rm ~/.ssh/id*# 清除本地 .ssh 文件夹中的密钥对(在自己电脑上)$ ssh-keygen -t rsa# 在本地重新生成密钥对。第二个问题,设置密码短语 (passphrase),并记住密码短语(在自己电脑上)$ ssh-keygen -R sylogin.hpc.sjtu.edu.cn# 清理本地 known_hosts 里关于集群的条目(在自己电脑上)$ ssh-copy-id YOUR_USERNAME@TARGET_IP# 将本地新的公钥发给服务器,存在服务器的 authorized_keys 文件里

SSH 重置 known_hosts

avater若遇到上方图片中的问题,请重置 known_hosts,命令如下:

(在自己电脑上)$ ssh-keygen -R sylogin.hpc.sjtu.edu.cn

调试 SSH 登录问题

有多种原因可能会阻止您登录到集群。

  1. 连续多次错输密码会被临时封禁 1 小时。集群登录节点设置了 fail2ban 服务,多次输入密码错误后会被临时封禁 1 小时。

  2. 若在登录节点运行计算密集的作业,程序会被自动查杀,您的帐号会被加入到黑名单,并在 30-120 分钟内无法登录。

若需重置密码,请使用或抄送帐号负责人邮箱发送邮件到HPC 邮箱,我们将会在 1 个工作日内响应您的申请。

排查登录问题,还可以使用 ping 命令检查您的电脑和集群连接状态。

$ ping sylogin.hpc.sjtu.edu.cn

登录常掉线的问题

如果 SSH 客户端长时间静默后,SSH 服务器端会自动断开相关会话。要解决这个,需要调整 SSH 的 keepalive 值,设置一个较长的静默时长阈值。

Mac/Linux用户

对于 Mac/Linux 用户,并且使用操作系统原生的终端 (terminal),需要修改$HOME/.ssh/config。具体的,在文件中添加如下内容:

Host pi-sjtu-login: HostName sylogin.hpc.sjtu.edu.cn ServerAliveInterval240

其中 ServerAliveInterval 后的值即为阈值,单位为秒,用户可根据需要自行调整。

或者为了对所有的服务器设置长静默阈值:

Host * ServerAliveInterval240

之后保持config文件为只可读:

chmod600~/.ssh/config

Windows SSH 客户端用户

这里我们以 Putty 为例。市面有不同的 SSH 客户端,您可以根据自身情况自行搜索您使用的 SSH 客户端的设置方法。

在 Putty的 Session 的属性中,Connection->Sendingofnullpacketstokeepsessionactive->Secondsbetweenkeepalives(0toturnoff)后的文本框中,输入对应的值,如 240。

Tmux

Tmux是一个终端复用器(terminal multiplexer)。如果您有使用screen的经历的话,您可以理解为Tmux是screen的不同实现软件。本教程将讲解Tmux的基础用法。

Tmux是什么?

会话与进程

命令行的典型用法是打开终端(terminal)后,在里面输入指令。用户的这种与计算机交互的手段,称为会话(session)。

在会话中,通过命令行启动的所有进程均与会话进程绑定。当会话进程终止时,该会话启动的所有进程也会随之强行结束。

一点最常见的例子就是通过SSH连接到远程计算机。当SSH连接因为网络等原因断开时,那么SSH会话就被终止,这次会话启动的任务也会被强制结束。

为了解决这个问题,一种手段就是用户终端窗口与会话“解绑”。即关闭用户端窗口,仍然维持该会话,进而保证用户进程不变。

Tmux的作用

Tmux就是这样一款会话与窗口的“解绑”工具。

(1)它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。 (2)它可以让新窗口"接入"已经存在的会话。 (3)它允许每个会话有多个连接窗口,因此可以多人实时共享会话。 (4)它还支持窗口任意的垂直和水平拆分

基本用法

安装

集群中已经默认安装了Tmux,无须操作。如果您需要在自己的服务器上安装Tmux,请参考以下指令:

# Ubuntu 或 Debian$ sudo apt-get install tmux# CentOS 或 Fedora$ sudo yum install tmux# Mac$ brew install tmux
启动与退出

直接在终端中键入tmux指令,即可进入Tmux窗口。

$ tmux

上面命令会启动 Tmux 窗口,底部有一个状态栏。状态栏的左侧是窗口信息(编号和名称),右侧是系统信息。

../_images/tmux_1.png

按下Ctrl+d或者显式输入exit命令,就可以退出 Tmux 窗口。

$exit

快捷键

Tmux有大量的快捷键。所有的快捷键都要使用Ctrl+b作为前缀唤醒。我们将会在后续章节中讲解快捷键的具体使用。

会话管理

新建会话

第一个启动的会话名为0,之后是12一次类推。

但是有时候我们希望为会话起名以方便区分。

$ tmux new -s SESSION_NAME

以上指令启动了一个名为SESSION_NAME的会话。

分离会话

如果我们想离开会话,但又不想关闭会话,有两种方式。按下Ctrl+bd或者tmuxdetach指令,将会分离会话与窗口

$ tmux detach

后面一种方法要求当前会话无正在运行的进程,即保证终端可操作。我们更推荐使用前者。

查看会话

要查看当前已有会话,使用tmuxls指令。

$ tmux ls

接入会话

tmuxattach命令用于重新接入某个已存在的会话。

# 使用会话编号$ tmux attach -t0# 使用会话名称$ tmux attach -t SESSION_NAME

杀死会话

tmuxkill-session命令用于杀死某个会话。

# 使用会话编号$ tmux kill-session -t0# 使用会话名称$ tmux kill-session -t SESSION_NAME

切换会话

tmuxswitch命令用于切换会话。

# 使用会话编号$ tmux switch -t0# 使用会话名称$ tmux switch -t SESSION_NAME

Ctrl+bs可以快捷地查看并切换会话

重命名会话

tmuxrename-session命令用于重命名会话。

# 将0号会话重命名为SESSION_NAME$ tmux rename-session -t0SESSION_NAME

对应快捷键为Ctrl+b$

窗格(window)操作

Tmux可以将窗口分成多个窗格(window),每个窗格运行不同的命令。以下命令都是在Tmux窗口中执行。

划分窗格

tmuxsplit-window命令用来划分窗格。

# 划分上下两个窗格$ tmux split-window# 划分左右两个窗格$ tmux split-window -h
../_images/tmux_2.png

对应快捷键为Ctrl+b"Ctrl+b%

移动光标

tmuxselect-pane命令用来移动光标位置。

# 光标切换到上方窗格$ tmuxselect-pane -U# 光标切换到下方窗格$ tmuxselect-pane -D# 光标切换到左边窗格$ tmuxselect-pane -L# 光标切换到右边窗格$ tmuxselect-pane -R

对应快捷键为Ctrl+bCtrl+bCtrl+bCtrl+b

窗格快捷键

$ Ctrl+b %:划分左右两个窗格。 $ Ctrl+b":划分上下两个窗格。$Ctrl+b :光标切换到其他窗格。是指向要切换到的窗格的方向键,比如切换到下方窗格,就按方向键↓。$Ctrl+b ;:光标切换到上一个窗格。$Ctrl+b o:光标切换到下一个窗格。$Ctrl+b {:当前窗格左移。$Ctrl+b }:当前窗格右移。$Ctrl+b Ctrl+o:当前窗格上移。$Ctrl+b Alt+o:当前窗格下移。$Ctrl+b x:关闭当前窗格。$Ctrl+b !:将当前窗格拆分为一个独立窗口。$Ctrl+b z:当前窗格全屏显示,再使用一次会变回原来大小。$Ctrl+b Ctrl+:按箭头方向调整窗格大小。$Ctrl+b q:显示窗格编号。

VS Code

Visual Studio Code(简称VS Code)是一款由微软开发且跨平台的免费源代码编辑器。 该软件支持语法高亮、代码自动补全(又称IntelliSense)、代码重构功能,并且内置了命令行工具和Git 版本控制系统。

使用VS Code连接集群

VS Code经过配置,可以远程连接到Pi集群及思源一号,在本地进行远程的开发部署工作。配置VS Code进行远程开发主要分为4个步骤:

  1. 在本地电脑安装兼容的SSH客户端;

  2. 配置SSH免密登录集群;

  3. 在本地电脑安装VS Code客户端并安装相应插件;

  4. 使用VS Code远程访问;

安装兼容的SSH客户端

首先需要在本地电脑上安装OpenSSH兼容的SSH客户端(Putty不支持)。

对于Mac,系统自带的SSH客户端就可满足需求,无需安装。

对于linux用户,需要安装openssh-client

运行

$sudo apt-get install openssh-client

或者

$sudo yum install openssh-client

对于 Windows 用户,请安装 Windows OpenSSH Client。Windows 用户可以使用 Windows 设置或者 PowerShell 来安装该客户端,具体请参考链接安装 OpenSSH

SSH免密登录集群

关于SSH免密登录的配置请参考ssh免密登录

一个可参考的~/.ssh/config文件内容如下:

Host x86 HostName pilogin.hpc.sjtu.edu.cn User$YOUR_USERNAMEPort22Host arm HostName kplogin1.hpc.sjtu.edu.cn User$YOUR_USERNAMEPort22Host siyuan HostName sylogin.hpc.sjtu.edu.cn User$YOUR_USERNAMEPort22

配置完毕后请在本地终端测试是否能访问集群。

$ssh siyuanEnter passphrase for key '/Users/YOUR_HOME/.ssh/id_rsa':Last failed login: Wed Jun 22 18:34:38 CST 2022 from xxx.xxx.xxx.xx on ssh:nottyThere were 2 failed login attempts since the last successful login.Last login: Wed Jun 22 18:28:52 2022 from xxx.xxx.xxx.xx

本地安装 VS Code 及插件

请至VS code download下载于本地操作系统对应的 VS Code安装包并根据步骤安装。

打开VS Code软件, 安装 Remote SSH插件。

../_images/remote-ssh_install.png

使用VS Code 访问集群

安装完毕后点开左方工具栏中remote-ssh插件的图标,该插件会自动读取~/.ssh/config中的主机名。

../_images/remote-ssh-servers.png

右键相应的主机名即可选择连接主机:

../_images/remote-ssh-click.png

此时会弹出窗口要求输入先前设置的passphrase:

../_images/passphrase.png

输入密码后即可链接至远程主机:

../_images/remote-ssh-connection.png

连接后可选择打开文件夹或者终端:

../_images/remote-ssh-file-terminal.png

X Server

图形视窗系统

X11是UNIX上图形视窗系统的标准规范,主要分为3个部分:X Server(X服务器)、X Client(X客户端)、Window Manager(窗口管理器)。X Server是整个X Window System的中心,协调X客户端和窗口管理器的通信。

使用X Server显示图形界面

XServer运行在本地,推荐MobaXterm终端工具,包含了Xserver功能。使用前需要确认开启了X11-Forwarding,并启动Xserver

启动步骤

以思源一号为例:

module load rdp# 加载远程桌面及VNC启动脚本sbatch -p 64c512g -n4-J rdp --wrap="rdp"# 提交计算节点执行squeue# 查看分配到的节点ssh -X node055# 通过登录节点登录到计算节点,需要-X参数module load relion# 运行GUI程序relion
../_images/rdp.png

警告

XServer显示图形界面的方式需要保持SSH连接,不然GUI程序会中断运行。

参考资料