这篇文章中记录下如何使用 SSH 来远程执行命令。
1. 背景
传统的 SSH(Secure SHell)的使用方法一般是:首先利用 SSH 登录到远程主机,然后在远程主机上执行相关命令。
但是有时候我们可能有这种需求:我只是想看下远程主机上的某个文件是否存在,或者查看远程主机的某种工作状态,我们只是想看下这种信息,并不想先登录然后执行命令完再退出这种繁琐的操作。SSH 是支持在本地直接将命令提交给远程主机来执行的,执行完命令后返回用户本地的控制台,而不需要手动退出远程的登录。
2. 使用方法
简单使用
可以直接在 SSH 登录的命令后加上想要执行的命令,即可让该命令在远程主机上执行,执行完之后立刻返回本地的命令行:
1 | ssh <user_name>@<host_name> '<your command>' |
例如,我想看远程主机上面 HOME 目录有什么文件,那么可以:
1 | 注意,如果命令需要带参数,那么整个命令串一定要用单引号括起来 |
-t
参数
有时候我们执行的命令需要和用户进行一定的交互,例如使用 sudo
的命令一定需要用户输入密码,这种情况如果仍然像上面那样来提交命令会出错,我们需要加入 -t
参数:
1 | ssh -t user@202.38.79.55 'sudo apt update' |
1 | ssh -t user@202.38.79.55 'htop' |
只有带上了 -t
参数,这种交互式的命令才会执行成功。