博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ssh 远程执行命令简介
阅读量:4053 次
发布时间:2019-05-25

本文共 1127 字,大约阅读时间需要 3 分钟。


在写这篇博客之前,我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[*]}do	if [ $ip = "192.168.1.1" ]; then		port="7777"	else		port="22"	fi	ssh -t -p $port $user@$ip "remote_cmd"done

后记

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

转载地址:http://ejtci.baihongyu.com/

你可能感兴趣的文章
Java8 HashMap集合解析
查看>>
欢迎使用CSDN-markdown编辑器
查看>>
Android计算器实现源码分析
查看>>
Android系统构架
查看>>
Android 跨应用程序访问窗口知识点总结
查看>>
各种排序算法的分析及java实现
查看>>
SSH框架总结(框架分析+环境搭建+实例源码下载)
查看>>
自定义 select 下拉框 多选插件
查看>>
js获取url链接携带的参数值
查看>>
gdb 调试core dump
查看>>
gdb debug tips
查看>>
linux和windows内存布局验证
查看>>
linux insmod error -1 required key invalid
查看>>
linux kconfig配置
查看>>
linux不同模块completion通信
查看>>
linux printf获得时间戳
查看>>
C语言位扩展
查看>>
linux irqdebug
查看>>
git 常用命令
查看>>
linux位操作API
查看>>