Files
blog-public/content/docs/server/link/_index.md
2025-06-01 10:43:56 +08:00

15 KiB
Raw Blame History

weight, title
weight title
3 连接到服务器

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

  • 使用 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 后不用重新配置。

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

{{< details title="配置 Pageant" closed="true" >}}

  1. 找到 Pageant 程序
    Pageant 会随着 PuTTY 一起安装一般来说您可以直接在开始菜单中搜索“pageant”找到它也可以在 PuTTY 的安装目录中找到它。
  2. 启动 Pageant
    启动后可能没有任何反应,也可能有一个黑框闪过,这是正常的。只要右下角的系统托盘中出现了 Pageant 的图标就可以了。
  3. 添加密钥
    双击 Pageant 图标,打开 Pageant 窗口。选择“Add Key”然后选择您的密钥文件。

{{< callout type="info" >}} 无论是使用 WinSCP 还是 PuTTY每次使用前都需要如此启动 Pageant 并添加密钥。 如果您希望 Pageant 启动后自动添加密钥或开机时自动启动 Pageant参见自动启动 Pageant 并添加密钥 {{< /callout >}} {{< /details >}}

{{< details title="配置 PuTTY" closed="true" >}}

  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”以保存配置。之后双击这个配置文件的名字即可登陆。 {{< /details >}}

{{< details title="配置 WinSCP" closed="true" >}}

  1. 在登陆界面,点击“新建站点”。 设置“文件协议”为 SCP,“主机名”(即地址)、“端口号”、“用户名”参考连接协议和参数中的SSH协议部分密码为空。 然后点击右下角“高级”继续修改设置。 (文件协议设置为 SFTP 大多功能也可以使用,但相比于 SCP 协议SFTP 可用的功能较少(例如不能远程复制)。因此建议使用 SCP。
  2. 在 SSH->Authentication勾选“使用 Pageant 进行认证”,勾选“允许代理转发”,清空“密钥文件”,然后点击“确定”,再点击“保存”。
  3. (选做)如果您需要通过 WinSCP 打开 PuTTY 的话,需要在 WinSCP 主界面->工具->选项->集成->应用程序路径中, 在原来的基础上增加 -A 参数。如果难以直接在文本框中修改,就把它复制到记事本里修改,然后再复制回去。 {{< /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”为对应服务器的地址和端口。 参考服务器配置中的 SSH 协议部分。
  2. 在 Connection->SSH->Auth->Credentials在“Private key file for authentication”中选择自己密钥文件。 如果之后把密钥文件移动到了别的地方,需要在这里重新选择。
  3. (选做但推荐)在 Connection->Data中将“Auto-login username”设置为自己的用户名这样每次登陆时就不需要手动输入用户名了。 用户名参考服务器配置
  4. 回到 Session在“Saved Sessions”中输入任意一个名字例如 jykang并点击“Save”以保存配置。之后双击这个配置文件的名字即可登陆。 {{< /details >}}

{{< details title="配置 WinSCP" closed="true" >}}

  1. 在登陆界面,点击“新建站点”。 设置“文件协议”为 SCP,“主机名”(即地址)、“端口号”、“用户名”参考服务器配置中的 SSH 协议部分,密码为空。 然后点击右下角“高级”继续修改设置。 {{< callout type="info" >}} 文件协议设置为 SFTP 大多功能也可以使用,但相比于 SCP 协议SFTP 可用的功能较少(例如不能远程复制)。因此建议使用 SCP。 {{< /callout >}}
  2. 在 SSH->Authentication选择“密钥文件”然后点击“确定”再点击“保存”。如果之后把密钥文件移动到了别的地方需要在这里重新选择。 {{< /details >}}

连接 VASP 服务器,使用密码

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

{{< details title="配置 PuTTY" closed="true" >}}

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

{{< details title="配置 WinSCP" closed="true" >}} 在登陆界面,点击“新建站点”。 设置“文件协议”为 SCP,“主机名”(即地址)、“端口号”、“用户名”参考服务器配置中的 SSH 协议部分,并填入密码。 再点击“保存”。 {{< callout type="info" >}} 文件协议设置为 SFTP 大多功能也可以使用,但相比于 SCP 协议SFTP 可用的功能较少(例如不能远程复制)。因此建议使用 SCP。 {{< /callout >}} {{< /details >}}

连接 FDTD 服务器

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

{{< details title="配置 Windows 自带远程桌面" closed="true" >}}

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

其它内容

使用 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 在服务器之间建立连接

要在两个服务器之间传输文件:

  1. 登陆第一个服务器时,启用 SSH agent forwarding或者将自己的密钥保存到第一个服务器上。具体操作参考上述内容。
  2. 在那之后,就可以直接从第二个服务器下载文件到第一个服务器上,例如(假如你已登陆 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 中大概这样设置:

  1. 首先设置一个名为 vps6 的会话。
    1. 在 Session 页,填入 vps6.chn.moe 作为 Host Name。
    2. 在 Connection -> SSH -> Auth -> Credentials 页,在 “Private key file for authentication“ 选择密钥文件。
    3. 在 Connection -> Data 页,在 “Auto-login username” 填写用户名。
    4. 回到 Session 页,在 “Saved Sessions” 填入 vps6 并点击 “Save” 保存配置。
  2. 再设置一个名为 wireguard.srv2 的会话。
    1. 在 Session 页,填入 wireguard.srv2.chn.moe 作为 Host Name。
    2. 在 Connection -> SSH -> Auth -> Credentials 页和 Connection -> Data 页,需要修改的设置与在 vps6 会话中相同。
    3. 在 Connection -> Proxy 页,设置 Proxy type 为 SSH to proxy and use port forwardingProxy hostname 为 vps6
    4. 回到 Session 页,在 “Saved Sessions” 填入 wireguard.srv2 并点击 “Save” 保存配置。

之后双击双击 wireguard.srv2 会话即可连接到学校的服务器。

在 WinSCP 中大概这样设置:

  1. 在登陆界面,点击 “新建站点”。
  2. 设置 “文件协议” 为 SCP,“主机名” 为 wireguard.srv2.chn.moe,并输入用户名。
  3. 然后点击右下角 “高级” 继续修改设置。
  4. 在 连接 -> 隧道 页,勾选 “通过 SSH 隧道进行连接”,主机名填写 vps6.chn.moe,选择密钥文件,并填写用户名。
  5. 在 SSH -> 验证 页,选择密钥文件。
  6. 点击 “确定”,再点击 “保存”。

使用 SSH 转发端口

SSH 转发端口的功能分三种: 将本地某个端口转发到远程、将远程的某个端口转发到本地(就是前者反过来),以及在本地建立一个 SOCKS 代理,让所有流量都通过远程服务器(所谓的动态转发)。

比如,我在校外,需要下载某个厦大买了的论文(或者用厦大的 IP 做什么别的事情), 就可以连接到厦大的服务器(用什么办法都可以,比如用厦大 VPN或者通过别的机器跳转然后在本地建立一个 SOCKS 代理:

ssh -D 4324 jykang@hpc.xmu.edu.cn

之后在浏览器或系统中设置 SOCKS 代理为 127.0.0.1:4324,就可以通过厦大的 IP 访问了。

用 PuTTY 也可以设置这个功能。我记得我写过这个功能的教程,但是找不到了,有需要的就自己摸索吧。