怎样连接到 Linux Cloud Windows 桌面上的服务器

介绍

第一次连接到 Linux 服务器可能会让人感到困惑,尤其是如果你有很强的 Windows 背景。 SSH 允许您在计算机和 Linux 服务器之间建立安全连接并对其进行远程管理。

本文介绍怎样在 Windows 上使用 PuTTY 和 OpenSSH 客户端连接到 Linux 服务器。

在本教程结束时,您会知道:

怎样在 Windows 上安装 PuTTY 和 OpenSSH 客户端 怎样使用密码认证连接服务器 怎样创建公钥和私钥对 怎样使用公钥认证连接服务器 怎样增强 Linux 服务器的安全性

先决条件

Windows 工作站 Linux 服务器实例

获取您的 Linux 服务器凭据

导航到您的 客户门户
单击“产品”单击您的实例。 复制您的凭据 IP 地址 用户名 密码

安装腻子

PuTTY 是适用于 Windows 的开源 SSH 和 Telnet 客户端,适用于所有版本的 Windows。

从下载 PuTTY 官方网站. 运行 PuTTY 安装程序以安装 PuTTY。

通过 PuTTY 使用密码连接到服务器

打开 Windows 开始菜单,搜索“PuTTY”并启动应用程序。
Enter 在名为“PuTTY 配置”的窗口中输入以下信息 主机名(或 IP 地址) – 这是 Vultr 服务器的 IP 地址 端口 – SSH 的默认端口是 22。如果要更改,请参阅“服务器强化”部分默认端口。 单击“打开”开始连接 在“PuTTY 安全警报”对话框中,选择“接受”。 您可以查看对话框中的消息以获取有关安全警报的更多信息。

Enter 您上一步中的用户名。 这是一个 example 结果

login as: root

复制上一步的密码。 通过在终端上单击鼠标右键粘贴密码。 这是一个 example 结果。 密码不可见。

[email protected]'s password:

您现在已登录到您的服务器。 这是一个 example 结果使用 Ubuntu 22.04 服务器。

login as: root
[email protected]'s password:
Welcome to Ubuntu 22.04 LTS (GNU/Linux 5.15.0-25-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Sat Apr 23 09:49:11 AM UTC 2022

  System load:  0.0                Processes:               134
  Usage of /:   27.0% of 24.41GB   Users logged in:         0
  Memory usage: 23%                IPv4 address for enp1s0: 149.28.148.36
  Swap usage:   0%

0 updates can be applied immediately.

[email protected]:~#

类型 exit 然后按 Enter 注销您的服务器。

在 Windows 上安装 OpenSSH 客户端

OpenSSH 客户端是通过 Windows 10 和 Windows Server 2019 中包含的 SSH 连接到服务器的另一种选择。

打开 Windows 开始菜单,搜索并打开“管理可选功能”。 检查列表“已安装的功能”以查看是否已安装“OpenSSH 客户端”。 单击“添加功能”。 找到“OpenSSH 客户端”,然后单击“安装”。 打开命令提示符

检查 OpenSSH 版本:

$ ssh -V 

结果应该是这样的:

OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2

使用密码通过 OpenSSH 连接到服务器

打开命令提示符或 Windows PowerShell

运行以下命令以连接到您的服务器。 代替 root 使用您的服务器用户名。 代替 servername 与您的服务器的 IP 地址。

$ ssh [email protected]

连接后回答 yes 当您收到如下消息时:

The authenticity of host '149.28.148.36 (149.28.148.36)' can't be established.
ECDSA key fingerprint is SHA256:ZbS/36vzv0lEzwkSkFGwA8A7gh/GWGFaQFeeC7fPAcY.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

复制上一步的密码。 通过在终端上单击鼠标右键粘贴密码。 这是一个 example 结果。 密码不可见。

[email protected]'s password:

您现在已登录到您的服务器。 这是一个 example 结果使用 Ubuntu 22.04 服务器。

login as: root
[email protected]'s password:
Welcome to Ubuntu 22.04 LTS (GNU/Linux 5.15.0-25-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Sat Apr 23 09:51:22 AM UTC 2022

  System load:  0.0                Processes:               134
  Usage of /:   27.0% of 24.41GB   Users logged in:         0
  Memory usage: 23%                IPv4 address for enp1s0: 149.28.148.36
  Swap usage:   0%

0 updates can be applied immediately.

[email protected]:~#

类型 exit 然后按 Enter 注销您的服务器。

公有和私有 SSH 密钥的好处

公钥身份验证提供了一种可靠且安全的密码身份验证替代方案。 它使用户免于记住复杂的密码。

公钥身份验证还允许在无数自动化工具中进行安全、自动登录。

在公钥认证中,​​SSH 密钥对包括两个密钥:

公钥在 SSH 服务器上。 任何人都可以使用公钥加密数据。 使用私钥是解密数据的唯一方法。 私钥由用户保留。 用户可以使用密码来保护私钥文件免受未经授权的访问。

在本文中,您将生成一个 ED25519 格式的密钥对。 以下是 ED25519 格式与其他格式相比的一些优势:

相同安全级别的小公钥和私钥长度。 快速生成和验证密钥。

使用 PuTTY 创建 ED25519 格式的密钥对

打开 Windows 开始菜单,搜索“PuTTYgen”并启动应用程序。 在“参数”部分下,选择“EdDSA”。 确保选择框为“Ed25519(255 位)”单击“生成”。 将鼠标移到空白区域以生成密钥。 点击 ”Save private key”来保存私钥。您可以设置密码以保护私钥免受未经授权的访问。复制“Public key for paste into OpenSSH authorized_keys”文件下的内容。

公钥是一个字符串,如下所示:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAWT7d2UKNJJ6jurMml+6tCktL4dWuWtvTOomJ1rQv12 eddsa-key-20220424

私钥是带有扩展名的文件 .ppk 您需要登录到服务器。

这是生成的私钥的内容

PuTTY-User-Key-File-3: ssh-ed25519
Encryption: none
Comment: eddsa-key-20220424
Public-Lines: 2
AAAAC3NzaC1lZDI1NTE5AAAAIAWT7d2UKNJJ6jurMml+6tCktL4dWuWtvTOomJ1r
Qv12
Private-Lines: 1
AAAAIGb7S+9kgp96L9HUUY04rgE7laU86BO1scZv8WBSAoo4
Private-MAC: f956dd2563aeb14132be4ea22d22a29ac16733b3285fd07876049226e6774ca5

在 Windows 10 和 11 上使用 OpenSSH 创建 ED25519 格式密钥对

打开命令提示符或 Windows PowerShell。

运行以下命令生成ED25519格式的密钥对。 代替 <comments> 使用您自己的注释来更轻松地组织键。

$ ssh-keygen -t ed25519 -C "<comment>"

(选修的) Enter 询问时私钥的名称“Enter 保存密钥的文件”。(可选) Enter 用于保护私钥免受未经授权访问的密码。 留空表示没有密码。

这是一个 example 输出

Generating public/private ed25519 key pair.
Enter file in which to save the key (C:Usersquanh/.ssh/id_ed25519): 
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in my-vultr-key.
Your public key has been saved in my-vultr-key.pub.
The key fingerprint is:
SHA256:tmAS/9vfH6prgMC3sZkd2yGxUKW6zN7jgrx2oaX1jmg <comment>
The key's randomart image is:
+--[ED25519 256]--+
|        ....     |
|       . ..      |
|    o   ..o      |
|     = o.+ .     |
|    . *.S = .    |
|     oo&.= .     |
|    . *+= .    . |
|     Eooo= . .. .|
|    oooo=++++....|
+----[SHA256]-----+

这是名为的公钥的内容 my-vultr-key.pub

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILuIiHMAsxs5KEfZp6JTp+qP2oqRLqryI0Yc8Ksan9Ft my-vultr-key

这是名为的私钥的内容 my-vultr-key

-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACA1qB9J7bfq9x9uxn+y1jmUY6m8h774k6oq1IyRC4nudAAAAJD16Q3I9ekN
yAAAAAtzc2gtZWQyNTUxOQAAACA1qB9J7bfq9x9uxn+y1jmUY6m8h774k6oq1IyRC4nudA
AAAEA/gZuKIFDh6iYkEXYS8N9bl/9w98B6DrpzzHlG8T67EzWoH0ntt+r3H27Gf7LWOZRj
qbyHvviTqirUjJELie50AAAADG15IHZ1bHRyIGtleQE=
-----END OPENSSH PRIVATE KEY-----

在现有服务器上安装公钥

使用 PuTTY 或 OpenSSH 客户端按照本文开头的步骤使用密码登录到您的服务器。

编辑 ~/ssh/authorized_keys 使用您最喜欢的文本编辑器。 将您的公钥粘贴到新行中。

nano ~/.ssh/authorized_keys

类型 exit 然后按 Enter 注销您的服务器。

部署时通过客户门户在服务器上安装公钥

按照本文使用您的 SSH 密钥部署新服务器。

使用 SSH 密钥通过 PuTTY 连接到服务器

打开 Windows 开始菜单,搜索“PuTTY”并启动应用程序。
Enter 在名为“PuTTY 配置”的窗口中输入以下信息 主机名(或 IP 地址) – 这是您的 Vultr 服务器的 IP 地址 端口 – SSH 的默认端口是 22。在左侧边栏上,选择“连接”>“SSH ” > “授权”。 单击“浏览器”按钮并从 PuTTYgen 中选择您的私钥单击“打开”以开始连接

Enter 您上一步中的用户名。 这是一个 example 结果

login as: root

您现在已登录到您的服务器。 这是一个 example 结果使用 Ubuntu 22.04 服务器。

login as: root
Authenticating with public key "eddsa-key-20220424"
Welcome to Ubuntu 22.04 LTS (GNU/Linux 5.15.0-25-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Sun Apr 24 07:33:03 AM UTC 2022

  System load:  0.0                Processes:               134
  Usage of /:   27.2% of 24.41GB   Users logged in:         0
  Memory usage: 23%                IPv4 address for enp1s0: 149.28.148.36
  Swap usage:   0%

 * Super-optimized for small spaces - read how we shrank the memory
   footprint of MicroK8s to make it the smallest full K8s around.

   https://ubuntu.com/blog/microk8s-memory-optimisation

0 updates can be applied immediately.

[email protected]:~#

使用 SSH 密钥通过 OpenSSH 连接到服务器

打开命令提示符或 Windows PowerShell。

如果您的私钥位于默认位置 ( ~/.ssh/id_ed25519) 然后运行以下命令连接到服务器。 代替 root 使用您的服务器用户名。 代替 servername 与您的服务器的 IP 地址。

$ ssh [email protected]

如果您的私钥不在默认位置。 运行以下命令连接到服务器。 代替 root 使用您的服务器用户名。 代替 servername 与您的服务器的 IP 地址。 代替 private_key_path 使用您的私钥路径。

$ ssh [email protected] -i private_key_path

(可选)将您的私钥设置为所有服务器的默认值。 代替 private_key_path 使用您的私钥路径。

$ cp private_key_path ~/.ssh/id_ed25519

您现在已登录到您的服务器。 这是一个 example 结果使用 Ubuntu 22.04 服务器。

Welcome to Ubuntu 22.04 LTS (GNU/Linux 5.15.0-25-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Sun Apr 24 07:35:01 AM UTC 2022

  System load:  0.0                Processes:               134
  Usage of /:   27.2% of 24.41GB   Users logged in:         0
  Memory usage: 23%                IPv4 address for enp1s0: 149.28.148.36
  Swap usage:   0%

 * Super-optimized for small spaces - read how we shrank the memory
   footprint of MicroK8s to make it the smallest full K8s around.

   https://ubuntu.com/blog/microk8s-memory-optimisation

0 updates can be applied immediately.

[email protected]:~#

服务器加固

创建一个 sudo 用户

安全性的最佳实践是以非 root 用户身份执行服务器管理。

按照以下文章之一创建一个 sudo Linux 服务器上的用户:

Ubuntu Debian CentOS
Fedora
OpenBSD Arch Linux Alma Linux VzLinux Rocky Linux

创建一个 .ssh 主目录中的文件夹

$ mkdir -p ~/.ssh

编辑 ~/ssh/authorized_keys 使用您最喜欢的文本编辑器。 将您的公钥粘贴到新行中。

$ nano ~/.ssh/authorized_keys

禁用空密码

一些 Linux 发行版允许创建没有密码的用户。

设置值 PermitEmptyPasswordsno/etc/ssh/sshd_config 文件以禁用使用空密码的 SSH 连接。

PermitEmptyPasswords no

使用 SSH 限制用户登录访问

SSH 服务器允许所有用户远程访问。 按照以下步骤覆盖默认设置并使用 SSH 限制用户访问

要允许特定用户使用 SSH 访问,请将值设置为 AllowUsers/etc/ssh/sshd_config 文件如下。 代替 user1, user2, 和 ubuntu 使用您选择的用户名。

AllowUsers user1 user2 ubuntu

要阻止特定用户使用 SSH 访问,请设置 DenyUsers/etc/ssh/sshd_config 文件如下。 代替 user3, 和 user4使用您选择的用户名。

DenyUsers user3 user4

禁用 SSH 密码验证

按照以下步骤禁用对服务器的密码验证。

确保您可以使用 SSH 密钥登录

设置值 PasswordAuthenticationno/etc/ssh/sshd_config 文件以禁用密码验证。

PasswordAuthentication no

禁用 root 用户的 SSH 登录

禁用 root 用户的访问权限是一种很好的安全做法。

设置值 PermitRootLoginno/etc/ssh/sshd_config 禁用登录的文件 root

PermitRootLogin no

更改空闲超时间隔

用户通常会长时间保持 SSH 连接处于空闲状态。 在一段时间不活动后设置超时是一种很好的做法。

设置值 ClientAliveInterval 到你想要的空闲超时 /etc/ssh/sshd_config 文件。 为了 example,将超时值更改为 360 秒。

ClientAliveInterval 360

禁用隧道和端口转发

要禁用隧道和端口转发,请在 /etc/ssh/sshd_config 文件。

AllowAgentForwarding no
AllowTcpForwarding no
PermitTunnel no

应用新的 SSH 配置

检查配置是否有错误

$ sudo sshd -t

重新启动 sshd 服务

$ sudo systemctl restart sshd

(可选)怎样更改 SSH 默认端口 22

更改默认 SSH 端口是避免打开端口的异常流量的好习惯。 在更改端口之前,您可能需要在系统上配置 SELinux 和防火墙。

港口 2233 是本文中的自定义端口。

检查您想要的未使用端口号是否正在使用中

$ sudo lsof -i -P -n | grep LISTEN

配置 SELinux 以允许传入 SSH 流量的自定义端口

一些 Linux 发行版,如 CentOS、RHEL、Alma Linux 和 Rocky Linux 使用 SELinux,这是一种内置的安全机制。

按照以下步骤配置 SELinux 以允许您的自定义端口用于传入 SSH 流量。

运行以下命令以检查您的服务器是否使用 SELinux。 如果您不使用 SELinux,请跳过此部分。

$ sestatus

更改为 2233

$ sudo semanage port -a -t ssh_port_t -p tcp 2233

检查 SELinux 是否允许自定义端口用于传入 SSH 流量

$ sudo semanage port -l | grep ssh

结果应如下所示:

ssh_port_t tcp 2233, 22

怎样打开一个端口 firewalld

一些 Linux 发行版使用 firewalld 作为默认防火墙。 您需要在防火墙上打开自定义端口。

检查您是否正在使用firewalld

$ sudo systemctl status firewalld

打开自定义端口 firewalld. 代替 2233 使用您的自定义端口。

$ sudo firewall-cmd --add-port=2233/tcp --permanent

重新加载设置

$ sudo firewall-cmd --reload

怎样打开一个端口 ufw

一些 Linux 发行版使用 ufw 作为默认防火墙。 您需要在防火墙上打开自定义端口。

检查您是否正在使用 ufw

$ sudo systemctl status ufw

检查 ufw 地位

$ sudo ufw status

打开自定义端口 ufw. 代替 2233 使用您的自定义端口。

$ sudo ufw allow 2233 comment 'SSH'

使能够 ufw 如果它没有运行

$ sudo ufw enable

将自定义端口添加到 SSH 配置

设置值 Port 到您想要的未使用端口号 /etc/ssh/sshd_config 文件。 为了 example将 SSH 端口更改为 2233

Port 2233

重新启动 sshd 服务

$ sudo systemctl restart sshd

使用自定义端口上的 SSH 密钥通过 OpenSSH 连接到服务器

添加 -p port 给你的 ssh 命令在自定义端口上连接到服务器。 代替 port 使用您的自定义端口。

$ ssh [email protected] -p port

更多信息

腻子文档

注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com