Ubuntu下非交互式执行远程shell命令:实现简单高效的远程管理

将公钥添加到服务器上4、步骤三:用于在计算机之间复制文件和目录的命令行工具。使用scp命令将公钥文件上传到服务器上。test ~/.ssh/以上操作将会在远程服务器上创建.ssh目录。

在Linux系统中,我们经常需要进行远程管理操作,例如在服务器上执行一些命令、修改配置文件等。而对于Ubuntu系统来说,非交互式执行远程shell命令是一种简单高效的方式。本文将介绍如何使用该方法实现Ubuntu下的远程管理操作。

前置知识

在学习本文内容之前,你需要了解以下几个概念:

1. SSH(Secure Shell):一种网络协议,用于在不安全的网络中为网络服务提供安全性保障。

2. ssh-keygen:一个生成SSH密钥对(公钥和私钥)的工具。

3. scp(secure copy protocol):用于在计算机之间复制文件和目录的命令行工具。

步骤一:生成SSH密钥对

首先,在本地计算机上生成SSH密钥对。打开终端窗口,并输入以下命令:

“`

ssh-keygen

按照提示输入密码即可完成密钥对的生成。默认情况下,在/home/username/.ssh/路径下会生成id_rsa和id_rsa.pub两个文件。其中id_rsa为私有密钥,id_rsa.pub为公共密钥。

接着,在服务器上创建一个新用户,并将该用户添加到sudo组中。这里以创建一个名为test的用户为例,输入以下命令:

sudo adduser test

sudo usermod -aG sudo test

步骤二:将公钥添加到服务器上

在本地计算机上,使用scp命令将公钥文件上传到服务器上。假设我们的服务器IP地址为192.168.1.100,并且我们已经将公钥文件命名为test.pub,则输入以下命令:

scp ~/.ssh/test.pub test@192.168.1.100:~/

其中,~/.ssh/test.pub是本地计算机上的公钥文件路径,test是我们在服务器上创建的新用户名称,192.168.1.100是服务器IP地址。

接着,在远程服务器上执行以下命令:

mkdir ~/.ssh

cat ~/test.pub >> ~/.ssh/authorized_keys

rm ~/test.pub

chmod 700 ~/.ssh/

Ubuntu下非交互式执行远程shell命令:实现简单高效的远程管理

chmod 600 ~/.ssh/authorized_keys

chown -R test:test ~/.ssh/

以上操作将会在远程服务器上创建.ssh目录,并将公钥添加到authorized_keys文件中。

步骤三:测试连接

现在,在本地计算机终端窗口中输入以下命令:

ssh test@192.168.1.100

如果一切正常,你应该能够成功登录到远程服务器并得到类似于下面的提示信息:

Welcome to Ubuntu 20.xx LTS (GNU/Linux x.xx.x-xx-generic x86_64)

* Documentation:

* Management:

* Support:

0 updates can be installed immediately.

0 of these updates are security updates.

Last login: Thu Oct 21 14:34:19 2021 from 192.168.1.x

步骤四:非交互式执行远程shell命令

现在,我们已经成功地建立了SSH连接,并能够登录到远程服务器。接下来,我们可以使用ssh命令来非交互式执行远程shell命令。

假设要在远程服务器上执行一个名为test.sh的脚本文件,则输入以下命令:

ssh test@192.168.1.100 ‘bash -s’ < test.sh

其中,test@192.168.1.100是你要连接的服务器IP地址和用户名,test.sh是你要执行的脚本文件。

如果一切正常,该脚本文件将会被在远程服务器上执行。需要注意的是,在这种情况下,不会出现任何交互式界面或提示信息。

通过以上步骤,我们已经成功地实现了Ubuntu下非交互式执行远程shell命令。这种方法简单高效、安全可靠,并且适用于各种场景。希望本文对您有所帮助!