我正在测试如何 复制文件或目录时不要更改文件权限 适用于多个位置和系统。如果要检查远程系统上的文件权限,则需要通过 SSH 连接到该系统并检查属性。一遍又一遍地登录和退出远程系统的过程对我来说有点麻烦。我认为如果我可以在远程 Linux 系统上通过 SSH 运行命令会更好。

幸运的是,我通过查看手册页找到了解决方法 ssh 命令。如果您想知道如何在不登录远程系统的情况下从本地系统本身在远程系统上运行命令或脚本,请参阅操作方法。

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

让我给你看一些例子。

什么时候 "uname -a" 您要从本地系统在远程系统上运行的命令。

示例输出:

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

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

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

您还可以通过在引号中指定它们来远程运行多个命令:

正如我们的一位读者在下面的评论部分中提到的那样,必须在引号中指定多个命令。没有引号,第一个命令在远程系统上运行,第二个命令只在本地计算机上运行。整个引用的命令按预期远程。

这个 “&&” 仅当第一个命令成功时,操作员才执行第二个命令。

在上述情况下,第二个命令 (sudo apt-get upgrade) 如果第一个命令成功则执行。否则它不会运行。

这个 “;” 即使第一个命令成功或失败,操作员也会执行第二个命令。

在上述情况下,第二个命令 (sudo apt-get upgrade) 即使第一个命令失败也会被执行。

有些命令有 "sudo" 执行权限。比如用命令安装 维姆 在我的远程系统上。

你注意到了吗?我用了 -t 上述命令的标志。我不得不提到这一点 -t 强制伪终端分配的标志。这可用于在远程机器上运行任何基于屏幕的程序。这很有用,例如,在实现菜单服务时。

我也输入了密码 两次从本地系统通过 SSH 访问远程系统,首先输入远程用户的密码并允许远程用户在远程系统上安装应用程序需要第二个密码 sudo(即,在本例中为 apache2)。

让我们使用以下命令确保 Apache 服务正在运行:

└─apache2-systemd.conf

同样,您可以从本地系统通过 SSH 在远程系统上运行任意命令或脚本。

让我们在本地系统上创建一个简单的脚本来显示有关远程系统的分发名称、包管理、基本详细信息等的所有可用信息。

使用以下命令通过 SSH 在远程系统上运行此脚本:

如果没有指定 'bash -s' 上述命令将允许您获取远程系统的详细信息,但不会分配伪终端。

这对于通过 SSH 与您的支持团队或同事共享在远程系统上运行的命令的输出非常有用。

如果您经常在远程系统上运行命令,您可能需要配置基于 SSH 密钥的身份验证以跳过每次输入密码。有关更多信息,请参阅下面的链接。