插件窝 干货文章 Linux SysOps中使用SSH进行远程脚本执行的方法

Linux SysOps中使用SSH进行远程脚本执行的方法

username SSH remote bash 199    来源:    2025-04-11

Linux SysOps中使用SSH进行远程脚本执行的方法

作为IT工程师,在Linux系统运维(SysOps)中,SSH是执行远程脚本的核心工具。以下是几种高效使用SSH执行远程脚本的方法:

1. 基本SSH命令执行

ssh username@remote_host "command_to_execute"

示例:

ssh admin@192.168.1.100 "ls -l /var/log"

2. 执行本地脚本文件

方法一:通过标准输入传递

ssh username@remote_host 'bash -s' < local_script.sh

方法二:使用cat和管道

cat local_script.sh | ssh username@remote_host 'bash'

3. 执行远程服务器上的脚本

ssh username@remote_host "/path/to/remote_script.sh"

4. 带参数执行脚本

ssh username@remote_host "/path/to/script.sh arg1 arg2"

5. 多命令执行

ssh username@remote_host "command1; command2; command3"

或者使用heredoc语法:

ssh -T username@remote_host <<'EOF'
command1
command2
command3
EOF

6. 使用SSH密钥认证(推荐)

ssh -i /path/to/private_key username@remote_host "command"

7. 后台执行长时间运行的脚本

ssh -f username@remote_host "nohup /path/to/script.sh > /dev/null 2>&1 &"

8. 使用SSH配置简化连接

~/.ssh/config中添加:

Host myserver
    HostName remote_host
    User username
    IdentityFile ~/.ssh/id_rsa
    Port 22

然后可以简化为:

ssh myserver "command"

9. 并行执行多个服务器

使用GNU Parallel或xargs:

echo -e "server1\nserver2\nserver3" | parallel -j 10 ssh {} "command"

10. 安全注意事项

  1. 始终使用SSH密钥而非密码
  2. 限制sudo权限
  3. 使用-t选项强制伪终端分配(交互式脚本)
  4. 考虑使用Ansible等配置管理工具处理复杂任务

高级技巧

端口转发执行

ssh -L 8080:localhost:80 username@remote_host "command"

代理跳转执行

ssh -J jumpuser@jumpserver username@remote_host "command"

检查命令返回值

if ssh username@remote_host "command"; then
    echo "Success"
else
    echo "Failed"
fi

这些方法涵盖了大多数远程脚本执行场景,根据具体需求选择最适合的方式。