--- weight: 3 title: "连接到服务器" --- 关于“如何连接到服务器”,最常见的情况有两种: * 使用 FDTD Solutions 做计算时,通常是在 Windows 上,使用 Windows 自带的远程桌面,通过 RDP 协议,连接到远程服务器操作。 参考[连接 FDTD 服务器](#连接-fdtd-服务器)。 * 使用 VASP 做计算时,通常是在 Windows 上,使用 WinSCP 和 PuTTY 这两个软件,通过 SSH 协议,连接到远程服务器操作。这可以进一步分为: * 使用学校超算上的 jykang 用户时,使用密钥连接,并且需要在使用 SSH 协议连接时额外开启名为“SSH 代理转发”的功能。 参考[连接 VASP 服务器,开启 SSH 代理转发](#连接-vasp-服务器开启-ssh-代理转发)。 * 吴志明老师的学生使用 srv1 时,使用密码连接,不使用“SSH 代理转发”(“SSH 代理转发”必须使用密钥才可能开启)。 参考[连接 VASP 服务器,使用密码](#连接-vasp-服务器使用密码)。 * 其它情况,使用密钥连接,是否开启“SSH 代理转发”都可以连接(不开启时操作起来更简单,开启后可以方便服务器之间互相连接、对拷文件)。 参考[连接 VASP 服务器,不开启 SSH 代理转发](#连接-vasp-服务器不开启-ssh-代理转发)。 以下先分别介绍这四种最常见情况下的操作,再介绍其它不常用的内容。 ## 四种最常见情况 ### 连接 VASP 服务器,开启 SSH 代理转发 接下来介绍在 Windows 上,使用 WinSCP 和 PuTTY 这两个软件,使用密钥,通过 SSH 协议连接到远程服务器,并且开启“SSH 代理转发”的操作。 你需要做下面三件事情: 1. 启动 Pageant 并添加密钥。**每次登陆服务器前都需要做这个事情。** 2. 配置 PuTTY,使 PuTTY 在每次登陆时不直接使用密钥,而是利用 Pageant 完成认证。这一步骤只需要执行一次,之后打开 PuTTY 后不用重新配置。 3. 配置 WinSCP,使 WinSCP 在每次登陆时不直接使用密钥,而是利用 Pageant 完成认证。这一步骤只需要执行一次,之后打开 WinSCP 后不用重新配置。 接下来将分别说明这三件事怎么做。 {{< details title="配置 Pageant" closed="true" >}} 1. 找到 Pageant 程序
Pageant 会随着 PuTTY 一起安装,一般来说您可以直接在开始菜单中搜索“pageant”找到它,也可以在 PuTTY 的安装目录中找到它。 ![](pageant3.png) 2. 启动 Pageant
启动后可能没有任何反应,也可能有一个黑框闪过,这是正常的。只要右下角的系统托盘中出现了 Pageant 的图标就可以了。 ![](pageant1.png) 3. 添加密钥
双击 Pageant 图标,打开 Pageant 窗口。选择“Add Key”,然后选择您的密钥文件。 ![](pageant2.png) {{< callout type="info" >}} 无论是使用 WinSCP 还是 PuTTY,每次使用前,都需要如此启动 Pageant 并添加密钥。 如果您希望 Pageant 启动后自动添加密钥或开机时自动启动 Pageant,参见:[自动启动 Pageant 并添加密钥](../qa#自动启动-pageant-并添加密钥) {{< /callout >}} {{< /details >}} {{< details title="配置 PuTTY" closed="true" >}} 1. 在 Session 中设置“Host Name (or IP address)”为服务器的地址和端口。 各个服务器的地址和端口请参考[连接协议和参数](../config#连接协议和参数)中的 SSH 协议部分。 ![](putty5.png) 2. 在 Connection->SSH->Auth,勾选“Attempt authentication using Pageant”和“Allow agent forwarding”。 ![](putty1.png) 3. 在 Connection->SSH->Auth->Credentials,清空“Private key file for authentication”。 ![](putty2.png) 4. (选做但推荐)在 Connection->Data中,将“Auto-login username”设置为用户名,这样每次登陆时就不需要手动输入用户名了。 各个服务器的用户名请参考[连接协议和参数](../config#连接协议和参数)。 5. 回到Session,在“Saved Sessions”中输入任意一个名字(例如 `jykang`)并点击“Save”,以保存配置。之后双击这个配置文件的名字即可登陆。 ![](putty4.png) {{< /details >}} {{< details title="配置 WinSCP" closed="true" >}} 1. 在登陆界面,点击“新建站点”。 设置“文件协议”为 `SCP`,“主机名”(即地址)、“端口号”、“用户名”参考[连接协议和参数](../config#连接协议和参数)中的SSH协议部分,密码为空。 然后点击右下角“高级”继续修改设置。 ![](winscp3.png) {{< callout type="info" >}} 文件协议设置为 `SFTP` 大多功能也可以使用,但相比于 SCP 协议,SFTP 可用的功能较少(例如不能远程复制)。因此建议使用 SCP。 {{< /callout >}} 2. 在 SSH->Authentication,勾选“使用 Pageant 进行认证”,勾选“允许代理转发”,清空“密钥文件”,然后点击“确定”,再点击“保存”。 ![](winscp1.png) 3. (选做)如果您需要通过 WinSCP 打开 PuTTY 的话,需要在 WinSCP 主界面->工具->选项->集成->应用程序路径中, 在原来的基础上增加 `-A` 参数。 ![](winscp2.png) {{< callout type="info" >}} 如果难以直接在文本框中修改,就把它复制到记事本里修改,然后再复制回去。 {{< /callout >}} {{< /details >}} {{< callout type="info" >}} 如果您确认已经按照教程设置好了却仍然不能连接,可以尝试将 WinSCP 和 PuTTY 都更新到最新。已知非常旧的版本在设置过程中会出现问题。 我测试使用的版本是:PuTTY 0.78 和 WinSCP 6.3.3。 {{< /callout >}} ### 连接 VASP 服务器,不开启 SSH 代理转发 接下来介绍在 Windows 上,使用 WinSCP 和 PuTTY 这两个软件,使用密钥,通过 SSH 协议连接到远程服务器,并且不开启“SSH 代理转发”的操作。 {{< details title="配置 PuTTY" closed="true" >}} 1. 在 Session 中设置“Host Name (or IP address)”和“Port”为对应服务器的地址和端口。 参考[服务器配置](../config#连接协议和参数)中的 SSH 协议部分。 ![](putty5.png) 2. 在 Connection->SSH->Auth->Credentials,在“Private key file for authentication”中选择自己密钥文件。 如果之后把密钥文件移动到了别的地方,需要在这里重新选择。 ![](putty6.png) 3. (选做但推荐)在 Connection->Data中,将“Auto-login username”设置为自己的用户名,这样每次登陆时就不需要手动输入用户名了。 用户名参考[服务器配置](../config#连接协议和参数)。 4. 回到 Session,在“Saved Sessions”中输入任意一个名字(例如 `jykang`)并点击“Save”,以保存配置。之后双击这个配置文件的名字即可登陆。 ![](putty4.png) {{< /details >}} {{< details title="配置 WinSCP" closed="true" >}} 1. 在登陆界面,点击“新建站点”。 设置“文件协议”为 `SCP`,“主机名”(即地址)、“端口号”、“用户名”参考[服务器配置](../config#连接协议和参数)中的 SSH 协议部分,密码为空。 然后点击右下角“高级”继续修改设置。 ![](winscp3.png) {{< callout type="info" >}} 文件协议设置为 `SFTP` 大多功能也可以使用,但相比于 SCP 协议,SFTP 可用的功能较少(例如不能远程复制)。因此建议使用 SCP。 {{< /callout >}} 2. 在 SSH->Authentication,选择“密钥文件”,然后点击“确定”,再点击“保存”。如果之后把密钥文件移动到了别的地方,需要在这里重新选择。 ![](winscp4.png) {{< /details >}} ### 连接 VASP 服务器,使用密码 接下来介绍在 Windows 上,使用 WinSCP 和 PuTTY 这两个软件,使用密码,通过 SSH 协议连接到远程服务器。 {{< details title="配置 PuTTY" closed="true" >}} 1. 在 Session 中设置“Host Name (or IP address)”和“Port”为对应服务器的地址和端口。 参考[服务器配置](../config#连接协议和参数)中的SSH协议部分。 ![](putty5.png) 2. (选做但推荐)在 Connection->Data中,将“Auto-login username”设置为自己的用户名,这样每次登陆时就不需要手动输入用户名了。 用户名参考[服务器配置](../config#连接协议和参数)中的SSH协议部分。 3. 回到 Session,在“Saved Sessions”中输入任意一个名字(例如 `jykang`)并点击“Save”,以保存配置。之后双击这个配置文件的名字即可登陆。 输入密码的过程中,屏幕上既不会显示密码也不会显示星号,这是正常的,把密码输完回车就行。 ![](putty4.png) {{< /details >}} {{< details title="配置 WinSCP" closed="true" >}} 在登陆界面,点击“新建站点”。 设置“文件协议”为 `SCP`,“主机名”(即地址)、“端口号”、“用户名”参考[服务器配置](../config#连接协议和参数)中的 SSH 协议部分,并填入密码。 再点击“保存”。 ![](winscp3.png) {{< callout type="info" >}} 文件协议设置为 `SFTP` 大多功能也可以使用,但相比于 SCP 协议,SFTP 可用的功能较少(例如不能远程复制)。因此建议使用 SCP。 {{< /callout >}} {{< /details >}} ### 连接 FDTD 服务器 接下来介绍在 Windows 上,使用 Windows 自带的远程桌面客户端,通过 RDP 协议,连接到 Windows 远程服务器的操作。 其它使用 RDP 连接的方法参考[使用 RDP 远程桌面](#使用-rdp-远程桌面)。 {{< details title="配置 Windows 自带远程桌面" closed="true" >}} 1. 在开始菜单中搜索“远程”,打开“远程桌面连接”。 ![](rdp1.png) 1. 在“计算机”中输入服务器地址,然后点击“连接”。服务器地址参考[连接协议和参数](../config#连接协议和参数)中的 RDP 协议部分。 ![](rdp2.png) 2. (选做)打开“显示选项”,填入用户名,之后就不需要每次输入了。 {{< /details >}} ## 其它内容 ### 使用 OpenSSH 支持 SSH 协议的有好多好多客户端(不论命令行还是图形界面),最常用的是 OpenSSH。 现在的系统大概已经自带了 OpenSSH 客户端,所以可以直接在命令行中使用。 连接到服务器的命令是: ```bash ssh -p 端口 用户名@服务器地址 ``` 要传输文件,可以使用 `scp`: ```bash # 上传文件 scp -rP 端口 本地路径 用户名@服务器地址:远程路径 # 下载文件 scp -rP 端口 用户名@服务器地址:远程路径 本地路径 ``` 传输文件时如果要断点续传,可以使用 `rsync`: ```bash # 下载 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` 中来自动完成,例如: ```conf Host jykang ForwardAgent yes User jykang HostName hpc.xmu.edu.cn AddKeysToAgent yes ``` 然后 `ssh jykang` 就可以了。 ### 使用 RDP 远程桌面 没什么好说的,草履虫都会用。 只有一个事情:服务端为 Linux 时(无论客户端是什么),连接时需要手动设置连接类型为“LAN”,详见 [RDP 设置连接类型](../qa#rdp-设置连接类型)。 ### 使用 SMB 协议 SMB 就是 Windows 共享文件夹或者共享打印机的那个协议,客户端和服务端通常会有另外一个名字叫“samba”。 主要优势是在 Windows 上使用方便: * 可以直接在资源管理器中输入 `\\` 加上服务器地址访问,例如 `\\xmupc1.chn.moe`。 服务器地址参考[服务器配置](../config#连接协议和参数)中的 SMB 协议部分。 * 也可以将它作为一个网络驱动器添加(地址同样是 `\\` 加上服务器地址)。 ### 使用 SSH 在服务器之间建立连接 待补充。