温馨提示×

ubuntu ssh自动化怎么实现

小樊
33
2026-10-09 23:11:44
栏目: 智能运维

在 Ubuntu 上实现 SSH 自动化,通常有以下几种常见场景和做法,我按从简单到进阶给你梳理一下。


一、SSH 免密登录(最基础)

1. 生成密钥

ssh-keygen -t rsa -b 4096

一路回车即可(默认 ~/.ssh/id_rsa)

2. 拷贝公钥到远程服务器

ssh-copy-id user@remote_host

3. 测试

ssh user@remote_host

✅ 不再需要密码


二、使用 sshpass(不推荐但简单)

适合脚本里必须输密码的情况。

sudo apt install sshpass

sshpass -p 'password' ssh user@host 'command'

⚠️ 密码明文字符串不安全,仅测试用。


三、Shell 脚本自动化 SSH 命令

示例:远程执行命令

#!/bin/bash

HOST=user@192.168.1.10

ssh $HOST <<'EOF'
  uptime
  df -h
  systemctl status nginx
EOF

四、expect 实现交互式自动化(推荐)

适合:

  • 第一次连接
  • 需要输入 yes / 密码
  • 交互式命令

安装

sudo apt install expect

示例脚本

#!/usr/bin/expect

spawn ssh user@192.168.1.10
expect {
    "yes/no" { send "yes\r"; exp_continue }
    "password:" { send "yourpassword\r" }
}
interact

五、Ansible(企业级自动化)

安装

sudo apt install ansible

配置主机

/etc/ansible/hosts

[servers]
192.168.1.10
192.168.1.11

执行命令

ansible servers -m ping
ansible servers -m shell -a "uptime"

✅ 无需写 SSH 脚本
✅ 可批量管理成百上千台服务器


六、定时任务(cron + SSH)

crontab -e
0 2 * * * ssh user@host '/backup.sh'

⚠️ 必须已配置免密登录


七、常见自动化场景总结

场景 推荐方式
登录不输密码 SSH 密钥
脚本执行命令 ssh + 脚本
自动输密码 expect
批量服务器 Ansible
定时任务 cron + ssh

如果你能说下具体用途(比如:自动部署?批量执行?跳板机?内网?),我可以直接给你一套可复制的方案。

0 踩