285 lines
16 KiB
Markdown
285 lines
16 KiB
Markdown
---
|
||
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 程序<br/>
|
||
Pageant 会随着 PuTTY 一起安装,一般来说您可以直接在开始菜单中搜索“pageant”找到它,也可以在 PuTTY 的安装目录中找到它。
|
||

|
||
2. 启动 Pageant<br/>
|
||
启动后可能没有任何反应,也可能有一个黑框闪过,这是正常的。只要右下角的系统托盘中出现了 Pageant 的图标就可以了。
|
||

|
||
3. 添加密钥<br/>
|
||
双击 Pageant 图标,打开 Pageant 窗口。选择“Add Key”,然后选择您的密钥文件。
|
||

|
||
|
||
{{< 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 协议部分。
|
||

|
||
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”设置为用户名,这样每次登陆时就不需要手动输入用户名了。
|
||
各个服务器的用户名请参考[连接协议和参数](../config#连接协议和参数)。
|
||
5. 回到Session,在“Saved Sessions”中输入任意一个名字(例如 `jykang`)并点击“Save”,以保存配置。之后双击这个配置文件的名字即可登陆。
|
||

|
||
{{< /details >}}
|
||
|
||
{{< details title="配置 WinSCP" closed="true" >}}
|
||
1. 在登陆界面,点击“新建站点”。
|
||
设置“文件协议”为 `SCP`,“主机名”(即地址)、“端口号”、“用户名”参考[连接协议和参数](../config#连接协议和参数)中的SSH协议部分,密码为空。
|
||
然后点击右下角“高级”继续修改设置。
|
||

|
||
{{< callout type="info" >}}
|
||
文件协议设置为 `SFTP` 大多功能也可以使用,但相比于 SCP 协议,SFTP 可用的功能较少(例如不能远程复制)。因此建议使用 SCP。
|
||
{{< /callout >}}
|
||
2. 在 SSH->Authentication,勾选“使用 Pageant 进行认证”,勾选“允许代理转发”,清空“密钥文件”,然后点击“确定”,再点击“保存”。
|
||

|
||
3. (选做)如果您需要通过 WinSCP 打开 PuTTY 的话,需要在 WinSCP 主界面->工具->选项->集成->应用程序路径中,
|
||
在原来的基础上增加 `-A` 参数。
|
||

|
||
{{< 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 协议部分。
|
||

|
||
2. 在 Connection->SSH->Auth->Credentials,在“Private key file for authentication”中选择自己密钥文件。
|
||
如果之后把密钥文件移动到了别的地方,需要在这里重新选择。
|
||

|
||
3. (选做但推荐)在 Connection->Data中,将“Auto-login username”设置为自己的用户名,这样每次登陆时就不需要手动输入用户名了。
|
||
用户名参考[服务器配置](../config#连接协议和参数)。
|
||
4. 回到 Session,在“Saved Sessions”中输入任意一个名字(例如 `jykang`)并点击“Save”,以保存配置。之后双击这个配置文件的名字即可登陆。
|
||

|
||
{{< /details >}}
|
||
|
||
{{< details title="配置 WinSCP" closed="true" >}}
|
||
1. 在登陆界面,点击“新建站点”。
|
||
设置“文件协议”为 `SCP`,“主机名”(即地址)、“端口号”、“用户名”参考[服务器配置](../config#连接协议和参数)中的 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”为对应服务器的地址和端口。
|
||
参考[服务器配置](../config#连接协议和参数)中的SSH协议部分。
|
||

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

|
||
{{< /details >}}
|
||
|
||
{{< details title="配置 WinSCP" closed="true" >}}
|
||
在登陆界面,点击“新建站点”。
|
||
设置“文件协议”为 `SCP`,“主机名”(即地址)、“端口号”、“用户名”参考[服务器配置](../config#连接协议和参数)中的 SSH 协议部分,并填入密码。
|
||
再点击“保存”。
|
||

|
||
{{< callout type="info" >}}
|
||
文件协议设置为 `SFTP` 大多功能也可以使用,但相比于 SCP 协议,SFTP 可用的功能较少(例如不能远程复制)。因此建议使用 SCP。
|
||
{{< /callout >}}
|
||
{{< /details >}}
|
||
|
||
### 连接 FDTD 服务器
|
||
|
||
接下来介绍在 Windows 上,使用 Windows 自带的远程桌面客户端,通过 RDP 协议,连接到 Windows 远程服务器的操作。
|
||
其它使用 RDP 连接的方法参考[使用 RDP 远程桌面](#使用-rdp-远程桌面)。
|
||
|
||
{{< details title="配置 Windows 自带远程桌面" closed="true" >}}
|
||
1. 在开始菜单中搜索“远程”,打开“远程桌面连接”。
|
||

|
||
1. 在“计算机”中输入服务器地址,然后点击“连接”。服务器地址参考[连接协议和参数](../config#连接协议和参数)中的 RDP 协议部分。
|
||

|
||
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 在服务器之间建立连接
|
||
|
||
要在两个服务器之间传输文件:
|
||
|
||
1. 登陆第一个服务器时,启用 SSH agent forwarding;或者将自己的密钥保存到第一个服务器上。具体操作参考上述内容。
|
||
2. 在那之后,就可以直接从第二个服务器下载文件到第一个服务器上,例如(假如你已登陆 `srv1`):
|
||
|
||
```bash
|
||
rsync -rlP srv2.chn.moe:~/myfile.txt .
|
||
```
|
||
|
||
这样就可以了。
|
||
|
||
要借助第一个服务器登陆第二个服务器,既可以像上面那样先登陆第一个,然后再登陆第二个,也可以用一个命令完成(本质是一样的):
|
||
|
||
```bash
|
||
ssh -J srv1.chn.moe srv2.chn.moe
|
||
```
|
||
|
||
我管理的服务器之间有 wireguard 相连,可以临时借助它绕过厦大 VPN 连接进来,例如:
|
||
|
||
```bash
|
||
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 forwarding`,Proxy 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 代理:
|
||
|
||
```bash
|
||
ssh -D 4324 jykang@hpc.xmu.edu.cn
|
||
```
|
||
|
||
之后在浏览器或系统中设置 SOCKS 代理为 `127.0.0.1:4324`,就可以通过厦大的 IP 访问了。
|
||
|
||
用 PuTTY 也可以设置这个功能。我记得我写过这个功能的教程,但是找不到了,有需要的就自己摸索吧。
|
||
|