远程管理Linux系统:通过SSH执行命令

在现代计算机管理中,远程管理变得愈发重要,而SSH(Secure Shell)协议为在远程系统上执行命令或程序提供了强大的工具。SSH不仅允许我们避免频繁登录和注销远程系统,还可以在数据安全性得到保障的同时轻松进行管理。

起始故事

假设您是一家跨国企业的IT管理员,您需要远程管理分布在不同地理位置的Linux服务器。某一天,您面临了一个紧急问题:您需要立即在远程服务器上执行一项关键任务,但无法亲自前往机房。这时,SSH成了您的救星。本教程将向您展示如何使用SSH在远程Linux系统上执行命令,帮助您迅速解决问题,确保业务持续运行。

步骤一:使用SSH执行远程命令

使用SSH在远程系统上运行命令或脚本的标准方法如下:

$ ssh <用户名@IP地址或域名> <命令或脚本>

接下来,我们将通过几个示例详细说明如何执行远程命令。

1.1 在远程系统上执行单个命令

假设您想获取远程Linux系统的内核详细信息,只需运行以下命令:

$ ssh user@192.168.1.100 uname -a

这里,user是远程系统的用户名,192.168.1.100是远程系统的IP地址,uname -a是您希望在远程系统上执行的命令。

您还可以使用引号将命令括起来,如下所示:

$ ssh user@192.168.1.100 "uname -a"

或者:

$ ssh user@192.168.1.100 'uname -a'

1.2 在远程系统上执行多个命令

您可以在远程系统上运行多个命令,将它们放在引号中,例如:

$ ssh user@192.168.1.100 "uname -r && lsb_release -a"

或者使用分号:

$ ssh user@192.168.1.100 "uname -r ; lsb_release -a"

1.3 在远程系统上运行需要sudo权限的命令

某些命令需要sudo权限才能运行,例如安装软件。您可以通过SSH运行这些命令,如下所示:

$ ssh -t user@192.168.1.100 sudo apt install apache2

请注意,这里使用了-t标志来强制分配伪终端,以确保输入sudo密码时可以正常进行。

1.4 在远程系统上运行本地脚本

您还可以在本地系统上创建一个脚本,然后通过SSH在远程系统上运行它。例如,您可以创建一个名为system_information.sh的脚本,用于显示远程系统的一些基本信息:

#!/bin/bash
#Name: Display System Details
#Owner: YourName
#----------------------------
echo /etc/*_ver* /etc/*-rel*; cat /etc/*_ver* /etc/*-rel*

然后通过以下命令在远程系统上运行这个脚本:

$ ssh user@192.168.1.100 'bash -s' < system_information.sh

1.5 将远程命令输出保存到本地文件

如果您想与团队或同事共享远程系统上运行的命令输出,您可以将命令输出保存到本地文件。例如,以下命令将远程系统上运行的du -ah命令输出保存到本地的diskusage.txt文件中:

$ ssh user@192.168.1.100 du -ah > diskusage.txt

然后,您可以使用cat命令或文本编辑器查看diskusage.txt文件,以分析磁盘使用情况。

步骤二:使用sshpass执行远程命令

如果您不想配置基于SSH密钥的身份验证,您可以使用sshpass工具来在远程系统上运行命令。

2.1 了解sshpass

sshpass是一个实用程序,用于以非交互方式运行需要交互式密码验证的SSH命令。它提供了一种非交互式的方式来验证SSH会话。

2.2 安装sshpass

在许多Linux发行版中,您可以通过包管理器安装sshpass。例如,在Debian、Ubuntu及其衍生版本中,您可以使用以下命令:

$ sudo apt install sshpass

2.3 通过sshpass执行远程命令

您可以使用sshpass传递密码,或通过环境变量或文本文件来读取密码。

2.3.1 将密码作为参数提供

您可以通过参数-p将密码作为参数传递给sshpass,如下所示:

$ sshpass -p <远程密码> ssh 远程用户名@远程IP地址 <要执行的命令>

例如:

$ sshpass -p ubuntu ssh ostechnix@192.168.1.30 uname -a

2.3.2 将密码作为环境变量提供

您可以在环境变量中设置密码,然后使用-e标志来执行命令,如下所示:

$ SSHPASS=ubuntu sshpass -e ssh ostechnix@192.168.1.30

 uname -a

2.3.3 从文本文件中读取密码

您可以使用echo命令将密码追加到文本文件中:

$ echo "ubuntu" > mypassword.txt

然后通过-f标志将密码文件传递给sshpass

$ sshpass -f mypassword.txt ssh ostechnix@192.168.1.30 uname -a

结论

SSH是远程管理Linux系统的强大工具,它允许您在远程系统上执行命令或程序,从而实现更便捷和高效的管理。无论是通过SSH原生命令还是使用sshpass工具,您都可以根据需要选择最适合的方法。但需要注意的是,为了保证系统安全性,不推荐在生产环境中使用sshpass,而应尽量使用基于SSH密钥的身份验证方式。

通过学习如何使用SSH来远程执行命令,您可以更好地管理和维护远程Linux系统,确保它们在任何时候都能够稳定运行。

本文由作者 王大神 原创发布于 大神网的AI博客。

转载请注明作者:王大神

原文出处:远程管理Linux系统:通过SSH执行命令

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2023年9月3日
下一篇 2023年9月3日

相关推荐

  • 如何使用Python自动化抢购京东商品并邮件通知

    在互联网时代,网购已经成为我们生活的一部分。然而,有些热门商品往往在瞬间售罄,让人们很难买到心仪的商品。不过,幸运的是,Python编程语言可以帮助我们自动化抢购京东商品,并通过邮件通知我们是否成功。在这…

    2023年10月24日
    00
  • macOS Touch ID解锁问题:YubiKey与密码的困扰

    在数字时代,安全性与便捷性之间的平衡一直是用户和技术之间的挑战。近期,一位MacBook Air M2用户在macOS Sonoma 14.1.2上遇到了一个有趣的问题,每次锁屏后都需要输入密码,无法使用Touch ID解锁。这个问题是否是…

    2023年12月9日
    00
  • 通过Cloudflare隧道连接SSH服务器:实现安全远程访问

    嗨,大家好!在这个信息时代,远程访问和安全性变得愈发重要。你是否曾想过如何在不暴露服务器的入站端口的情况下,在互联网上提供SSH服务?别担心,今天我将为你介绍如何通过Cloudflare Zero Trust实现这一目标,…

    2023年9月25日
    00
  • 生成SSH公钥:探索安全之门

    在数字时代,安全性是至关重要的。对于大多数人来说,保护其在线信息和通信是一项首要任务。而对于像王大神这样的CEO,安全问题更是至关重要,因为他在两家公司的领导地位使得他成为黑客和网络威胁的高价值目标。因…

    2023年10月8日
    00
  • JWT 和 HTTPS:安全性是如何保障的?

    在一个明亮的周末上午,小明正在忙碌地为他的新项目编写代码。他需要实现用户认证功能,所以选择了 JWT(JSON Web Tokens)作为认证方案。一切进展顺利,但当他与团队成员讨论项目上线细节时,一个问题出现了:他们…

    2023年10月9日
    00
  • 在 Ubuntu 20.04 上一键安装 Docker 的教程

    在 Ubuntu 20.04 上一键安装 Docker 的教程 Docker 是一款开源的应用容器引擎,允许开发者将应用及其依赖打包到一个容器中,确保应用在任何环境中都能够一致性和可靠地运行。在本教程中,我们将向您展示如何编写一…

    2023年9月10日
    00
  • 如何优雅地在 Bash 脚本中添加注释:从初学者到专家的指南

    王大神是一名软件工程师,总是在为他的 Bash 脚本找寻最佳的注释方法。他发现,尽管注释对于许多初学者来说可能显得不那么重要,但它实际上是代码整洁和易于理解的关键。有一天,他决定深入研究这个话题,并为 Bash…

    2023年10月28日
    00
  • 如何在Linux/Ubuntu 20.04中修改SSH默认端口

    在互联网上,保护服务器的安全是至关重要的。其中一个重要的安全措施是修改SSH(Secure Shell)的默认端口,这可以减少恶意攻击的风险。在这篇教程中,我们将学习如何在Linux/Ubuntu 20.04操作系统中修改SSH的默认2…

    2024年1月7日
    00
  • 如何实现JWT在线踢人功能

    JWT(JSON Web Token)是一种用于认证和授权的开放标准,通常用于在客户端和服务器之间安全地传输信息。然而,要实现JWT的在线踢人功能并不是一件容易的事情,因为JWT本身是无状态的。本文将介绍一种实现JWT在线踢…

    2023年10月11日
    00
  • 如何使用sshpass执行远程脚本

    在现代的计算环境中,远程服务器管理已经成为了日常任务的一部分。无论您是系统管理员、开发人员还是任何需要远程管理服务器的角色,您都需要有效地执行远程脚本以自动化任务或部署应用程序。本教程将介绍如何使用s…

    2023年11月4日
    00