ssh

https://medium.com/@paulskarseth/ansible-bastion-host-proxycommand-e6946c945d30#.rauzlfv0z

http://blog.scottlowe.org/2015/12/24/running-ansible-through-ssh-bastion-host

https://10mi2.wordpress.com/2015/01/14/using-ssh-through-a-bastion-host-transparently/

https://gagor.pl/2016/04/use-bastion-host-with-ansible

http://www.cweye.net/2015/07/17/ansible-jumper.html

http://my.oschina.net/foreverich/blog/657075

sudo

http://tech-sketch.jp/2016/06/ssh_sudo_su.html

案例

有A B两个数据中心,每个数据中心仅1台服务器(jumphost)有公网ip,其他服务器均为内网地址。

控制机

1 conctrol 生成带password的key

ssh-keygen -f a.pem -N '@ansible'
ssh-keygen -f b.pem -N '@ansible'

2 A jumphost & targethost

useradd ansible

su - ansible -c 'mkdir .ssh'
su - ansible -c 'curl http://install.local/a.pem.pub -O .ssh/authorized_keys'
su - ansible -c 'chmod 600 .ssh/authorized_keys'
su - ansible -c 'chmod 700 .ssh'

3 B jumphost & targethost

useradd ansible

su - ansible -c 'mkdir .ssh'
su - ansible -c 'curl http://install.local/b.pem.pub -O .ssh/authorized_keys'
su - ansible -c 'chmod 600 .ssh/authorized_keys'
su - ansible -c 'chmod 700 .ssh'

4 control ssh_config

# A
Host 69.xx.xx.xx
User ansible
Port 29922
#IdentityFile keys/dc.pem
ControlMaster auto
ControlPath keys/ansible-%r@%h:%p
ControlPersist 15m
ForwardAgent yes
StrictHostKeyChecking no Host 10.150.1.*
User ansible
Port 29922
#IdentityFile keys/dc.pem
ProxyCommand ssh -p 29922 %r@69.xx.xx.xx -W %h:%p
ForwardAgent yes
StrictHostKeyChecking no # B
Host 173.xx.xx.xx
User ansible
Port 29922
#IdentityFile keys/dc.pem
ControlMaster auto
ControlPath keys/ansible-%r@%h:%p
ControlPersist 15m
ForwardAgent yes
StrictHostKeyChecking no Host 10.160.1.*
User ansible
Port 29922
#IdentityFile keys/la.pem
ProxyCommand ssh -p 29922 %r@173.xx.xx.xx -W %h:%p
ForwardAgent yes
StrictHostKeyChecking no

5 control login

# 私钥加入内存,用于ssh agent forward
#ssh-agent bash
ssh-add keys/a.pem
Enter passphrase for keys/a.pem: ssh-add keys/b.pem
Enter passphrase for keys/b.pem: # 分别登录A B跳板机和内网主机
ssh -F ssh_config 69.xx.xx.xx
ssh -F ssh_config 10.150.1.35 ssh -F ssh_config 173.xx.xx.xx
ssh -F ssh_config 10.160.1.35 # 删除内存私匙
ssh-add -D

6 jumphost & targethost sudo

cat > /etc/sudoers.d/ansible << _EOF_
Defaults:ansible,%operator !requiretty Cmnd_Alias SU = /bin/su*
Cmnd_Alias SUDO = /usr/bin/vim /etc/sudoers*, /bin/vi /etc/sudoers*, /bin/su*, /usr/sbin/visudo
Cmnd_Alias ACCOUNT = /usr/sbin/adduser*, /usr/sbin/useradd*, /usr/sbin/groupadd*, /usr/sbin/userdel*
Cmnd_Alias SHELLS = /bin/sh, /bin/ksh, /bin/bash, /bin/zsh, /bin/csh, /bin/tcsh, /usr/bin/login ansible ALL = (ALL) NOPASSWD: ALL, !SU
%operator ALL = (ALL) NOPASSWD: ALL, !SHELLS, !SU, !SUDO, !ACCOUNT
_EOF_ chmod 440 /etc/sudoers.d/ansible
groupadd operator
/etc/pam.d/su
#auth required pam_wheel.so use_uid
->
auth required pam_wheel.so use_uid
/etc/ssh/sshd_config
PermitRootLogin no
RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication yes

7 jumphost & targethost user (ansible控制)

1 建立用户
useradd ken 加入operator组
usermod -G operator ken 用户.ssh/authorized_keys写入用户公匙
ken.gem -> .ssh/authorized_keys 2 用户使用私匙登录
local> ssh-add ken.gem
local> ssh -p 29922 -A ken@69.xx.xx.xx
69> ssh -p 29922 -A ken@10.150.1.xx 3 删除用户

登录自动启动ssh-agent

cat > /etc/profile.d/ssh-agent.sh << EOF
#!/bin/bash if [ ! -S ~/.ssh/ssh_auth_sock ]; then
eval \`ssh-agent\`
ln -sf "\$SSH_AUTH_SOCK" ~/.ssh/ssh_auth_sock
fi export SSH_AUTH_SOCK=~/.ssh/ssh_auth_sock
EOF

手动执行ssh-add加入sshkey,只要不重启sshkey一直存在内存中

登录自动加载带密码的sshkey 密码输入没有解决

echo "echo '@ansible'" > /opt/ansible/keys/.passphrase && chmod 700 /opt/ansible/keys/.passphrase

ssh-add -l | grep 'The agent has no identities' && cat /opt/ansible/keys/{dc.pem,la.pem} | SSH_ASKPASS=/opt/ansible/keys/.passphrase ssh-add -
ssh-add 将私匙加入内存,公匙分别加入堡垒机及内网机,加入代理转发,可以登录任意服务器
ssh -p 29922 ansible@192.168.1.22 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \
-o ControlMaster=auto -o ControlPersist=5m -o ControlPath=/tmp/ansible-%r@%h:%p -o ForwardAgent=yes ssh -p 29922 ansible@192.168.1.23 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \
-o ControlMaster=auto -o ControlPersist=5m -o ControlPath=/tmp/ansible-%r@%h:%p -o ForwardAgent=yes \
-o ProxyCommand='ssh -p 29922 %r@192.168.1.22 -W %h:%p' ssh -p 22 ansible@192.168.1.24 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \
-o ControlMaster=auto -o ControlPersist=5m -o ControlPath=/tmp/ansible-%r@%h:%p -o ForwardAgent=yes \
-o ProxyCommand='ssh -p 29922 %r@192.168.1.22 -W %h:%p'

ansible 访问内网服务器的更多相关文章

  1. centos7下安装openvpn,访问内网服务器 (二) windows访问

    一.简介 在上一章中已经安装好了openvpn,并且已经启动成功,现在就可以通过openvpn的客户端进行连接访问内网服务器了. 二.安装openvpn客户端 下载地址: https://www.te ...

  2. H3C SecPath U200-S 如何在内网使用外网IP地址访问内网服务器

    H3C SecPath U200-S 如何在内网使用外网IP地址访问内网服务器 ------------------------------------------------------------ ...

  3. Nginx反向代理访问内网服务器

    Nginx反向代理访问内网服务器 问题描述 ​ 公司给配的台式机太垃圾了,不能访问外部网络就算了,还没有maven私服.近期项目不光得使用maven还得使用内网中的数据库之类,台式机太卡只能用自己的笔 ...

  4. 浏览器 Proxy SwitchyOmega 插件设置代理访问内网服务器

    使用Proxy SwitchyOmega 插件通过代理 直接访问到内网网站 一.使用场景 如下图所示,如果在电脑的网络设置中开启代理,每次更换代理就需要进入这里设置改变代理.且我们可能回需求到两个网页 ...

  5. (四)ansible 通过堡垒机访问内网服务器

    场景:     在ansible的使用过程中,存在这样的场景,ansible所在的管理节点与被管理的机器需要 通过一个跳板机才能连接,无法直接连接.要解决这个问题,并不需要在 ansible里做什么处 ...

  6. centos7下配置iptables实现外网访问内网服务器

    说明:Centos 7 默认的防火墙是 firewall,安装iptables之前需关闭Firewall 外网机器:外网ip:120.25.71.183内网ip:10.1.1.23 内网机器:内网ip ...

  7. 建立SSH隧道从外网访问内网服务器

    http://blog.trackets.com/2014/05/17/ssh-tunnel-local-and-remote-port-forwarding-explained-with-examp ...

  8. centos7下安装openvpn,访问内网服务器 (三)证书取消授权

    1.创建临时证书 使用easy-rsa创建额外的证书: [root@origalom openvpn]# cd /usr/share/easy-rsa/2.0/ [root@origalom 2.0] ...

  9. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

随机推荐

  1. memwatch

    一.简介 memwatch可以跟踪程序中的内存泄漏和错误,能检测双重释放(double-free).错误释放(erroneous free).没有释放的内存(unfreed memory).溢出(Ov ...

  2. MongoDB的基本使用

    use library 使用use函数切换已有的数据库或创建新的数据库 show dbs 查看MongoDB中目前所有可用的数据库 show collections 查看当前数据库中的所有集合 在集合 ...

  3. HDU 2516 取石子游戏(斐波那契博弈)

    取石子游戏 Time Limit: 2000/1000 MS(Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...

  4. jquery.form.js详细讲解

    现在大家在在表单提交的时候都不流行中间页面做跳转(比如发布成功的提示页面),或者说这样做会降低用户体验.所以一般都是采用ajax来提交,能看到这个页面的朋友,想必对ajax提交表单已经是很熟悉了. 如 ...

  5. git分支管理和stash

    1 创建分支$ git branch 分支名 2切换到分支$ git checkout 分支名 3查看提交git log --oneline --decorate --graph --all 4 轻量 ...

  6. ViewPager切换动画

    http://blog.csdn.net/lmj623565791/article/details/38026503 http://www.cnblogs.com/tianzhijiexian/p/4 ...

  7. mysql 错误1054

    问题,当查询数据时,输入字符串是数字时,可以查询,但当输入字母字符串时却不能查询,总是提示错误1054 解决:将字符串打上单引号 字段对应的值如果为字符或字符串类型的时候,应用英文单引号括起来,你用的 ...

  8. 使用 cURL 获取站点的各类响应时间 – dns解析时间,响应时间,传输时间

    http://zhangrenfang8738.blog.163.com/blog/static/95401881201142711450245/ curl监控站点响应时间 2011-05-27 11 ...

  9. C#开发COM组件供其他开发环境或工具调用介绍(转)

    由于工作原因涉及到这一块的开发,由于之前并未接触过,所以本篇文章也是在参考了各种资料后,自己实现并通过通过测试之后所整理的备忘录以及一些个人观点. 希望对刚接触这类型开发的朋友有所帮助,若有不足之处还 ...

  10. AndroidManifest.xml 屏幕上下反转

    通常我们的应用只会设计成横屏或者竖屏,锁定横屏或竖屏的方法是在AndroidManifest.xml 文件中设定属性android:screenOrientation为"landscape& ...