连接到服务器

连接到服务器

关于“如何连接到服务器”,最常见的情况有两种:

  • 使用 FDTD Solutions 做计算时,通常是在 Windows 上,使用 Windows 自带的远程桌面,通过 RDP 协议,连接到远程服务器操作。 参考连接 FDTD 服务器
  • 使用 VASP 做计算时,通常是在 Windows 上,使用 WinSCP 和 PuTTY 这两个软件,通过 SSH 协议,连接到远程服务器操作。这可以进一步分为:
    • 使用学校超算上的 jykang 用户时,使用密钥连接,并且需要在使用 SSH 协议连接时额外开启名为“SSH 代理转发”的功能。 参考连接 VASP 服务器,开启 SSH 代理转发
    • 吴志明老师的学生使用 srv1 时,使用密码连接,不使用“SSH 代理转发”(“SSH 代理转发”必须使用密钥才可能开启)。 参考连接 VASP 服务器,使用密码
    • 其它情况,使用密钥连接,是否开启“SSH 代理转发”都可以连接(不开启时操作起来更简单,开启后可以方便服务器之间互相连接、对拷文件)。 参考连接 VASP 服务器,不开启 SSH 代理转发

以下先分别介绍这四种最常见情况下的操作,再介绍其它不常用的内容。

四种最常见情况

连接 VASP 服务器,开启 SSH 代理转发

接下来介绍在 Windows 上,使用 WinSCP 和 PuTTY 这两个软件,使用密钥,通过 SSH 协议连接到远程服务器,并且开启“SSH 代理转发”的操作。

你需要做下面三件事情:

  1. 启动 Pageant 并添加密钥。每次登陆服务器前都需要做这个事情。
  2. 配置 PuTTY,使 PuTTY 在每次登陆时不直接使用密钥,而是利用 Pageant 完成认证。这一步骤只需要执行一次,之后打开 PuTTY 后不用重新配置。
  3. 配置 WinSCP,使 WinSCP 在每次登陆时不直接使用密钥,而是利用 Pageant 完成认证。这一步骤只需要执行一次,之后打开 WinSCP 后不用重新配置。

接下来将分别说明这三件事怎么做。

配置 Pageant
  1. 找到 Pageant 程序
    Pageant 会随着 PuTTY 一起安装,一般来说您可以直接在开始菜单中搜索“pageant”找到它,也可以在 PuTTY 的安装目录中找到它。
  2. 启动 Pageant
    启动后可能没有任何反应,也可能有一个黑框闪过,这是正常的。只要右下角的系统托盘中出现了 Pageant 的图标就可以了。
  3. 添加密钥
    双击 Pageant 图标,打开 Pageant 窗口。选择“Add Key”,然后选择您的密钥文件。
ℹ️
无论是使用 WinSCP 还是 PuTTY,每次使用前,都需要如此启动 Pageant 并添加密钥。 如果您希望 Pageant 启动后自动添加密钥或开机时自动启动 Pageant,参见:自动启动 Pageant 并添加密钥
配置 PuTTY
  1. 在 Session 中设置“Host Name (or IP address)”为服务器的地址和端口。 各个服务器的地址和端口请参考连接协议和参数中的 SSH 协议部分。
  2. 在 Connection->SSH->Auth,勾选“Attempt authentication using Pageant”和“Allow agent forwarding”。
  3. 在 Connection->SSH->Auth->Credentials,清空“Private key file for authentication”。
  4. (选做但推荐)在 Connection->Data中,将“Auto-login username”设置为用户名,这样每次登陆时就不需要手动输入用户名了。 各个服务器的用户名请参考连接协议和参数
  5. 回到Session,在“Saved Sessions”中输入任意一个名字(例如 jykang)并点击“Save”,以保存配置。之后双击这个配置文件的名字即可登陆。
配置 WinSCP
  1. 在登陆界面,点击“新建站点”。 设置“文件协议”为 SCP,“主机名”(即地址)、“端口号”、“用户名”参考连接协议和参数中的SSH协议部分,密码为空。 然后点击右下角“高级”继续修改设置。
ℹ️
文件协议设置为 SFTP 大多功能也可以使用,但相比于 SCP 协议,SFTP 可用的功能较少(例如不能远程复制)。因此建议使用 SCP。
  1. 在 SSH->Authentication,勾选“使用 Pageant 进行认证”,勾选“允许代理转发”,清空“密钥文件”,然后点击“确定”,再点击“保存”。
  2. (选做)如果您需要通过 WinSCP 打开 PuTTY 的话,需要在 WinSCP 主界面->工具->选项->集成->应用程序路径中, 在原来的基础上增加 -A 参数。
ℹ️
如果难以直接在文本框中修改,就把它复制到记事本里修改,然后再复制回去。
ℹ️
如果您确认已经按照教程设置好了却仍然不能连接,可以尝试将 WinSCP 和 PuTTY 都更新到最新。已知非常旧的版本在设置过程中会出现问题。 我测试使用的版本是:PuTTY 0.78 和 WinSCP 6.3.3。

连接 VASP 服务器,不开启 SSH 代理转发

接下来介绍在 Windows 上,使用 WinSCP 和 PuTTY 这两个软件,使用密钥,通过 SSH 协议连接到远程服务器,并且不开启“SSH 代理转发”的操作。

配置 PuTTY
  1. 在 Session 中设置“Host Name (or IP address)”和“Port”为对应服务器的地址和端口。 参考服务器配置中的 SSH 协议部分。
  2. 在 Connection->SSH->Auth->Credentials,在“Private key file for authentication”中选择自己密钥文件。 如果之后把密钥文件移动到了别的地方,需要在这里重新选择。
  3. (选做但推荐)在 Connection->Data中,将“Auto-login username”设置为自己的用户名,这样每次登陆时就不需要手动输入用户名了。 用户名参考服务器配置
  4. 回到 Session,在“Saved Sessions”中输入任意一个名字(例如 jykang)并点击“Save”,以保存配置。之后双击这个配置文件的名字即可登陆。
配置 WinSCP
  1. 在登陆界面,点击“新建站点”。 设置“文件协议”为 SCP,“主机名”(即地址)、“端口号”、“用户名”参考服务器配置中的 SSH 协议部分,密码为空。 然后点击右下角“高级”继续修改设置。
ℹ️
文件协议设置为 SFTP 大多功能也可以使用,但相比于 SCP 协议,SFTP 可用的功能较少(例如不能远程复制)。因此建议使用 SCP。
  1. 在 SSH->Authentication,选择“密钥文件”,然后点击“确定”,再点击“保存”。如果之后把密钥文件移动到了别的地方,需要在这里重新选择。

连接 VASP 服务器,使用密码

接下来介绍在 Windows 上,使用 WinSCP 和 PuTTY 这两个软件,使用密码,通过 SSH 协议连接到远程服务器。

配置 PuTTY
  1. 在 Session 中设置“Host Name (or IP address)”和“Port”为对应服务器的地址和端口。 参考服务器配置中的SSH协议部分。
  2. (选做但推荐)在 Connection->Data中,将“Auto-login username”设置为自己的用户名,这样每次登陆时就不需要手动输入用户名了。 用户名参考服务器配置中的SSH协议部分。
  3. 回到 Session,在“Saved Sessions”中输入任意一个名字(例如 jykang)并点击“Save”,以保存配置。之后双击这个配置文件的名字即可登陆。 输入密码的过程中,屏幕上既不会显示密码也不会显示星号,这是正常的,把密码输完回车就行。
配置 WinSCP

在登陆界面,点击“新建站点”。 设置“文件协议”为 SCP,“主机名”(即地址)、“端口号”、“用户名”参考服务器配置中的 SSH 协议部分,并填入密码。 再点击“保存”。

ℹ️
文件协议设置为 SFTP 大多功能也可以使用,但相比于 SCP 协议,SFTP 可用的功能较少(例如不能远程复制)。因此建议使用 SCP。

连接 FDTD 服务器

接下来介绍在 Windows 上,使用 Windows 自带的远程桌面客户端,通过 RDP 协议,连接到 Windows 远程服务器的操作。 其它使用 RDP 连接的方法参考使用 RDP 远程桌面

配置 Windows 自带远程桌面
  1. 在开始菜单中搜索“远程”,打开“远程桌面连接”。
  2. 在“计算机”中输入服务器地址,然后点击“连接”。服务器地址参考连接协议和参数中的 RDP 协议部分。
  3. (选做)打开“显示选项”,填入用户名,之后就不需要每次输入了。

其它内容

使用 OpenSSH

支持 SSH 协议的有好多好多客户端(不论命令行还是图形界面),最常用的是 OpenSSH。 现在的系统大概已经自带了 OpenSSH 客户端,所以可以直接在命令行中使用。

连接到服务器的命令是:

ssh -p 端口 用户名@服务器地址

要传输文件,可以使用 scp

# 上传文件
scp -rP 端口 本地路径 用户名@服务器地址:远程路径
# 下载文件
scp -rP 端口 用户名@服务器地址:远程路径 本地路径

传输文件时如果要断点续传,可以使用 rsync

# 下载
rsync -rlP -e "ssh -p 端口" 用户名@服务器地址:远程路径 本地路径
# 端口为 22 时可以省略一些参数
rsync -rlP 用户名@服务器地址:远程路径 本地路径
# 上传就是反过来
rsync -rlP -e "ssh -p 端口" 本地路径 用户名@服务器地址:远程路径

要使用 SSH agent forwarding,稍微麻烦一点。

  1. 在本地运行一个 SSH agent,并导出对应的环境变量:eval $(ssh-agent)
  2. 将要使用的密钥添加到 agent 中:ssh-add 密钥文件
  3. 在连接服务器时把 agent 转发出去:ssh -o ForwardAgent=yes -p 端口 用户名@服务器地址

后两步可以写到 ~/.ssh/config 中来自动完成,例如:

Host jykang
  ForwardAgent yes
  User jykang
  HostName hpc.xmu.edu.cn
  AddKeysToAgent yes

然后 ssh jykang 就可以了。

使用 RDP 远程桌面

没什么好说的,草履虫都会用。 只有一个事情:服务端为 Linux 时(无论客户端是什么),连接时需要手动设置连接类型为“LAN”,详见 RDP 设置连接类型

使用 SMB 协议

SMB 就是 Windows 共享文件夹或者共享打印机的那个协议,客户端和服务端通常会有另外一个名字叫“samba”。

主要优势是在 Windows 上使用方便:

  • 可以直接在资源管理器中输入 \\ 加上服务器地址访问,例如 \\xmupc1.chn.moe。 服务器地址参考服务器配置中的 SMB 协议部分。
  • 也可以将它作为一个网络驱动器添加(地址同样是 \\ 加上服务器地址)。

使用 SSH 在服务器之间建立连接

待补充。