在分布式应用之中经常要将两台机器的命令打通,需要在A机器上触发B机器上的某条命令,比如,在做svn的主从同步服务过程中,需要在A机器上触发B机器上的 svn up /var/www/html 命令,在A机器上可以这样执行:
ssh 10.2.3.34 "svn up /var/www/html" 这条命令在控制台中执行的话会提示您需要输入B机器上的用户名密码,才能正常执行。问题是,如果要将这条命令写道shell 文件中,在执行过程中没有机会让你去输入用户信息。
这样就需要事先在AB两台机器之间建立信任机制。
打通两台服务器的SSH的方法简单,只要执行以下步骤就行了:
1 假设都是用root用户,在A机器上cd /root/.ssh 然后执行命令ssh-keygen命令,
控制台会打印出以下提示,都敲击回车就行了
Enter file in which to save the key (/home/svnsync/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again:
然后会在目录下产生一个新的公钥文件 id_rsa.pub,打开该公钥文件,将里面的内容拷贝下来
如果之前你使用的 adduser svnsync(此应该为受控机)为系统添加了一个专门做svn同步的用户帐户,此时需要先执行以下
su - svnsync,然后执行以下 ssh 123.123.123.123 (ip随便好了),之后就 cd /home/svnsync/.ssh
2 打开B服务器的 /root/.ssh目录,(假设当前登录的用户是 root用户)vi authorized_keys 该文件,将光标移动到文件最后一行,将剪贴板中的内容添加到文件的结尾。
注意:authorized_keys 这个文件需要有执行权限,执行chmod 700 authorized_keys 就行了
3最后在A 上执行ssh 10.2.3.34 "svn up /var/www/html"敲击回车之后,会显示确认对话框,输入“yes”就ok了
注:默认情况下 用户的 当前目录都会在 /home/目录下,例如:/home/baisui /home/user2 等,也有不是这个目录下的,比如:在服务器上安装了tomcat5,tomcat5的拥有者为tomcat用户,但是在/home 目录下没有该用户的文件夹,但是可以用过执行 “sudo vi /etc/passwd” 这个命令来查看:
tomcat:x:91:91:Tomcat:/usr/share/tomcat5:/bin/sh
有这么一条,说明tomcat的当前目录是 /usr/share/tomcat5 这个目录
另外,如果当前你没有root权限,如果要执行一些自动化的批处理,需要手工输入的话可以考虑使用 expect命令,可以帮你事半功倍,http://www.pythonclub.org/linux/expect http://www.tcl.tk/man/expect5.31/expect.1.html
以下这段代码可以在 远端服务器上的/home/yunjiu.llh 目录下创建一个tmp目录
#!/usr/bin/expect set timeout 30 #spawn ssh 172.24.157.108 expect -d<<EOF spawn ssh -l yunjiu.llh 172.24.157.104 expect "*assword*" send "123456\r" expect "*]*" #sleep 3 send "mkdir /home/yunjiu.llh/tmp\r" expect "*]*" exit
一个远程执行ssh 环境变量的问题:
执行如下代码:~/myscript.sh: line n: app: command not found,不能正常执行
显然在远程编辑 /etc/profile 文件没有效果,而是要 去编辑
vim /etc/bashrc,在文件最后export上环境变量
http://feihu.me/blog/2014/env-problem-when-ssh-executing-command-on-remote/
Ansible利用代理服务器操作私有云N台服务器
假设需要通过Ansible操作私有网络中的N台服务器,执行机器是在私有网络外部,连接Ansible操作客户端(A)的有一台代理服务器(B),B与私有网络中的其他机器(C)是通过私钥认证打通的。
进行这个操作需要确定两部分连接是正常的,首先A->B, 和B->私有网络中的机器C
A->C打通可以以下步骤来确定:
- 确认A上的Ansible操作端开启服务器Forward权限,vim /root/.ssh/config
-
Host * ForwardAgent yes ForwardX11 no KeepAlive yes ServerAliveInterval 30
ForwardAgent需要为yes - 确认A的公钥加入B的authorized_keys
- 先到B机器执行ssh-add操作,确认ssh-add -l是否正常加入想要的私钥
- 执行ssh-add -l 显示ssh-agent缓存中的秘钥配置,如果连接B的秘钥配置不在缓存中则进如下一步
- 在B机器中将操作/home/centos/.ssh/authorized_keys 将私钥对应的公钥添加进去
- 执行ssh-add files/id_rsa003 将私钥加入到ssh-agent中
- 验证ssh-add 是否成功,通过ssh到B机器 ssh centos@34.99.108.87 ,如正常登录哦则说明ssh-add 成功了
相关推荐
打通两台机器间的信任关系,并分发文件;探测另一台机器crontab和sshd,并在它们挂掉后将它们拉起;自动kill掉超时5分钟的mysql进程
expect+python组合实现一键SSH
基于海思hi3531D的ssh服务器的搭建,采用zlib+dropbear的工具结合的方式,具有占用空间小,稳定性好等优点,亲测流程可用,含详细流程截图。
做开发的时候要做MySQL的数据库同步,两台安装一样的系统,都是FreeBSD5.4,安装了Apache 2.0.55和PHP 4.4.0,MySQL的版本是4.1.15,都是目前最新的版本。本文将为大家介绍如何在两台MySQL数据库间实现同步。
打通构建地质数据管理服务大格局的关窍.pdf 打通构建地质数据管理服务大格局的关窍.pdf 打通构建地质数据管理服务大格局的关窍.pdf 打通构建地质数据管理服务大格局的关窍.pdf 打通构建地质数据管理服务大格局的关窍...
两个demo javaweb程序,一个最简单的ssh配置打通的项目和一个详细配置说明的项目。
基于Web的SSH客户端 我们现在大多数的ssh客户端其实都是基于不同的操作系统设计的,例如windows的putty,还有mac的iTerm。现在基于iaas的云服务在行业中广泛地使用,从安全角度,以及使用的方便性上,我们希望给云...
PK老板一个简单的命令行脚本,使用Elixir通过ssh管理公钥。 它允许您在一个位置管理多台服务器的公钥。安装该脚本需要Elixir。 可以在安装说明设置对于要管理的每个服务器,在pk_boss / auth_keys目录中创建一个文件...
下面小编就为大家带来一篇用python写个自动SSH登录远程服务器的小工具(实例)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Windows Azure使用入门 第五课:用户认证上下打通.pdf
由 5 台 CISCO7204 组成的网络,一台为 P 路由器,两台 PE 路由器,两台 CE 路由器; 二 二二 二、 、、 、网络描述 网络描述网络描述 网络描述 在 P 和两台 PE 路由器这间通过 OSPF 动态路由协议完成 MPLS 网络的建立...
“打通生命通道”消防专项整治活动总结111222.docx
微信使用unionid作为一个帐号下不同App的统一标识appid的打通有2种方式:(用户数据即是指有用户登录的)1、只有一个有用户数据或者两个都没有用户数据其
nodejs 使用原生的 dubbo (dubbo head hessian body) 协议打通了 dubbo 的 rpc 方法调用 .
此软件可以让您熟悉键盘键位,快速实现盲打
可以打通Demo源码,主要用了gridview和detailsview 这两个控件实现数据库的增删改及报表生成功能 P.S. 数据库使用的是SQLserver2000,数据库名为emp 有什么问题大家欢迎大家指正,互相学习
CRMEB V4.4标准版打通版商城源码小程序公众号H5 App商城源码安装教程运行环境:php/mysql介绍:服务器环境推荐要求:Nignx/Apache/IISPHP 7.1 ~ 7.4MySQL 5.7Redis技术亮点1.自主研发独立客服系统;2.管理端页面使用...
CRMEB客户管理+电商营销系统 核心技术TP6+Mysql+Vue+layui 支持公众号、小程序、H5端,带积分、优惠券、秒杀、会员、分销等功能,前后端“全部”开源,方便二开,详细使用文档可商用。企业公域流量转私域流量必备...
打通Linux脉络系列:进程、内存与IO111.pdf