Linux 中最常见的 SSH 命令用法和配置Linux 中最常见的 SSH 命令用法和配置Linux 中最常见的 SSH 命令用法和配置Linux 中最常见的 SSH 命令用法和配置
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

Linux 中最常见的 SSH 命令用法和配置

发表 admin at 2025年2月28日
类别
  • 未分类
标签

简介:在本指南中,我们将讨论 SSH 的常见用例。我们还将讨论可在日常生活中使用的常用 SSH 配置,以提高您的工作效率。

Secure Shell (SSH) 是一种广泛采用的网络协议,它允许我们以安全的方式与远程主机交互。它通过加密它们之间的所有通信来提供安全性。

如何在 Linux 中使用 SSH 命令

在本节中,我们将讨论 SSH 协议的一些流行用例。

连接到远程 Linux 主机

使用 telnet、ftp、netcat 等协议与远程 Linux 主机交互的方式有很多种。但是,由于缺乏加密,这些方式并不安全。我们可以使用 SSH 协议来允许主机之间进行安全通信。

我们必须使用 SSH 客户端与远程主机进行交互。有大量可用于 Linux 的基于 GUI 和 CLI 的客户端。但是,在本指南中,我们将使用名为 ssh 的命令行实用程序。默认情况下,大多数 Linux 发行版都提供 ssh 实用程序。

SSH命令的语法如下:

ssh [OPTIONS]  [COMMANDS] [ARGS]

这里,方括号 ([]) 表示可选参数,而尖括号 (<>) 表示强制参数。

让我们使用 ssh 客户端连接到远程主机:

ssh -l root 192.168.19.130

在此示例中,我们使用 -l 选项指定登录名,目标为 192.168.19.130。输入正确的密码后,SSH 连接建立。现在,我们可以像在本地系统一样在远程主机上执行命令了。

hostname

要终止会话,我们可以使用exit命令或ctrl+D组合键。

值得注意的是,我们必须针对每个新会话向远程主机进行身份验证。为了避免每次都输入密码,我们可以设置SSH无密码登录。

在远程主机上执行命令

在上一节中,我们了解了如何与远程主机建立连接,这仅适用于我们要长时间使用远程主机的情况。有时,我们只需要在远程主机上执行一两个命令。在这种情况下,我们可以执行这些命令而无需创建长期会话。

让我们在远程主机上执行 hostname 命令:

ssh -l root 192.168.19.130 hostname

以类似的方式,我们可以在远程Linux机器上执行多个命令:

ssh -l root 192.168.19.130 'hostname; pwd'

需要注意的是,命令必须用引号括起来,并用分号 (;) 字符分隔。如果您想在多个远程 Linux 主机上运行命令,请阅读我们的文章 – Pssh – 在多个远程 Linux 主机上运行命令。

在远程主机上执行脚本

与命令类似,我们也可以在远程主机上执行本地脚本。让我们通过一个例子来理解这一点。

首先,在本地计算机上创建一个具有可执行权限的简单 shell 脚本:

cat script.sh 

hostname
pwd

现在,让我们在远程主机上执行它:

ssh [email  'bash -s' < ./script.sh 

在此示例中,我们使用 bash 的 -s 选项从标准输入读取脚本。

在主机之间复制文件

我们经常使用文件和目录。用户执行的一项常见操作是复制目录和文件。就像本地计算机一样,我们可以使用 scp 命令在远程主机之间复制文件和目录,该命令使用 SSH 协议安全地复制文件。

让我们将 script.sh 文件复制到远程主机的 /tmp 目录中:

scp script.sh [email :/tmp

现在,验证文件已被复制:

ssh [email  'ls /tmp/script.sh'

类似地,我们可以使用 scp 命令来复制目录。但是,我们必须在命令中使用 -r 选项。

为 SSH 启用压缩

SSH支持使用gzip压缩算法进行数据压缩,该算法会压缩所有可能的数据流,例如stdin、stdout、stderr等。当使用慢速网络连接时,此选项非常方便。

我们可以使用 -C 选项在 SSH 上启用压缩:

ssh -C -l root 192.168.19.130 'hostname' 

为 SSH 启用详细模式

Linux 用户经常需要调试 SSH 会话来调查各种 SSH 连接和配置相关问题。在这种情况下,我们可以启用详细模式来打印当前会话的调试日志。

让我们使用 -v 选项启用详细模式:

ssh -v -l root 192.168.19.130 hostname

除此之外,我们还可以通过使用多个 -v 选项来提高详细级别。

  • -v – 将详细级别设置为 1 并提供有关客户端活动的详细信息。
  • -vv – 将详细级别设置为 2 并提供有关客户端和服务器端活动的详细信息。
  • -vvv – 将详细级别设置为 3 并提供有关客户端和服务器端活动的更多详细信息。

SSH 支持的最大详细级别是 3。让我们看看实际情况:

ssh -vvv -l root 192.168.19.130 hostname

在上面的示例中,debug1 表示由详细级别 1 启用的调试消息。类似地,debug2 和 debug3 表示由详细级别 1 启用的调试消息。详细程度分别为 2 级和 3 级。

SSH 中的转义序列

我们可以使用 SSH 的转义序列来管理客户端会话。让我们讨论常用的转义序列和适当的用例。

暂停 SSH 会话

有时,我们必须在本地计算机上执行一些活动而不终止当前的 SSH 会话。在这种情况下,我们可以使用 ~ + ctrl+z 键序列暂停当前会话。

首先,登录远程主机并执行hostname命令:

ssh -l root 192.168.19.130
hostname

接下来,要暂停当前会话,请先输入波形符 (~) 字符,然后按 ctrl+z 键。需要注意的是,在按下 ctrl+z 之前,波形符 (~) 字符不会显示在标准输出上。

现在,让我们验证会话是否已暂停:

jobs

在这里,我们可以看到当前的 SSH 会话正在后台运行。

让我们使用 fg 命令再次恢复会话并执行 hostname 命令:

fg %1

终止冻结的 SSH 会话

我相信您一定见过冻结的 SSH 会话,当会话被不稳定的网络中断时就会发生这种情况。在这里,我们无法使用 exit 命令中止会话。但是,我们可以使用 "~ + ." 键序列终止它。

首先,登录远程主机:

ssh -l root 192.168.19.130

现在使用“~ + .”组合键终止当前会话。

在此示例中,我们可以看到 SSH 显示消息 - 与 192.168.19.130 的连接已关闭。

列出支持的转义序列

一件有趣的事情是,有一个转义序列列出了所有支持的转义序列。我们可以使用“~ + ? ” 转义序列列出支持的转义序列:

在这里,我们必须按回车键才能退出帮助菜单。

如何在 Linux 中配置 SSH

在本节中,我们将讨论服务器端配置以强化 SSH 服务器。 SSH 服务器将其所有配置存储在 /etc/ssh/sshd_config 文件中。需要注意的是,更新 SSH 配置需要 root 用户访问权限。

显示 SSH 横幅

作为最佳实践,我们应该始终在建立 SSH 连接之前显示横幅。在某些情况下,它会阻止未经授权的用户访问远程主机。让我们看看如何逐步启用此设置。

首先,在远程服务器上创建一个包含警告消息的文本文件:

vi /etc/banner.txt 

接下来,添加以下横幅消息:

*********************************************************************
Warning !!! You are trying to log in to techmint.com's server.
All the activities on this server are monitored.
Terminate the session immediately if you are not an authorized user.
*********************************************************************

接下来,打开 /etc/ssh/sshd_config 文件并使用 Banner 指令指定该文件:

Banner /etc/banner.txt

现在,重新启动 sshd 服务并使用 exit 命令终止会话:

systemctl restart sshd
exit

最后,通过登录远程主机来验证横幅:

ssh -l root 192.168.19.130

在这里,我们可以让服务器正确显示 SSH 横幅。

禁用 SSH Root 登录

至此,我们已经使用root用户访问远程主机了。然而,这违反了最小特权原则。在生产环境中,始终限制 root 用户访问以提高安全性。

我们可以使用PermitRootLogin指令来禁用root用户登录。

首先,打开 /etc/ssh/sshd_config 文件并使用选项 no 和 PermitRootLogin 指令:

PermitRootLogin no

现在,重新启动 sshd 服务并使用 exit 命令终止会话:

systemctl restart sshd
exit

最后,通过创建新的 SSH 会话来验证这一点:

ssh -l root 192.168.19.130

在这里,我们可以观察到我们无法使用root用户登录远程主机。要允许 root 用户登录,我们可以使用带有相同指令的选项 yes 。

更改默认 SSH 端口

默认情况下,SSH 使用 TCP 端口 22。但是,我们可以将 SSH 配置为在不同端口上运行,即 8088。

首先,打开 /etc/ssh/sshd_config 文件并使用 8088 值和 Port 指令:

Port 8088

接下来,重新启动 sshd 服务并终止会话:

systemctl restart sshd
exit

现在,让我们登录远程主机:

ssh -p 8088 -l root 192.168.19.130

在此示例中,我们使用 -p 选项来指定端口号。

在某些情况下,我们必须执行一些其他步骤才能允许在非默认端口上进行通信。例如识别可用端口、更新防火墙规则、SELinux 设置等。

在本文中,我们讨论了 SSH 协议及其常见用例。接下来,我们讨论了一些常见的选项。最后,我们讨论了一些保护 SSH 服务器的设置。

您知道 Linux 中其他最佳的 SSH 命令用法吗?请在下面的评论中告诉我们您的观点。

©2015-2025 Norria support@alaica.com