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

yanding 2023-07-19 504

摘要:在本指南中,我们将探讨常见的 SSH 用例。我们还将讨论您在日常生活中可以使用的常用 SSH 协议,以提高您的工作效率。


Secure Shell (SSH) 是一种广泛接受的网络协议,它允许我们以安全的方式与远程主机进行交互。它通过加密数据库中的所有链接来提供安全性。


如何在 Linux 中使用 SSH 命令

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


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


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



SSH命令的语法如下:


$ssh[选项][命令][参数]

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


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


$ ssh -l 根 192.168.19.130

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


# 主机名

要结束会话,我们可以使用退出命令或ctrl+D组合键。



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


在上一节中,我们了解了如何连接到远程主机,这仅在我们要长时间使用远程主机时才有意义。有时我们只需要在远程主机上运行一两个命令。在这种情况下,我们可能会在不延长时间的情况下执行此类订单。


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


$ ssh -l root 192.168.19.130 主机名

同样的方式,我们可以在远程Linux机器上运行多个命令:


$ssh -l root 192.168.19.130 '主机名;密码'


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



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


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


$catscript.sh


主机名

密码

现在,让我们在远程主机上执行此操作:


$ ssh [ 电子邮件 'bash -s' < ./script.sh 

在此示例中,我们使用 bash-s选项从默认文本中读取文本。



我们经常使用文件和文件夹。用户经常执行的一项任务是下载文件夹和文件。与本地计算机类似,我们可以使用 scp 命令在远程主机之间复制文件和文件夹,该命令使用 SSH 协议安全地复制文件。


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


$ scp 脚本 .sh [ 电子邮件 : / tmp

现在,检查文件是否已下载:


$ssh[电子邮件'ls/tmp/script.sh'


同样的,我们可以使用scp命令来复制文件夹。但是,我们需要-r在命令中使用该选项。


SSH 支持使用 gzip 压缩机制进行数据压缩,该机制封装了所有可能的数据流,例如 stdin、stdout、stderr 等。当使用慢速网络连接时,此选项变得非常有用。


-C我们可以使用以下选项通过 SSH 启用压缩:


$ssh -C -l root 192.168.19.130 '主机名' 



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


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


$ ssh -v -l root 192.168.19.130 主机名

除此之外,我们还可以使用-v多种选项来提高表达水平。


-v– 将表达级别设置为 1 并提供有关客户端活动的详细信息。

-vv– 将表达式级别设置为 2,并提供有关客户端和服务器端活动的详细信息。

-vvv– 将表达式级别设置为 3,并提供有关客户端和服务器端活动的更详细信息。

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


$ssh -vvv -l root 192.168.19.130 主机名


在上面的示例中,debug1 表示按详细级别 1 处理的调试消息。类似地,debug2 和 debug3 分别表示按详细级别 2 和 3 处理的调试消息。


我们可以使用流协议和 SSH 来管理客户端端点会话。让我们回顾一下常用的流程模式和相关用例。


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


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


$ ssh -l 根 192.168.19.130

# 主机名

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


现在,让我们确认会议已终止:


$ 职位

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


让我们使用 fg 命令重新启动会话并运行主机名命令:


$fg %1


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


首先,登录远程主机:


$ ssh -l 根 192.168.19.130

现在使用\~ + .\组合键结束当前会话。



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


一个有趣的功能是,有一个流模式列出了所有支持的流模式。我们可以用\~ + ?”流程图来列出支持的流程模式:



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


如何在 Linux 中配置 SSH

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


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


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


# 我们/etc/banner.txt 

接下来,添加以下标志消息:


****************************************************** ******************

警告 !!!您正在尝试登录 techmint.com 的服务器。

该服务器上的所有活动都会受到监控。

如果您不是授权用户,请立即终止会话。

****************************************************** ******************

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


横幅 /etc/banner.txt

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


# systemctl 重新启动 sshd

# 出口

最后,通过登录远程主机来验证该标志:


$ ssh -l 根 192.168.19.130


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


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


我们可以使用 PermitRootLogin 指令来限制 root 用户访问。


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


允许根登录 否

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


# systemctl 重新启动 sshd

# 出口

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


$ ssh -l 根 192.168.19.130


这里我们可以注意到我们无法使用root用户访问远程主机。为了允许 root 用户访问,我们可以使用yes相同的选项和指令。


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


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


8088端口

接下来,重新启动 sshd 服务并结束会话:


# systemctl 重新启动 sshd

# 出口

现在,让我们深入了解远程托管:


$ssh -p 8088 -l 根 192.168.19.130


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


在某些情况下,我们需要采取一些额外的步骤来允许非主端口上的连接。例如识别可用端口、编辑防火墙规则、SELinux 设置等。


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


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

言鼎科技

The End