如何使用 SSH 登录连接远程服务器?

Secure Shell(SSH)是一种用于安全访问和管理远程系统的协议。它对客户端与服务器之间的通信进行加密,保护数据免受未经授权的访问,并增强系统安全性。

SSH 为开发者、系统管理员和 IT 技术人员提供了一种安全、高效的方式,无需亲临现场即可远程访问计算机。这提升了工作效率和系统管理能力。此外,SSH 简单易用,并支持多种工具和客户端。除了远程访问之外,它还可以用于文件传输、执行命令,甚至建立隧道连接。

本指南将逐步介绍如何在 Windows、Linux 和 macOS 上使用 ssh 登录命令通过 SSH 连接远程服务器。

SSH 是如何工作的?(如何通过 SSH 登录服务器)

SSH 通过在客户端与 SSH 服务器(sshd)之间建立安全连接来工作。

在上一节中,ssh 命令充当客户端,而远程系统运行 SSH 服务器(sshd)。

大多数 Linux 系统会在开机时自动启动 SSH 服务器。但是,如果它没有运行,您可能需要通过基于 Web 的控制台或本地控制台访问服务器,手动启动它。

在 Ubuntu 上启动 SSH 服务器

如果 SSH 服务器没有运行,您可以使用以下命令启动它:

$ sudo systemctl start ssh

服务器运行后,您就可以通过 SSH 远程登录了。

$ sudo systemctl status ssh

如何在 Windows 中使用 SSH?

如果您使用的是 Windows 10 或更高版本,系统已内置 SSH,因此设置非常简单。

在 Windows 10 上启用 SSH

  • 打开“设置”,进入“应用 > 可选功能”。
  • 检查是否已安装 OpenSSH 客户端。如果没有,请点击“添加功能”,搜索 OpenSSH Client 并安装。

连接到远程服务器

启用 SSH 后,您可以使用 PowerShell 或命令提示符连接到远程系统:

ssh username@server_ip

将 username 替换为您的实际用户名,将 server_ip 替换为远程服务器的 IP 地址。

在旧版 Windows 中使用 PuTTY

如果您使用的是 Windows 8 或更早的版本,系统默认不包含 SSH,您可以使用 PuTTY,这是一款带有图形界面的免费 SSH 客户端:

1. 从 PuTTY 官方页面下载并安装 PuTTY。

2. 打开程序并输入服务器的 IP 地址。

3. 将端口设置为 22(默认 SSH 端口)。

如果您更喜欢图形界面而非命令行工具,PuTTY 也是一个很好的选择。

如何在 Linux 中使用 SSH 登录?

大多数 Linux 发行版都预装了 SSH。要验证您的系统上是否可以使用 SSH,请打开终端并运行以下命令:

$ ssh

在 Linux 上安装 SSH

如果尚未安装 SSH,您可以使用包管理器进行安装。对于 Ubuntu 等基于 Debian 的发行版,请使用:

$ sudo apt-get install openssh-client

连接到远程服务器

安装 SSH 后,您可以运行以下命令与远程服务器建立安全连接:

$ ssh username@server_ip

在上述命令中,您需要将 username 替换为您的实际用户名,将 server_ip 替换为远程服务器的 IP 地址。

如何在 Mac 上使用 SSH?

按照以下步骤在 macOS 上建立 SSH 连接:

点击 Dock 中的“终端”图标启动它。

发起 SSH 连接:按以下格式使用 SSH 命令:

ssh username@hostname

例如,如果用户名是 test,设备是 Centos.local,命令如下:

ssh test@Centos.local

确认连接:如果是首次连接,请在提示时输入 Yes 以验证连接。

输入密码:在提示时输入密码以验证会话。

退出 SSH 会话:要结束会话,可以按 CTRL+D,或输入:

exit

关闭会话可以防止误发送命令,并提升安全性。

常用 SSH 命令和功能

与远程服务器建立 SSH 连接后,您可以执行各种任务,例如建立隧道、传输文件和执行远程命令。

1. 使用 SSH 进行安全端口转发

SSH 隧道可以在本地系统和远程系统之间安全地路由流量。要设置本地端口转发,请使用:

ssh -L 8080:localhost:3306 user@192.168.1.110

在此示例中,本地计算机上的 8080 端口会将流量转发到位于 192.168.1.110 的远程服务器的 3306 端口。

2. 安全的文件传输与管理

SSH 还支持使用 SCP 和 SFTP 进行加密文件传输。

  • 使用 SCP 将文件从本地传输到远程:
scp report.pdf user@192.168.1.110:/home/user/documents/

此命令会将 report.pdf 从本地系统安全地复制到远程服务器上的 /home/user/documents/ 目录。

  • 使用 SFTP 管理远程文件:
sftp user@192.168.1.110

连接后,您可以在目录之间切换,以交互方式上传和下载文件。

3. 使用配置文件简化 SSH 远程访问

为了简化连接,您可以配置 SSH 文件(~/.ssh/config)来保存常用的连接设置。

配置示例:

Host devserver

    HostName 192.168.1.110  
    User user  
    Port 2222  

现在,您无需输入完整命令,只需使用以下命令即可连接:

$ ssh devserver

4. 在远程服务器上运行命令

要在不进行交互式登录的情况下远程执行单条命令,请使用:

$ ssh user@192.168.1.110 "df -h"

此命令会从远程服务器获取磁盘使用情况信息(df -h)。

如何使用密钥登录 SSH?

虽然密码认证可以访问远程系统,但使用 SSH 密钥是一种更高效、更安全的方式。

基于密钥的认证是如何工作的?

SSH 密钥认证使用一对加密密钥进行:

  • 私钥:安全地存储在客户端设备上,绝不应与他人共享。
  • 公钥:可以自由共享,或放置在您希望访问的任何服务器上。

当发起连接时,远程服务器会使用公钥向客户端发送一条加密的质询消息。客户端的私钥对该消息进行解密并发送响应,从而验证其身份。配置好 SSH 密钥后,这一交换过程会自动进行。

生成 SSH 密钥

要设置 SSH 密钥认证,请在本地计算机上运行以下命令生成密钥对:

$ ssh-keygen -t rsa

在设置过程中,系统可能会要求您为密钥文件设置口令,但这是可选的。按 Enter 接受默认设置。密钥将以以下文件名保存在 ~/.ssh/ 目录中:

Public key: ~/.ssh/id_rsa.pub
Private key: ~/.ssh/id_rsa

验证 SSH 密钥文件

进入 .ssh 目录:

cd ~/.ssh

使用以下命令检查生成的密钥的权限和内容:

ls -l

此命令会显示文件的详细信息,确保它们已正确创建。

如何禁用 SSH 密码认证?

设置好 SSH 密钥认证后,您可以通过禁用基于密码的登录来进一步增强安全性。这样可以确保只有持有正确私钥的用户才能访问服务器。

重要提示:在继续之前,请确保您的公钥已正确安装在服务器上。否则,您可能会失去访问权限。

修改 SSH 配置以禁用密码登录

以具有 root 或 sudo 权限的用户身份打开 SSH 配置文件:

$ sudo nano /etc/ssh/sshd_config

1. 找到 PasswordAuthentication 这一行,删除行首的 #(如果有),并将其值改为 "no":

PasswordAuthentication no

2. 确保已启用公钥认证并禁用质询响应认证。文件中应包含以下设置:

PubkeyAuthentication yes
ChallengeResponseAuthentication no

保存并退出文件。

要使新设置生效,请使用以下命令重新加载 SSH 服务:

$ sudo systemctl reload ssh

这样,密码认证将被禁用,只能通过 SSH 密钥认证进行访问。

提升 SSH 连接安全性的最佳实践

为保护您的 SSH 连接,请遵循以下最佳实践:

1. 使用 SSH 密钥或强密码:SSH 密钥比密码更安全。如果使用密码,请确保它足够长、唯一且复杂,混合使用字母、数字和符号。

2. 禁用 root 登录:在 SSH 配置文件(/etc/ssh/sshd_config)中禁用 root 直接登录,以防止未经授权的访问,设置如下:

PermitRootLogin no

3. 更改默认 SSH 端口:将默认端口(22)修改为自定义端口,以降低自动化攻击的风险。更新 sshd_config 中的 "Port 22" 这一行,并重启 SSH 使更改生效。

4. 使用安全工具:安装 Fail2Ban 等工具来检测并封禁多次登录失败的尝试,防止暴力破解攻击:

$ sudo apt-get install fail2ban

实施这些措施将增强您的 SSH 安全性,防止未经授权的访问。

结论

掌握 SSH 是任何从事云计算工作的人的一项宝贵技能。通过本指南,您已经了解了如何使用 SSH 连接远程服务器。随着您深入探索其功能,您还会发现更多能够简化工作的高级能力。凭借强大的安全性、高效性和多功能性,SSH 已成为广泛应用于各种场景的工具。

使用 BlueVPS,即可在全球 20 个地点即时部署您的 KVM VPS!借助 KVM 虚拟化,享受流畅的远程访问、完全的控制权和 100% 独享资源。您可以选择基于 Linux 或 Windows 的 VPS,支持所有主流控制面板,并有 7x24 小时专家支持。立即开始,体验强大而可靠的托管服务!

blog