远程连接

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,你将学习如何使用 Linux 的 ssh 命令远程连接并管理其他 Linux 系统。SSH(Secure Shell)是系统管理员和网络工程师的强大工具,它允许你远程且安全地执行各种任务。

目标

完成本实验后,你将能够:

  • 使用 ssh 命令安全地连接到远程系统
  • 通过 SSH 在远程系统上执行命令
  • 理解远程系统管理的基础知识

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("`Linux`")) -.-> linux/BasicSystemCommandsGroup(["`Basic System Commands`"]) linux(("`Linux`")) -.-> linux/BasicFileOperationsGroup(["`Basic File Operations`"]) linux(("`Linux`")) -.-> linux/SystemInformationandMonitoringGroup(["`System Information and Monitoring`"]) linux(("`Linux`")) -.-> linux/UserandGroupManagementGroup(["`User and Group Management`"]) linux(("`Linux`")) -.-> linux/RemoteAccessandNetworkingGroup(["`Remote Access and Networking`"]) linux/BasicSystemCommandsGroup -.-> linux/echo("`Text Display`") linux/BasicFileOperationsGroup -.-> linux/ls("`Content Listing`") linux/BasicFileOperationsGroup -.-> linux/cat("`File Concatenating`") linux/SystemInformationandMonitoringGroup -.-> linux/top("`Task Displaying`") linux/UserandGroupManagementGroup -.-> linux/passwd("`Password Changing`") linux/UserandGroupManagementGroup -.-> linux/sudo("`Privilege Granting`") linux/UserandGroupManagementGroup -.-> linux/env("`Environment Managing`") linux/RemoteAccessandNetworkingGroup -.-> linux/ssh("`Secure Connecting`") subgraph Lab Skills linux/echo -.-> lab-34{{"`远程连接`"}} linux/ls -.-> lab-34{{"`远程连接`"}} linux/cat -.-> lab-34{{"`远程连接`"}} linux/top -.-> lab-34{{"`远程连接`"}} linux/passwd -.-> lab-34{{"`远程连接`"}} linux/sudo -.-> lab-34{{"`远程连接`"}} linux/env -.-> lab-34{{"`远程连接`"}} linux/ssh -.-> lab-34{{"`远程连接`"}} end

获取 labex 用户密码

在使用 SSH 之前,我们需要知道 labex 用户的密码。在本实验环境中,密码存储为一个环境变量。

  1. 在桌面环境中打开一个终端窗口,只有桌面环境的终端会设置好环境变量。
获取密码
  1. 要获取密码,请运行以下命令。

    printenv | grep PASSWORD

    注意: 你必须在桌面环境的终端中运行此命令,而不是从顶部菜单栏打开的终端。

    该命令将显示所有包含 "PASSWORD" 的环境变量。找到一行显示 LABEX_PASSWORD=... 的内容。等号后面的字符就是你的密码。

  2. 记下这个密码,因为在后续步骤中你会需要它。

重要提示: 不要尝试更改 labex 用户的密码。实验环境已配置为此特定密码,更改它可能会导致实验验证步骤失败。在本实验中,请始终使用 LABEX_PASSWORD 环境变量提供的密码。

使用 SSH 连接到本地系统

现在我们已经有了密码,让我们练习使用 SSH 连接到本地系统。这模拟了连接到远程系统的场景。

SSH 连接终端示例
  1. 在终端中,使用以下命令通过 SSH 连接到本地系统:

    ssh [email protected]

    这里,127.0.0.1 是回环 IP 地址,指向本地机器。它通常被称为 "localhost"。

  2. 你可能会看到一条关于主机真实性的消息。这条消息出现是因为这是你第一次连接到此“远程”系统。在实际场景中,你应该在继续之前验证指纹。在本实验中,输入 yes 并按 Enter 键继续。

  3. 当提示输入密码时,输入你在步骤 1 中获取的密码。输入时不会显示密码。

  4. 如果成功,你将看到一个新的提示符。这表明你现在已通过 SSH 连接,尽管你仍然在同一台机器上。

  5. 要退出 SSH 会话,输入 exit 并按 Enter 键。这将返回到你原来的终端会话。

使用 SSH 执行简单命令

让我们练习使用 SSH 在“远程”系统上执行命令。当你需要快速运行命令而不启动完整的 SSH 会话时,这非常有用。

  1. 使用以下命令通过 SSH 列出本地系统上主目录的内容:

    ssh [email protected] 'ls -l ~'

    该命令的分解如下:

    • ssh:启动 SSH 连接的命令
    • [email protected]:我们要连接的用户和 IP 地址
    • 'ls -l ~':我们希望在远程系统上运行的命令,用引号括起来
  2. 当提示输入密码时,输入 labex 用户的密码。

  3. 你应该会看到 ls -l ~ 命令的输出,显示主目录的内容。此输出来自“远程”系统,尽管它实际上是同一台机器。

  4. 请注意,这次你并未进入完整的 SSH 会话。命令执行后,你立即返回到原来的终端。

使用 SSH 分配伪终端

某些命令需要伪终端才能正确执行,尤其是交互式命令或生成格式化输出的命令。让我们练习使用 SSH 的 -t 选项来强制分配伪终端。

  1. 运行以下命令以查看系统的运行时间:

    ssh -t [email protected] 'uptime'

    -t 选项强制 SSH 分配一个伪终端。这对于需要在交互式环境中运行的命令可能是必要的。

  2. 当提示输入密码时,输入 labex 用户的密码。

  3. 你应该会看到显示系统运行时间的输出,以及负载平均值信息。

  4. 现在,让我们尝试一个交互式命令。运行以下命令:

    ssh -t [email protected] 'top -n 1'

    这将运行 top 命令,该命令通常提供系统进程的交互式视图,但在这里我们使用 -n 1 选项在一次迭代后退出。

  5. 再次在提示时输入 labex 用户的密码。

  6. 你应该会看到一个格式化输出,显示系统上运行的主要进程。

创建并访问远程文件

让我们练习在“远程”系统上创建文件并访问它。这展示了如何使用 SSH 操作远程系统上的文件。

  1. 使用 SSH 在远程系统的主目录中创建一个名为 remote_test.txt 的文件:

    ssh [email protected] 'echo "This is a test file created remotely" > ~/remote_test.txt'

    该命令使用 SSH 在远程系统上运行 echo 命令,然后将文本输出到一个新文件中。

  2. 现在,让我们查看刚刚创建的文件的內容:

    ssh [email protected] 'cat ~/remote_test.txt'

    cat 命令用于显示文件的內容。

  3. 你应该会在终端中看到消息 "This is a test file created remotely"。

  4. 让我们通过列出文件来确认其存在:

    ssh [email protected] 'ls -l ~/remote_test.txt'

    这将显示文件的详细信息,包括权限、大小和创建日期。

总结

在本实验中,你学习了如何使用 ssh 命令远程连接并管理 Linux 系统。你练习了从环境变量中获取用户密码、通过 SSH 连接到本地系统(模拟远程连接)、远程执行命令、使用 SSH 分配伪终端,以及在“远程”系统上创建和访问文件。

这些技能对于系统管理员和需要远程管理 Linux 系统的任何人来说都是基础。请记住,虽然我们使用本地系统进行练习,但这些相同的命令和技术可以用于通过网络或互联网连接和管理真正的远程系统。

在处理远程系统时,始终优先考虑安全性。使用强密码,保持系统更新,并考虑在生产环境中使用基于密钥的认证等额外的安全措施。

随着你在系统管理领域的深入学习,你会发现 SSH 是远程管理和故障排除中不可或缺的工具。

您可能感兴趣的其他 Linux 教程