堡垒机的用途:(对权限进行集中管理)
1、权限管理
权限分配混乱
2、用户行为审计,记录用户的操作。
先用一下paramiko:|
用ssh第一次连接 远程某个机器的时候,需要验证。
只要known hosts中有这太机器的标示,那么下次登录就不需要验证了。
所以在paramiko模拟ssh连接的时候要写:(可执行多条命令)
下面这个自动帮我们填写yes的还帮我们自动在本地上生成了.ssh文件和里面的kown_hosts标示,有了这个known_hosts之后,下次这台机器再登陆远程服务器就不要验证了
sftp协议:ssh自带的协议(安全的文件传输)
看基于paramiko的上传下载:以后想批量分发一个文件或者执行一条命令,也可以用它。通过多线程或者多进程进行并发。
vim中 !more指令:
find命令:
但是上面的模块也是连接一次执行一次命令之后就断开了,我们想连上之后可以进行持续的交互,在paramiko中就需要一个叫做demo的文件。但是通过pip安装是没有这个文件的。
然后将它放到shell中看一下:
解压之后执行这个命令:
这样就能输入命令top查看cpu状态,就发现是实时交互的了,并且可以进入vim中。但是用户体验不好,显示也会出问题。
这就是paramiko的缺点。
看一下demo是如何实现实时 交互的和行为记录的:
posix是linux下的一个协议标准,看到他就带表的是linux:
select检测输入和输出:
一旦有输入或者输出,select就会有返回
ssh远程肯定有个判断是回车\r的机制,然后遇到回车就执行获得的命令。
然后连接的时候,在设置好对应的host和密码,那么就不需要自己在输入host和密码,最后再将用户体验搞好,就和ssh一样了,但是体验搞不好。。。。
所以基于paramiko来做堡垒机非常的不好。并且select的效率也不高,并发效率不高。
hostuser命令:以后可以用来标示每台机器是干嘛用的:
大致的表结构:
堡垒机就是操作的第三张表,将第三章表的权限进行分配,堡垒机用户登陆堡垒机,就只显示他所能登陆的主机和主机用户名。
如果用上面的userprofile表直接关联host主机表的话,那么所以能登陆这个主机的主机用户hostuser,小虎就都能用了,所以不好,
不让主机组和主机进行关联也是这个意思,权限不好分配。
用户认证的脚本(单独一个py文件,在django中如果想调用models,需要配制内容)
getpass:
绕过ssh连接远程时的fingerprint验证:命令
但是呢,在python中怎么输入密码呢,也是不可以的,所以也需要配制好,让它自动填写密码,这就需要下面的插件了:
sshpass:首先要下载,然后安装:
tar xvzf 文件名
解压之后发现这是个c语言写的包:
python是解释型语言:传给解释器的是源码,解释器自行解释为机器码。
c语言是编译型语言:需要编译,编译成机器码才能运行
在linux上c语言软件的编译过程是这样的:
1.configure:后面不加参数就会编译在系统默认的路径下。
2:编译 sudo make
3:编译完成后安装:sudo make install
4:可以直接输入sshpass来查看:
5:然后绕过密码进入机器。
~/ 看家目录:
如果是第一次连接
所以要用subprocess.run()方法:
more /etc/passwd
su - 命令
sudo passwd qq:
然后su - qq,切换到qq用户,发现不能进入/bin/false终端,因为等于false,说明不能进入这个终端。(自己查原因)
以上的这些举例是说明,用户登录的终端是可以配置的。我们配置一个专门用来登陆堡垒机的账户。
修改终端样式。
django在linux上安装的情况:下面的原因为每个用户都有自己使用的django版本什么的,所以自己安装自己的。
这样给每个用户的就不是linux的账户(就是主机账户)了,而是我的堡垒机账户。
实际上他没有自己的账户,因为已经被回收了,只有堡垒机账户,只要按ctrl+c那么就退出了python的执行脚本,因为.bashrc里面已经配置了,python执行脚本后面就紧跟着logout了,所以就断开了远程的连接。不能再执行其他的了
ctrl+u:
在djang中用自己写的userprofile表时需要配制: