salt-ssh 部署key

[[email protected] ~]# salt-master --versions-report

Salt: 2014.1.10
Python: 2.7.8 (default, Aug 17 2014, 20:11:11)
Jinja2: 2.7.3
M2Crypto: 0.22
msgpack-python: 0.4.2
msgpack-pure: 0.1.3
pycrypto: 2.6.1
PyYAML: 3.11
PyZMQ: 13.0.0
ZMQ: 3.2.4

[[email protected] ~]# uname -r
2.6.32-431.23.3.el6.x86_64

[[email protected] ~]# vi /etc/salt/roster
slave:
  host: 192.168.1.130
  user: root
  passwd: passwd# root 密码
  port: 22

配置好roster就可以使用salt-ssh
当把key部署好就可以把passwd删除
[[email protected] ~]# salt-ssh ‘slave‘ --key-deploy -r ‘ip a‘
...................
  File "/usr/local/python27/lib/python2.7/site-packages/salt/client/ssh/__init__.py", line 551, in __arg_comps
    (key, val) = arg.split(‘=‘)
ValueError: too many values to unpack

调试

[[email protected] ~]# vi /usr/local/python27/lib/python2.7/site-packages/salt/client/ssh/__init__.py
    545         fun = comps[0] if comps else ‘ ‘
    546         import sys  #debug
    547         sys.stdout.write("%s\n"%fun)
    548         args = comps[1:]

[[email protected] ~]# salt-ssh ‘slave‘  --key-deploy -r ‘ip a‘
ip
ssh.set_auth_key
..................

ip 是方法,当--key-deploy时 方法为ssh.set_auth_key 参数(args)为authorized_keys里面有=

[[email protected] ~]# vi /usr/local/python27/lib/python2.7/site-packages/salt/client/ssh/__init__.py
    551         for arg in args:
    552             if ‘=‘ in arg:
    553                 (key, val) = arg.split(‘=‘)
    554                 kws[key] = val
    555             else:
    556                 s_args.append(arg)
    557         return fun, s_args, kws

key(...==)被切割

key不能走if(552)这个条件,应该直接else

所以在if(552)加上fun!=‘ssh.set_auth_key‘

    [[email protected] ~]# vi /usr/local/python27/lib/python2.7/site-packages/salt/client/ssh/__init__.py

    540     def __arg_comps(self):
    541         ‘‘‘
    542         Return the function name and the arg list
    543         ‘‘‘
    544         comps = self.arg_str.split()
    545         fun = comps[0] if comps else ‘‘
    546         args = comps[1:]
    547         s_args = []
    548         kws = {}
    549         for arg in args:
    550             if ‘=‘ in arg and fun != ‘ssh.set_auth_key‘:
    551                 (key, val) = arg.split(‘=‘)
    552                 kws[key] = val
    553             else:
    554                 s_args.append(arg)
    555         return fun, s_args, kws
[[email protected] ~]# salt-ssh ‘slave‘  --key-deploy -r ‘ip -a‘
运行后到slave(主机名)服务器上查看
[[email protected] .ssh]# pwd
/root/.ssh
[[email protected] .ssh]# ls
authorized_keys 

[[email protected] .ssh]# cat  authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAynKmDMoo1bmXQppDHTULPoZ...KFXmlwzoMQTIla/41IRfGhFYVyBeamEl1rc1U51ak0lVNzbeQ== [email protected]
时间: 2024-10-15 07:29:00

salt-ssh 部署key的相关文章

批量部署SSH基于key的验证脚本

工作中,使用ansible等自动化运维工具实现服务器批量自动化运维管理,需要先解决管理端和被管理端的免密码登录,可以脚本实现ssh基于key的验证,代码如下: #!/bin/bash PASS=123456 USER=root ssh-keygen -f '/root/.ssh/id_rsa' -P '' &> /dev/null rpm -q expect &> /dev/null || yum install expect -y -q while read IP;do ex

SaltStack:Salt SSH

20. Salt SSH 在版本0.17.0当中,引入了新的传输系统,它支持通过SSH通道来实现Salt的通信.通过这种方式,我们可以将Salt routines直接通过SSH通道在远程主机上执行,而不需要在远程主机上运行Salt Minion,同样的道理,Salt Master也就不需要运行了.这样,也就实现了免客户端的方式的部署和实施. 注解: Salt SSH 并不能完全取代标准的Salt通信方式,它只是简单的提供了一个基于SSH通道的可选方式,这种方式不需要ZeroMQ和远程Agent的

基于Salt Master/Minions快速构建Salt SSH环境

前置阅读 环境说明 开工 创建用于Salt SSH环境的用户及key认证管理环境 配置Mine,以获取Minion id及IP地址 生成Salt Rosters 应用Salt SSH 后话 Salt 0.17版本已发布,该版本中重要的特性是引入了Salt SSH系统,提供了无需Minion.基于SSH的维护方式.原有的Salt维护环境已经初具规模,再手动重新构建Salt SSH环境成本较高.偷懒是人的天性,利用原有SaltStack Master/Minions环境,如何快速构建新的Salt S

ssh以及ssh的key认证

1.什么是openssh 是一个提供远程访问控制的软件. 2.通过ssh远程登陆 ssh [email protected]  #登陆 louout           #登出 2.ssh的key认证 key分为公钥与私钥      # 公钥相当于锁  私钥相当于钥匙 (1) 创建key ssh-keygen  #生成key [[email protected] Desktop]# ssh-keygen             #创建key Generating public/private r

配置ssh public key登陆时遇到的两个问题

在添加本机的public key到远程服务器之后,理论上如果ssh的配置文件没有问题并且网络和端口是通的,就可以无密码登陆到远程服务器,然而如果不能登陆,则可能是如下两个原因: 远程服务器的$HOME/.ssh目录权限必须是700,$HOME/.ssh/authorized_keys的权限必须是600,本机的$HOME/.ssh/id_rsa或者$HOME/.ssh/id_dsa文件的权限必须是600.这种问题修改文件和目录的权限即可解决. 本机的$HOME/.ssh/known_hosts文件

ssh基于key认证登陆

ssh基于key认证登陆一.在客户端生成密钥对 ssh-keygen -t rsa [-P ''] [-f "~/.ssh/id_rsa"] ## -r rsa:指定算法 ## -P :加对称秘钥口令 ## -f :可以指定生成路径 ## /.ssh/id_rsa 生成秘钥默认路径 我们简单操作就不加密码了 [[email protected] .ssh]# ssh-keygen Generating public/private rsa key pair. Enter file in

ssh -i key的问题

新人一枚,ssh其实很简单,但还是纠结了很久,而且在这个问题上成功被公司的三个大手带跑偏了,可能那天大家都有点脑残,一气之下,总结了这篇生成之类的网上一抓一大把,现在的问题是:三台服务器A B C,假装B是一台很重要的服务器,上面已经有了老手A的公钥,没有新手C的,现在C想要登陆服务器B,只要获得A的私钥进行ssh -i key的名字就行了,总结就是,只要你要远程的服务器有公钥,只要得到对应的私钥就可以认证,那天我的情况是A的私钥就摆在我面前,三个人都说不行,得获得公钥才能进行认证,wqtmd.

Salt SSH

Salt可以使用SSH来管理,对于没有安装salt-minion的客户端,可以使用salt-ssh.但是其执行速度要比安装salt-minion 慢. Salt-SSH的使用 如果要使用salt-ssh,需要在管理端安装salt-ssh: # yum install salt-ssh -y 使用salt-ssh不能配置job-cache,否则会产生冲突. 修改配置文件 /etc/salt/roster,配置要管理的主机: # vim  /etc/salt/roster node1:   host

Fabric自动化运维工具实现远程SSH部署及系统管理

Fabric是基于python(2.5-2.7)库和命令行来实现SSH远程应用部署及系统管理的工具,使用它,在批量管理远程主机时,不需要一台一台的输入密码登陆,可以把所以主机的用户名和密码写在一个文件里面来操作,下文中有具体实例. Fabric的安装 yum install python-setuptools python-dev* pycrypto wget https://pypi.python.org/packages/source/F/Fabric/Fabric-1.10.0.tar.g