如何使用SSH在远程机器上运行需要sudo权限的命令
Secure Shell有很多使用技巧,比如无需登录即可在远程服务器上运行命令。当然,您可也登录到服务器,运行命令,然后退出,只是需要多花点时间。但是为什么不一次性完成所有操作呢?这不仅方便,而且非常简单。
您需要再准备两台Linux机器以供测试,都要有正在运行的openssh-server。如果未安装,则可以从标准存储库执行此操作。例如,在Ubuntu Server平台上,安装SSH守护程序的命令是:
sudo apt-get install openssh-server -y
对于CentOS 7,命令是:
sudo yum install -y openssh-server
安装后,您将需要使用以下命令启用服务器:
sudo systemctl start sshd
sudo systemctl enable sshd
现在您已在远程服务器上运行openssh-server,您可以向它们发送命令。让我们来看看会怎么样。
一、运行基本命令
让我们在远程/ etc目录中获取文件列表。为此,命令是:
ssh USER @ SERVER_IP“ls / etc”
USER是远程用户名,SERVER_IP是远程服务器的IP地址。成功输入远程用户密码后,您将获得远程服务器上/ etc /目录的列表。
十分简单。
二、运行需要sudo的命令
但是,如果您需要在远程服务器上运行需要sudo权限的命令呢?如果你还是按上面的方式运行,你会看到一个tty错误。
怎么解决这个问题?幸运的是,您可以在命令中添加一个switch。switch是-t。-t做什么?它强制执行伪终端分配,因此ssh不知道它没有可用的本地终端。
因此,要通过ssh运行需要sudo权限的远程命令,ssh命令如下所示:
ssh -t USER @ SERVER_IP“sudo COMMAND”
例如,假设您希望用户插孔在192.168.1.201升级远程服务器。这个命令是:
ssh -t jack@192.168.1.201“sudo apt-get upgrade -y”
首先会要求您提供SSH连接的用户密码,然后是第二次请求sudo权限的用户密码。
该命令将就像在本地计算机上执行一样运行(仅在远程机器上运行)。这就是通过SSH在远程机器上运行需要sudo特权的命令的全部内容。