掌握Linux中的SSH命令,供Windows管理员使用

Linux和Windows曾经是死对头,但如今它们似乎相处得更好了。事实上,现在你甚至可以在Windows上原生地使用SSH:既作为客户端又作为服务器。当你是Windows管理员但也需要管理Linux机器时,你会习惯于在Linux中使用(安全外壳)SSH命令!

这是博客系列《一个Windows小伙在Linux世界》的第四部分。如果你想了解更多关于流行Linux概念的信息,请确保查看第一部分第二部分第三部分

在这篇文章中,你将学到如何在Linux中启用SSH,以及如何设置你的Windows SSH客户端以连接到远程Linux服务器。

注意:所有示例都将使用OpenSUSE Linux

远离桌面环境

在这个系列的第一篇中,教程建议使用KDE桌面环境。在进行OpenSUSE设置时,你可能还看到另一个吸引人的选项;OpenSUSE的服务器版。

Server Edition of OpenSUSE

如果您安装了大多数Linux发行版的服务器版(包括OpenSUSE),您可能已经注意到完全没有桌面环境。大多数流行发行版的服务器版(如OpenSUSE、Ubuntu Server和CentOS)类似于Windows Server Core:没有可言之处的桌面。

要理解为什么在Linux文化中通常回避桌面环境,您需要了解命令行界面(CLI)和SSH。

SSH:远程管理的黄金标准

SSH,像许多其他远程管理协议一样,是一个基于客户端-服务器的系统。客户端通过网络远程连接到服务器,允许您运行命令(甚至传输文件)。在远程管理Linux方面,SSH是事实上的标准。

由于SSH已经存在很长时间并深深嵌入Linux生态系统中,命令行管理实用工具主导了Linux服务器环境。大多数Linux服务器发行版没有图形界面。

在Linux中使用SSH命令

够说了。让我们看看SSH可以通过首先在OpenSUSE Linux中启用它来做什么。要执行此操作,请使用YaST包管理器。在OpenSUSE中使用YaST启用SSH:

  1. 点击开始菜单,键入terminal,并选择Konsole,假设您在安装OpenSUSE时安装了KDE桌面管理器。
  2. 在终端中运行以下命令打开YaST:sudo yast
  3. 进入YaST后,向下移动到系统,然后向右移动到服务管理器,按Enter键继续。
  4. 向下移动到sshd,按alt+s启动SSH服务。
  5. alt+r将启动模式从手动更改为开机启动。这将确保即使在重新启动后也会启动SSH服务器服务。
  6. alt+o以应用并确认更改。

您可以在下面看到这些步骤的实际操作。

Using YaST from the command line to enable SSH

通过防火墙允许SSH

几乎每个Linux发行版都带有某种防火墙来保护它,就像Windows一样。您可以在此处阅读有关OpenSUSE防火墙的信息。为确保您可以从Windows远程访问SSH服务,必须通过防火墙允许它。执行以下操作:

  1. 仍然在终端中,使用sudo yast再次启动YaST。
  2. 向下移动到安全性和用户,然后向右移动到防火墙,按Enter键继续。
  3. 导航到区域 –> 公共,然后向右移动到右侧的服务—端口窗格。
  4. 向下移动以找到ssh在服务中。
  5. 使用空格键选择ssh,然后按alt+d添加所选项。
  6. alt+a接受更改。

你可以在下面直观地看到上面所有这些步骤的表示。

Using YaST from the command line to let SSH through the firewall

就像Windows一样,Linux有不同的信任级别来应用防火墙规则。这些级别被称为区域。Windows默认有公共、工作和私人区域。Linux有更多,但默认为公共区域。

从Windows连接到Linux

幸运的是,如今Windows 10有内置的SSH客户端。要连接到Linux主机,请打开命令提示符(cmd)或PowerShell控制台,并指定要连接的用户名和IP或主机名。

> ssh <username>@<ip address>

如果一切顺利,SSH客户端应该会要求您接受一个指纹。指纹是一个标识符,用于确保没有人劫持了目标IP地址。

如果您正在运行Windows 7,仍然可以通过SSH连接到Linux主机。您只需要从这里下载Microsoft SSH客户端。这个SSH客户端与Windows 10使用的是同一个。

一旦您输入yes并输入密码,您就连接到了服务器!您现在可以像在计算机本身上打开终端一样使用命令行。

不要通过您的路由器将SSH(默认端口22)暴露到互联网。机器人会不断地搜索开放的SSH端口。一旦机器人发现一个开放的端口,它们将开始尝试用暴力方式猜测密码。

在Windows中启用SSH鼠标支持

使用原生的Windows 10 SSH客户端(至少在撰写本文时)的一个主要缺点是缺乏鼠标支持。这意味着您无法像在以前的博客文章中学到的那样在午夜指挥官中使用鼠标。

幸运的是,从OpenSSH Windows客户端的第八个版本开始,您可以获得鼠标支持!让我们安装这个客户端。

  1. 从这里下载最新版本的OpenSSH-Win64并解压缩生成的zip文件。本教程假定您将其解压缩到~\Downloads\OpenSSH-Win64
  2. 打开PowerShell控制台并使用cd ~\Downloads\OpenSSH-Win64导航至~\Downloads\OpenSSH-Win64
  3. 通过运行.\\ssh -V来检查SSH客户端版本。撰写本指南时,版本应为8.1.0.0-p1。
  4. 通过使用.\ssh <user>@<ip>登录到您的Linux服务器。
  5. 登录后,通过运行mc来测试鼠标支持以运行午夜指挥官,以确保您可以使用鼠标。

您可以在下面的图像中以可视化的方式看到所有这些步骤。

覆盖默认的SSH客户端

如果您想更长期地使用新版本,您可以这样做;但是您必须覆盖默认的Windows 10 SSH客户端。这样,每当您在命令行上运行ssh时,就会使用新版本(支持鼠标)。

假设您已将客户端提取到~\Downloads\OpenSSH-Win64文件夹

  1. 将提取的OpenSSH-Win64文件夹移动到您选择的永久文件夹。本教程将使用C:\users\public\OpenSSH-Win64
  2. 转到开始,然后运行并键入sysdm.cpl,或者从控制面板中打开系统
  3. 高级选项卡下,点击环境变量
  4. 系统变量下,点击Path
  5. 点击新建以添加新路径,并提供SSH客户端的文件夹路径(在本例中为C:\users\public\OpenSSH-Win64)。
  6. 点击上移,直到它位于%SystemRoot%\system32文件夹之上。这样做将确保您在命令行上键入ssh时,Windows首先查找此处。
  7. 打开PowerShell控制台并运行ssh -V。您应该看到版本为8.1.0.0-p

以下是这些步骤的摘要。

Overriding the Default SSH Client

将文件夹优先于%SystemRoot%\system32可能会带来安全风险。如果有人可以访问您的计算机,他们可以决定在OpenSSH-Win64文件夹中插入病毒,并将其命名为Windows实用程序,如cd.exe

你应该将 OpenSSH-Win64 文件夹限制为只有管理员可读。

  1. 右键单击 OpenSSH-Win64 文件夹,然后点击 属性
  2. 安全 选项卡下,点击 高级 按钮。
  3. 点击 禁用继承 以允许自定义文件夹权限,并防止父文件夹覆盖 OpenSSH-Win64 文件夹的权限。
  4. 选择 添加,找到 Administrators 组并赋予完全权限。
  5. 点击 添加,找到 Everyone 组并赋予只读权限。
  6. 选择 替换所有子对象权限 复选框,以将这些设置传播到 OpenSSH-Win64 文件夹中的所有文件;点击 应用
  7. 现在通过在 OpenSSH-Win64 文件夹中创建新文件来测试这些权限。Windows 应该需要管理员提示。

你可以在下面的图示中可视化地看到所有这些步骤。

restrict the OpenSSH-Win64 folder

使用 Tmux 管理断开的会话

啊,真是让人头疼!你正在通过 SSH 运行一个长时间执行的命令,然后你的互联网突然断开了。现在你完全不知道 Linux 服务器的状态!那个命令执行完了吗?怎么恢复它?

断开的会话是SSH中一个合法的问题,而且幸运的是,它有一个直截了当的解决方案。你需要一个终端复用器(tmux)。

Tmux既是终端复用器的缩写,也是程序本身的名称。

Tmux是SSH的会话管理器。如果你断开连接,它会“保持”会话并在后台继续运行。你可以稍后重新连接到该会话,甚至创建多个会话并在它们之间切换。

要使用tmux管理断开的会话:

  1. 在Linux终端中,通过运行以下命令下载并安装tmux实用程序sudo zypper install -y tmux

你还可以使用YaST下载tmux实用程序

Tmux Utility

大多数Linux发行版都有不同的命令行包管理器。OpenSUSE使用zypper。Arch使用pacman。Ubuntu使用apt。Red Hat使用dnfyum。幸运的是,这些包管理器的语法在各个系统中都相当相似。

2. 在您的Windows计算机上,打开PowerShell控制台并通过SSH连接到您的Linux服务器。本教程将使用用户名homelab和Linux服务器IP为192.168.134.169。

ssh <username>@<ip address>

3. 运行tmux以启动tmux,连接后底部会出现绿条

4. 运行一个输出一些文本的命令。这没关系是什么命令。本教程使用neofetch。您也可以运行ls

5. 通过关闭PowerShell断开会话。此操作模拟了一次断开连接。

6. 再次使用SSH重新连接到Linux服务器。

7. 现在通过运行tmux a重新附加到旧会话。您应该仍然看到先前ls命令的输出。好极了,断开连接时没有数据丢失!

您可以在下面的可视化表示中看到所有这些步骤。

Managing Disconnected Sessions with a Tmux

如果您尝试在tmux中运行Midnight Commander实用程序,您可能会注意到没有鼠标支持。您可以通过运行mc -x来解决这个问题。

在登录时启用tmux

默认情况下,tmux在所有SSH会话中都不可用。您可以通过强制tmux每次登录时附加到您的SSH会话来更改这一点。

假设您已通过SSH连接到Linux服务器:

  1. 使用mc打开midnight commander实用程序。

2. 高亮显示.bashrc文件并点击编辑

.bashrc文件是一个每次您通过命令行登录时都会运行的shell(批处理)脚本

3. 将下面的shell脚本代码添加到文本文件的底部。

if [ -z "$TMUX" ]; then tmux attach -t default || tmux new -s default fi

4. 当提示时点击退出并保存。

5. 通过断开并重新加入SSH会话来测试tmux自动附加功能。您应该会自动获得底部的绿色条,表示您已连接到一个tmux会话!

这只是tmux能做的冰山一角,它是一个非常强大的多任务程序。如果您问任何Linux管理员他们最常用的命令是什么,答案可能是tmux

总结

这就是一个Windows人在Linux世界中博客系列中的最新文章。请继续关注ATA博客,了解即将发布的下一个安装!

Source:
https://adamtheautomator.com/ssh-command-in-linux/