通过 SSH 在远程 Linux 系统上执行命令

前几天我在测试如何 在复制文件或目录时保持文件权限不变 到多个位置和系统。 当我想检查远程系统上的文件权限时,我必须通过 SSH 登录到该系统并检查属性。 多次从远程系统登录和注销的过程对我来说有点烦人。 我认为如果我能够通过 SSH 在远程 Linux 系统上执行命令会更好。

幸运的是,我在查看手册页后找到了解决方法 ssh 命令。 如果您想知道如何从本地系统本身在远程系统上运行命令或脚本,而无需登录到该远程系统,这里是如何做到的。

内容

  1. 通过 SSH 在远程 Linux 系统上执行命令
    1. 通过 SSH 在远程系统上运行单个命令
    2. 通过 SSH 在远程系统上运行多个命令
    3. 使用“运行命令sudo” 通过 SSH 访问远程系统的权限
    4. 通过 SSH 在远程系统上运行本地脚本
    5. Save 从远程系统输出到本地系统
      1. 配置基于 SSH 密钥的身份验证以避免输入密码

通过 SSH 在远程 Linux 系统上执行命令

从本地系统通过 SSH 在远程系统上运行命令或脚本的典型方法是:

$ ssh <[email protected]_Address-or-Doman_name> <Command-or-Script>

请允许我给你看一些例子。

通过 SSH 在远程系统上运行单个命令

让我们说你想 查找内核详细信息 您的远程 Linux 系统。 为此,只需运行:

$ ssh [email protected] uname -a

这里,

  • sk 是我的远程系统的用户名,
  • 192.168.225.22 是远程系统的 IP 地址,
  • "uname -a" 是我想从本地系统在远程系统上运行的命令。

样本输出:

通过 SSH 在远程 Linux 系统上执行命令

看? 我实际上并没有登录到远程系统,但执行了 uname 通过 SSH 在远程系统上执行命令,并在本地系统的终端中显示输出。

您还可以在引号中指定命令,如下所示。

$ ssh [email protected] "uname -a"

或者,

$ ssh [email protected] 'uname -a'

如果你有 更改 SSH 协议的默认端口,只需提及它使用 -p 参数如下。

$ ssh -p 2200 [email protected] uname -a

通过 SSH 在远程系统上运行多个命令

您还可以通过在下面的引号中指定它们来在遥控器上运行多个命令。

$ ssh [email protected] "uname -r && lsb_release -a"

或者,

$ ssh [email protected] "uname -r ; lsb_release -a"

上述命令将显示我的 Ubuntu 服务器的内核版本和分发详细信息。

样本输出: