linux服务器执行远程命令几种方式
在 Linux 服务器 上使用 SSH 执行远程命令的方式常见有以下几种:
# 1. 直接在命令行中执行远程命令
ssh user@remote_host "ls -l /home"
1
- 只执行一次命令,执行完即退出。
- 常用于快速查询、批量操作。
# 2. 多条命令执行
ssh user@remote_host "cd /var/log && tail -n 10 syslog"
1
或使用分号:
ssh user@remote_host "mkdir -p /tmp/test; touch /tmp/test/1.txt"
1
# 3. 执行本地脚本到远程
ssh user@remote_host 'bash -s' < local_script.sh
1
- 将本地脚本传给远程主机执行,不需要提前拷贝脚本到远程。
# 4. 通过管道传递命令
cat local_script.sh | ssh user@remote_host "bash -s"
1
- 类似方式,适合流水线脚本。
# 5. 远程交互式执行(伪终端)
ssh -t user@remote_host "htop"
1
-t
参数强制分配伪终端,适合交互式命令(如htop
、vim
)。
# 6. 通过 Here Document 执行批量命令
ssh user@remote_host << 'EOF'
echo "当前主机: $(hostname)"
df -h
uptime
EOF
1
2
3
4
5
2
3
4
5
- 一次性执行多行命令。
# 7. 结合 scp
先传文件再执行
scp local_script.sh user@remote_host:/tmp/
ssh user@remote_host "bash /tmp/local_script.sh"
1
2
2
- 适合需要持久脚本的场景。
# 8. 通过 sshpass
执行(非交互密码)
sshpass -p "password" ssh user@remote_host "ls /home"
1
- 在自动化脚本中使用,缺点是不安全(明文密码)。
# 9. 借助 ProxyCommand
/ ProxyJump
中转执行
ssh -J user@jump_host user@target_host "hostname"
1
- 适合跳板机场景。
✅ 总结:
- 简单命令 → 直接
ssh user@host "command"
- 多行命令/脚本 → Here Document / 管道
- 自动化 → scp + ssh / sshpass / Ansible
# Linux 使用 SSH 执行远程命令方式对比表,包含常见方式、使用示例、适用场景、优缺点:
# 🔹 SSH 执行远程命令方式对比表
方式 | 示例 | 适用场景 | 优点 | 缺点 | |
---|---|---|---|---|---|
直接执行单条命令 | ssh user@host "ls -l /home" | 临时查询、单条命令执行 | 简单快捷 | 只能执行一条命令 | |
多条命令串行执行 | ssh user@host "cd /var; ls; df -h" | 一次执行多条命令 | 一次性完成多任务 | 命令过多时可读性差 | |
本地脚本远程执行 | ssh user@host 'bash -s' < local.sh | 执行本地已有脚本 | 不需拷贝到远程 | 仅临时执行,脚本不保留 | |
管道传递脚本 | `cat local.sh | ssh user@host "bash -s"` | 脚本内容动态生成 | 灵活,不落地 | 调试不方便 |
Here Document | ssh user@host <<'EOF' \necho $(hostname)\ndf -h\nEOF | 一次性执行多行命令 | 脚本直观 | 不适合复杂脚本 | |
scp + ssh 执行 | scp local.sh user@host:/tmp/ && ssh user@host "bash /tmp/local.sh" | 脚本需要多次执行 | 脚本可复用 | 需要额外传输步骤 | |
交互式命令 (伪终端) | ssh -t user@host "htop" | 运行交互程序 | 支持交互 | 不能用于自动化 | |
sshpass(免交互密码) | sshpass -p "pwd" ssh user@host "date" | 无法用密钥时的自动化 | 方便 | 不安全,密码明文 | |
跳板机执行 (ProxyJump) | ssh -J user@jump user@target "hostname" | 需要经过跳板机 | 配置简单 | 依赖 OpenSSH 7.3+ | |
批量自动化工具 | ansible all -m shell -a "df -h" | 大规模批量运维 | 功能强大 | 需要额外工具支持 |
👉 选型建议:
- 临时操作:直接
ssh "command"
- 批量命令/脚本:Here Document 或 scp+ssh
- 自动化:sshpass(小规模) / Ansible(大规模)
- 复杂运维:推荐使用 Ansible、SaltStack 等配置管理工具


上次更新: 2025/09/19, 10:36:50