Chinaunix首页 | 论坛 | 博客
  • 博客访问: 803262
  • 博文数量: 274
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 862
  • 用 户 组: 普通用户
  • 注册时间: 2015-10-24 15:31
个人简介

不合格的程序猿

文章分类

全部博文(274)

文章存档

2019年(3)

2018年(1)

2017年(4)

2016年(160)

2015年(106)

我的朋友

分类: 系统运维

2016-03-11 15:20:04

ssh执行远程操作
命令格式

点击(此处)折叠或打开

  1. ssh -p $port $user@$p 'cmd'
  2.   
  3. $port : ssh连接端口号
  4. $user: ssh连接用户名
  5. $ip:ssh连接的ip地址
  6. cmd:远程服务器需要执行的操作

准备工作

基于公私钥认证或者用户名密码认证能确保登录到远程local2服务器(有点基本运维知识的人做这个事情都不是问题)
cmd如果是脚本,注意绝对路径问题(相对路径在远程执行时就是坑)

不足

这个命令可以满足我们大多数的需求,但是通常运维部署很多东西的时候需要root权限,但是有几处限制:
远程服务器local2禁止root用户登录
在远程服务器脚本里转换身份用expect需要send密码,这样不够安全

ssh的-t参数


点击(此处)折叠或打开

  1. -t Force pseudo-tty allocation. This can be used to execute arbitrary screen-based programs on a remote machine, which can be very useful, e.g. when implementing menu services. Multiple -t options force tty allocation, even if ssh has no local tty.
中文翻译一下:就是可以提供一个远程服务器的虚拟tty终端,加上这个参数我们就可以在远程服务器的虚拟终端上输入自己的提权密码了,非常安全 
命令格式

点击(此处)折叠或打开

  1. ssh -t -p $port $user@$ip 'cmd'
示例脚本

点击(此处)折叠或打开

  1. #!/bin/bash
  2.   
  3. #变量定义
  4. ip_array=("192.168.74.237" "192.168.74.238" "192.168.74.239")
  5. user="test1"
  6. remote_cmd="/home/test/2.sh"
  7.   
  8. #本地通过ssh执行远程服务器的脚本
  9. for ip in ${ip_array[*]}
  10. do
  11.     if [ $ip = "192.168.74.237" ]; then
  12.         port="7777"
  13.     else
  14.         port="22"
  15.     fi
  16.     ssh -t -p $port $user@$ip "remote_cmd"
  17. done
这个方法还是很方便的,-t虚拟出一个远程服务器的终端,在多台服务器同时部署时确实节约了不少时间啊!

 6.0下SSH免密码登录配置 

提高Ubuntu的SSH登陆认证速度的办法 

开启SSH服务让手机远程访问 Ubuntu 14.04  

如何为Linux系统中的SSH添加双重认证 

在 Linux 中为非 SSH 用户配置 SFTP 环境 

Linux 上SSH 服务的配置和管理 

SSH入门学习基础教程 

本文永久更新链接地址


阅读(950) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~