连接到服务器
关于“如何连接到服务器”,最常见的情况有两种:
- 使用 FDTD Solutions 做计算时,通常是在 Windows 上,使用 Windows 自带的远程桌面,通过 RDP 协议,连接到远程服务器操作。 参考连接 FDTD 服务器。
- 使用 VASP 做计算时,通常是在 Windows 上,使用 WinSCP 和 PuTTY 这两个软件,通过 SSH 协议,连接到远程服务器操作。这可以进一步分为:
- 使用学校超算上的 jykang 用户时,使用密钥连接,并且需要在使用 SSH 协议连接时额外开启名为“SSH 代理转发”的功能。 参考连接 VASP 服务器,开启 SSH 代理转发。
- 吴志明老师的学生使用 srv1 时,使用密码连接,不使用“SSH 代理转发”(“SSH 代理转发”必须使用密钥才可能开启)。 参考连接 VASP 服务器,使用密码。
- 其它情况,使用密钥连接,是否开启“SSH 代理转发”都可以连接(不开启时操作起来更简单,开启后可以方便服务器之间互相连接、对拷文件)。 参考连接 VASP 服务器,不开启 SSH 代理转发。
以下先分别介绍这四种最常见情况下的操作,再介绍其它不常用的内容。
SFTP
大多功能也可以使用,但相比于 SCP 协议,SFTP 可用的功能较少(例如不能远程复制)。因此建议使用 SCP。四种最常见情况
连接 VASP 服务器,开启 SSH 代理转发
接下来介绍在 Windows 上,使用 WinSCP 和 PuTTY 这两个软件,使用密钥,通过 SSH 协议连接到远程服务器,并且开启“SSH 代理转发”的操作。
你需要做下面三件事情:
- 启动 Pageant 并添加密钥。每次登陆服务器前都需要做这个事情。
- 配置 PuTTY,使 PuTTY 在每次登陆时不直接使用密钥,而是利用 Pageant 完成认证。这一步骤只需要执行一次,之后打开 PuTTY 后不用重新配置。
- 配置 WinSCP,使 WinSCP 在每次登陆时不直接使用密钥,而是利用 Pageant 完成认证。这一步骤只需要执行一次,之后打开 WinSCP 后不用重新配置。
接下来将分别说明这三件事怎么做。
配置 Pageant
- 找到 Pageant 程序
Pageant 会随着 PuTTY 一起安装,一般来说您可以直接在开始菜单中搜索“pageant”找到它,也可以在 PuTTY 的安装目录中找到它。 - 启动 Pageant
启动后可能没有任何反应,也可能有一个黑框闪过,这是正常的。只要右下角的系统托盘中出现了 Pageant 的图标就可以了。 - 添加密钥
双击 Pageant 图标,打开 Pageant 窗口。选择“Add Key”,然后选择您的密钥文件。
配置 PuTTY
- 在 Session 中设置“Host Name (or IP address)”为服务器的地址和端口。
各个服务器的地址和端口请参考连接协议和参数中的 SSH 协议部分。
- 在 Connection->SSH->Auth,勾选“Attempt authentication using Pageant”和“Allow agent forwarding”。
- 在 Connection->SSH->Auth->Credentials,清空“Private key file for authentication”。
- (选做但推荐)在 Connection->Data中,将“Auto-login username”设置为用户名,这样每次登陆时就不需要手动输入用户名了。 各个服务器的用户名请参考连接协议和参数。
- 回到Session,在“Saved Sessions”中输入任意一个名字(例如
jykang
)并点击“Save”,以保存配置。之后双击这个配置文件的名字即可登陆。
配置 WinSCP
- 在登陆界面,点击“新建站点”。
设置“文件协议”为
SCP
,“主机名”(即地址)、“端口号”、“用户名”参考连接协议和参数中的SSH协议部分,密码为空。 然后点击右下角“高级”继续修改设置。 (文件协议设置为SFTP
大多功能也可以使用,但相比于 SCP 协议,SFTP 可用的功能较少(例如不能远程复制)。因此建议使用 SCP。) - 在 SSH->Authentication,勾选“使用 Pageant 进行认证”,勾选“允许代理转发”,清空“密钥文件”,然后点击“确定”,再点击“保存”。
- (选做)如果您需要通过 WinSCP 打开 PuTTY 的话,需要在 WinSCP 主界面->工具->选项->集成->应用程序路径中,
在原来的基础上增加
-A
参数。如果难以直接在文本框中修改,就把它复制到记事本里修改,然后再复制回去。
连接 VASP 服务器,不开启 SSH 代理转发
接下来介绍在 Windows 上,使用 WinSCP 和 PuTTY 这两个软件,使用密钥,通过 SSH 协议连接到远程服务器,并且不开启“SSH 代理转发”的操作。
配置 PuTTY
- 在 Session 中设置“Host Name (or IP address)”和“Port”为对应服务器的地址和端口。
参考服务器配置中的 SSH 协议部分。
- 在 Connection->SSH->Auth->Credentials,在“Private key file for authentication”中选择自己密钥文件。
如果之后把密钥文件移动到了别的地方,需要在这里重新选择。
- (选做但推荐)在 Connection->Data中,将“Auto-login username”设置为自己的用户名,这样每次登陆时就不需要手动输入用户名了。 用户名参考服务器配置。
- 回到 Session,在“Saved Sessions”中输入任意一个名字(例如
jykang
)并点击“Save”,以保存配置。之后双击这个配置文件的名字即可登陆。
配置 WinSCP
- 在登陆界面,点击“新建站点”。
设置“文件协议”为
SCP
,“主机名”(即地址)、“端口号”、“用户名”参考服务器配置中的 SSH 协议部分,密码为空。 然后点击右下角“高级”继续修改设置。 - 在 SSH->Authentication,选择“密钥文件”,然后点击“确定”,再点击“保存”。如果之后把密钥文件移动到了别的地方,需要在这里重新选择。
连接 VASP 服务器,使用密码
接下来介绍在 Windows 上,使用 WinSCP 和 PuTTY 这两个软件,使用密码,通过 SSH 协议连接到远程服务器。
配置 PuTTY
- 在 Session 中设置“Host Name (or IP address)”和“Port”为对应服务器的地址和端口。
参考服务器配置中的SSH协议部分。
- (选做但推荐)在 Connection->Data中,将“Auto-login username”设置为自己的用户名,这样每次登陆时就不需要手动输入用户名了。 用户名参考服务器配置中的SSH协议部分。
- 回到 Session,在“Saved Sessions”中输入任意一个名字(例如
jykang
)并点击“Save”,以保存配置。之后双击这个配置文件的名字即可登陆。 输入密码的过程中,屏幕上既不会显示密码也不会显示星号,这是正常的,把密码输完回车就行。
配置 WinSCP
连接 FDTD 服务器
接下来介绍在 Windows 上,使用 Windows 自带的远程桌面客户端,通过 RDP 协议,连接到 Windows 远程服务器的操作。 其它使用 RDP 连接的方法参考使用 RDP 远程桌面。
配置 Windows 自带远程桌面
- 在开始菜单中搜索“远程”,打开“远程桌面连接”。
- 在“计算机”中输入服务器地址,然后点击“连接”。服务器地址参考连接协议和参数中的 RDP 协议部分。
- (选做)打开“显示选项”,填入用户名,之后就不需要每次输入了。
其它内容
使用 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,稍微麻烦一点。
- 在本地运行一个 SSH agent,并导出对应的环境变量:
eval $(ssh-agent)
- 将要使用的密钥添加到 agent 中:
ssh-add 密钥文件
- 在连接服务器时把 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 在服务器之间建立连接
要在两个服务器之间传输文件:
- 登陆第一个服务器时,启用 SSH agent forwarding;或者将自己的密钥保存到第一个服务器上。具体操作参考上述内容。
- 在那之后,就可以直接从第二个服务器下载文件到第一个服务器上,例如(假如你已登陆
srv1
):
rsync -rlP srv2.chn.moe:~/myfile.txt .
这样就可以了。
要借助第一个服务器登陆第二个服务器,既可以像上面那样先登陆第一个,然后再登陆第二个,也可以用一个命令完成(本质是一样的):
ssh -J srv1.chn.moe srv2.chn.moe
我管理的服务器之间有 wireguard 相连,可以临时借助它绕过厦大 VPN 连接进来,例如:
ssh -J vps6.chn.moe wireguard.srv2.chn.moe
上面这个功能在 PuTTY 中大概这样设置:
- 首先设置一个名为
vps6
的会话。- 在 Session 页,填入
vps6.chn.moe
作为 Host Name。 - 在 Connection -> SSH -> Auth -> Credentials 页,在 “Private key file for authentication“ 选择密钥文件。
- 在 Connection -> Data 页,在 “Auto-login username” 填写用户名。
- 回到 Session 页,在 “Saved Sessions” 填入
vps6
并点击 “Save” 保存配置。
- 在 Session 页,填入
- 再设置一个名为
wireguard.srv2
的会话。- 在 Session 页,填入
wireguard.srv2.chn.moe
作为 Host Name。 - 在 Connection -> SSH -> Auth -> Credentials 页和 Connection -> Data 页,需要修改的设置与在
vps6
会话中相同。 - 在 Connection -> Proxy 页,设置 Proxy type 为
SSH to proxy and use port forwarding
,Proxy hostname 为vps6
。 - 回到 Session 页,在 “Saved Sessions” 填入
wireguard.srv2
并点击 “Save” 保存配置。
- 在 Session 页,填入
之后双击双击 wireguard.srv2
会话即可连接到学校的服务器。
在 WinSCP 中大概这样设置:
- 在登陆界面,点击 “新建站点”。
- 设置 “文件协议” 为
SCP
,“主机名” 为wireguard.srv2.chn.moe
,并输入用户名。 - 然后点击右下角 “高级” 继续修改设置。
- 在 连接 -> 隧道 页,勾选 “通过 SSH 隧道进行连接”,主机名填写
vps6.chn.moe
,选择密钥文件,并填写用户名。 - 在 SSH -> 验证 页,选择密钥文件。
- 点击 “确定”,再点击 “保存”。
使用 SSH 转发端口
SSH 转发端口的功能分三种: 将本地某个端口转发到远程、将远程的某个端口转发到本地(就是前者反过来),以及在本地建立一个 SOCKS 代理,让所有流量都通过远程服务器(所谓的动态转发)。
比如,我在校外,需要下载某个厦大买了的论文(或者用厦大的 IP 做什么别的事情), 就可以连接到厦大的服务器(用什么办法都可以,比如用厦大 VPN,或者通过别的机器跳转),然后在本地建立一个 SOCKS 代理:
ssh -D 4324 jykang@hpc.xmu.edu.cn
之后在浏览器或系统中设置 SOCKS 代理为 127.0.0.1:4324
,就可以通过厦大的 IP 访问了。
用 PuTTY 也可以设置这个功能。我记得我写过这个功能的教程,但是找不到了,有需要的就自己摸索吧。