在写这篇博客之前,我google了一堆相关文章,大都是说修改/etc/sudoers,然后NOPASSWD:指定的cmd,但是真心不管用,没有远程虚拟终端这个方法就是浮云,ubuntu10.04 server 亲测!!

ssh执行远程操作

命令格式

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

准备工作

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

不足

这个命令可以满足我们大多数的需求,但是通常运维部署很多东西的时候需要root权限,但是有几处限制:

  • 远程服务器local2禁止root用户登录
  • 在远程服务器脚本里转换身份用expect需要send密码,这样不够安全

执行远程服务器需要sudo权限的脚本

ssh的-t参数

 -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终端,加上这个参数我们就可以在远程服务器的虚拟终端上输入自己的提权密码了,非常安全

命令格式

ssh -t -p $port $user@$ip  'cmd'

示例脚本

#!/bin/bash#变量定义
ip_array=("192.168.1.1" "192.168.1.2" "192.168.1.3")
user="test1"
remote_cmd="/home/test/1.sh"#本地通过ssh执行远程服务器的脚本
for ip in ${ip_array[*]}
doif [ $ip = "192.168.1.1" ]; thenport="7777"elseport="22"fissh -t -p $port $user@$ip "remote_cmd"
done

后记

这个方法还是很方便的,-t虚拟出一个远程服务器的终端,在多台服务器同时部署时确实节约了不少时间啊!

ssh 远程执行命令简介相关推荐

  1. 解决SSH远程执行命令找不到环境变量的问题

    解决SSH远程执行命令找不到环境变量的问题 参考文章: (1)解决SSH远程执行命令找不到环境变量的问题 (2)http://www.cnblogs.com/zhenyuyaodidiao/p/928 ...

  2. day26-3 模拟ssh远程执行命令

    目录 模拟ssh远程执行命令 服务器 客户端 模拟ssh远程执行命令 实现在客户端输入执行命令后,返回执行命令的信息.如输入dir,显示当前目录下的所有文件和文件夹 服务器 import socket ...

  3. 【linux】ssh 远程执行命令

    1.概述 转载并且补充:ssh 远程执行命令 SSH 是 Linux 下进行远程连接的基本工具,但是如果仅仅用它来登录那可是太浪费啦!SSH 命令可是完成远程操作的神器啊,借助它我们可以把很多的远程操 ...

  4. SSH远程执行命令环境变量问题

    SSH命令格式 usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec][-D [bind_address:] ...

  5. linux 带环境变量 远程执行,SSH远程执行命令环境变量问题

    SSH命令格式 usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address: ...

  6. ssh远程执行命令 linux,Linux下使用SSH远程执行命令方法收集

    说明:可以做SSH免密登录之后执行,这样可以省去每次执行输入密码的提示. 对于简单的命令: 如果是简单执行几个命令,则: ssh user@remoteNode "cd /home ; ls ...

  7. 关于ssh远程执行命令出现xxx: command not found问题

    最初是在虚拟机搭建Hadoop3.x集群,使用命令ssh hadoop001 jps,出现: bash: jps: command not found 但是单独测试jps命令和先ssh登录再测试jps ...

  8. 【linux】ssh 远程执行命令自动输入密码方式

    ssh 远程执行命令自动输入密码方式 场景: 由于多台机必须要登陆执行命令,需要使用密钥一台台登录,所以每次登陆机器的时候都需要手动输入域账号密码.密码太长且复杂,手动输入容易输错,故使用脚本来做这个 ...

  9. 远程启动hadoop,ssh远程执行命令报错!hdfs命令不存在!

    1.任务:远程启动hadoop集群. #!/usr/bin/env bash HADOOP_HOME=/root/hadoop/hadoop-3.3.2 if [ $# -lt 1 ] thenech ...

最新文章

  1. 阿里1688直播推荐算法实践
  2. Asp.net Response.Redirect with post data
  3. thymleaf th:text 和 th:utext 之间的区别
  4. sqli-labs(十三)(hpp)
  5. 深度linux安装postgresql_在 Linux 上安装 PostgreSQL
  6. 2PC协议(2-phase-commit protocol)
  7. 嵌入式基础之----C++
  8. 如何在Wireshark确定数据集?
  9. java两个数组中不同的数字_java将两个数组中不同的数字去掉一个剩下的保存到一个新的数组中...
  10. io多路复用的原理和实现_多路复用IO内幕
  11. 第一部分 第四章 1059-1101 答案合集
  12. python热力相关系数图_【Python可视化6】Seaborn之heatmap热力图
  13. An Empirical Analysis of Anonymity in Zcash
  14. 你们公司用的 Maven 私服就是这么搭建的,头条抖音后端技术3面
  15. Matlab 中类的定义
  16. linux c设置打印机属性,如何恢复打印机属性的“功能”部分
  17. 诗词锦集(持续更新)
  18. 《如果你想过1%的生活》 - 读后感
  19. java List删除元素问题及解决办法
  20. The Shawshank Redemption-10

热门文章

  1. 用c语言编程判断一个数是否为回文数,C语言判断一个数是不是回文数
  2. android gps 修改工具箱,如何对安卓版GPS工具箱1.7.1版本导入路线
  3. APPScan扫描器
  4. 查全国银行CNAPS CODE的地址
  5. Grafana添加星空背景
  6. 微信支付密码设置html,微信怎么修改支付密码【操作办法】
  7. Android触摸事件传递分析与实践
  8. Lidar360 基本操作
  9. R语言|绘制简单小提琴图
  10. css l数字相加,CSS calc()的完整指南