SSH Linux | Linux ssh 命令

2025年3月17日 | 阅读 7 分钟

在 Linux 中,ssh 是一种协议,代表 Secure Shell 或 Secure Socket Shell。安全 shell 在连接到远程服务器时提供安全性。ssh 命令使用 ssh 协议,这是一种安全协议,因为客户端和主机之间的数据传输是以加密形式进行的。它将输入通过客户端传输到主机,并返回主机传输的输出。它通过 TCP/IP 端口 22 执行。

加密连接也用于在 Linux 服务器上运行命令、端口转发隧道等。

市面上有许多 SSH 客户端,既有商业版也有免费版。OpenSSH 是其最广泛使用的客户端。它适用于所有常用平台,如 Windows、Linux、macOS、OpenBSD 等。

语法

ssh 命令的组成部分

ssh 命令由三种不同类型的组成部分构成:

  • ssh 命令:它指示机器与主机系统建立安全的加密连接。
  • 用户名:用户名是主机正在访问的 Linux 用户的名称。
  • 主机:主机是被用户访问的机器,例如计算机或路由器。域名或 IP 地址也指主机。

SSH 如何工作?

要建立 SSH 连接,我们需要两个主要组件:客户端和主机,可以是服务器、域名、IP 地址等。此外,我们还需要一个 ssh 客户端来连接到另一台计算机或服务器。客户端使用指定的主机信息建立连接;如果提供的凭据得到验证,它将建立加密连接。

SSH Linux

服务器 (主机) 包含一个 SSH 进程,该进程已准备好通过 TCP/IP 端口接受客户端连接请求。一旦客户端发起连接,主机便会响应必要的信息并交换凭据。

如果提供的信息经过验证,SSH 协议将为可用环境建立新连接。

SSH 服务器和 SSH 客户端通信的默认 SSH 协议版本是版本 2。

在 Linux (Ubuntu) 上安装 OpenSSH 客户端

OpenSSH 客户端是一个连接工具,用于系统通过 ssh 协议连接两个系统。它也称为 ssh,可以从 Linux 终端调用。此客户端包包含其他 SSH 实用程序,如 sftp、scp 和 ssh,它们与 ssh 命令默认一起安装。它使用这些 ssh 实用程序执行远程操作。

OpenSSH 客户端预装在大多数 Linux 发行版中。如果任何 Linux 系统没有 ssh 客户端,我们可以使用包管理器手动安装它。

要安装 OpenSSH 客户端,请执行以下命令

上面的 sudo 命令将更新 Linux 系统的包。请看下面的输出截图

SSH Linux

更新 Linux 系统后,请执行以下命令来安装 OpenSSH 客户端

上面的命令将安装最新版本的 OpenSSH 客户端。请看下面的输出

SSH Linux

从上面的输出可以看出,一个守护进程正在运行以安装 OpenSSH 客户端。由于我们的机器上已安装 OpenSSH 客户端,因此它显示了消息“openssh-client is already the newest version”。

注意:macOS 默认携带 Openssh 客户端。

在 Linux (Ubuntu) 上安装 OpenSSH 服务器

要建立 SSH 连接,我们需要在我们的机器上安装 SSH 软件的服务器端部分。

要检查服务器的安装状态,请打开终端并执行以下命令

如果我们的机器没有 OpenSSH 客户端的服务器工具包,它将显示如下输出

SSH Linux

在这种情况下,我们必须安装 OpenSSH 服务器。

要安装 SSH 服务器,请执行以下命令

上面的命令将提示输入系统管理员密码,输入密码,然后按 Enter 键开始安装过程。接下来,它将要求确认安装类型,输入 'y' 键并按 Enter 键。请看下面的输出

SSH Linux

确认安装后,一个守护进程将开始并在您的机器上安装 OpenSSH 服务器。

要验证安装,请执行以下命令

上面的命令将显示安装状态。如果安装成功,它将显示如下输出

SSH Linux

还有另一种测试安装的方法:ssh localhost 命令

上面的命令将验证连接,输入 'yes' 继续。请看下面的输出

SSH Linux

现在,我们已成功在我们的机器上安装了 OpenSSH 服务器。

SSH 密钥生成

要与主机客户端创建连接,我们需要一个用于加密连接的特定密钥。通过 ssh 密钥登录远程主机比使用密码更安全。登录主机后,只有当这些命令直接写入主机计算机时,计算机命令才能正常工作。

要生成 ssh 密钥,请执行以下命令

上面的命令将生成用于创建与主机系统连接的公钥和私钥。请看下面的输出

SSH Linux

从上面的输出可以看出,ssh 密钥已生成。ssh-keygen 命令创建两个文件:key@ssh[email protected],分别包含私钥和公钥。

建议出于安全原因隐藏私钥,并将公钥复制到远程主机。将此密钥复制到远程主机后,我们可以使用 SSH 密钥建立连接,而不是使用密码。

SSH 协议的技术

telnet 等其他协议相比,SSH 协议更安全,并且其加密技术比其他协议要好得多。SSH 使用的三种主要加密技术如下:

  1. 哈希:哈希是一种身份验证技术,用于确保收到的数据是否来自合法发件人且未被篡改。它使用哈希函数从接收到的数据生成哈希码。但是,无法从哈希值重新生成数据。此哈希值在发送方和接收方两端进行验证。如果匹配,则数据已通过身份验证。
  2. 对称加密:此技术为加密和解密生成单个密钥。生成的密钥在主机和客户端之间分发,并创建安全连接。这是最基本的加密技术。当数据在同一台机器上加密和解密时,它表现最佳。
  3. 非对称加密:非对称加密技术被认为比其他技术更安全,因为它使用 ssh 密钥(公钥和私钥)进行加密。公钥分发给其他机器以创建安全连接,而私钥仅由客户端机器使用。安全连接由公钥和私钥共同建立。

SSH 命令

客户端 ssh 具有 ssh 命令的许多功能,例如创建密钥、配置密钥、打开 SSH 服务器、持有密钥以实现单点登录、文件传输客户端等。一些最有用的 ssh 命令如下:

  • ssh-keygen:用于创建密钥对以建立连接和公钥身份验证。
  • ssh-copy-id:用于将公钥配置为服务器上的有效用户。
  • ssh-agent:用于创建代理以持有私钥以实现单点登录。
  • ssh-add:这是一个将密钥添加到代理的工具。
  • scp:这是一个文件传输客户端,提供类似 RCP 的命令行界面。
  • sftp:这是一个文件传输命令,提供类似 FTP 的命令行界面。
  • sshd:这是 Linux 系统的 OpenSSH 服务器。

选项:有许多命令行选项可用于指定 SSH 输出的不同规范。一些有用的选项如下:

  • -c:用于指定非 IN 数据的查询类。
  • -C:用于比较权威名称服务器上的 SOA 记录。
  • -d:此选项被视为 -v 的等效项。
  • -i:用于 IP6.INT 反向查找。
  • -l:用于使用 AXFR 列出域中的所有主机。
  • -m:此选项设置内存调试标志,例如 trace|record|usage。
  • -N:用于更改允许在执行根查找之前使用的点数。
  • -r:用于禁用递归处理。
  • -R:指定 UDP 数据包的重试次数。
  • -s:用于 SERVFAIL 响应应停止查询。
  • -t:用于指定查询类型。
  • -T:用于启用 TCP/IP 模型。
  • -v:用于详细输出。
  • -V:用于打印版本号并退出。
  • -w:用于永远等待回复。
  • -W:用于指定等待回复的时间。
  • -4:仅用于 IPv4 查询传输。
  • -6:仅用于 IPv6 查询传输。

如何通过 SSH 连接

既然我们已经安装了 SSH 客户端和服务器,我们就可以与其他机器建立安全连接。要在两台机器之间建立安全连接,两台机器都必须安装 ssh 客户端和服务器。

要建立连接,请执行以下命令

如果用户名被您要连接的机器验证,请执行以下命令

上面的命令会要求输入密码,输入密码,然后按 Enter 键。

如果您是第一次建立连接,它会询问您是否继续连接;输入 yes 并按 Enter。它将添加一个 ECDSA(椭圆曲线数字签名算法)密钥并连接到远程服务器。

您现在可以通过终端控制和管理远程机器了。如果您在建立连接时遇到任何困难,请考虑以下几点:

  • 提供的远程机器 IP 地址是否有效。
  • SSH 守护进程正在监听的端口未被防火墙阻止或转发不正确。
  • 输入的用户名和密码是否正确。
  • SSH 软件是否已正确安装。

下一主题Linux mail 命令