基于SSH的远程控制程序
-
远程控制程序分为正向控制和反向控制。简单理解,正向控制,我们是客户端,去连接一个开放远程服务的服务器。反向控制我们在自己的电脑上搭建远程控制服务器,连接我们服务器的客户将会被我们控制。现在的攻击多采用反向控制
-
基于paramiko实现ssh客户端
pip安装paramikopython3 -m pip install paramiko
paramiko是一个用ssh实现远程控制的python模块,其中封装了ssh的各种功能,两个重要的连接函数SSHClinet()实现命令执行、SFTPClinet()实现上传和下载操作
import paramiko
cline = paramiko.SSHClient() # 创建SSHCline()对象
# 允许连接不再known_hosts文件中的主机
cline.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 基于口令的安全验证:使用connect()函数连接服务端
try:
cline.connect(hostname='192.168.227.101', port=22, username='root', password='123456')
print('连接成功----输入end退出连接!!!')
while True:
cmd = input('PyShell:')
if 'end' == cmd:
cline.close()
break
# 命令执行 这里表示StandardInput程序的标准输入 result表示输出 stderr表示句柄 cline.exec_command('ifconfig')执行命令
else:
StandardInput, result, stderr = cline.exec_command(cmd)
print(result.read())
except IOError:
print('连接失败')
运行结果:
- 基于paramiko实现上传和下载文件
import paramiko
transport = paramiko.Transport(('192.168.227.101',22))
transport.connect(username='root',password='123456')
# 创建sftp对象
sftp = paramiko.SFTPClient.from_transport(transport)
# 上传文件到服务器 并命名为a.txt
sftp.put('E:\\pyHack\\pythonSSH\\test', '/home/data/a.txt')
# 下载文件
sftp.get('/home/data/b','E:\\pyHack\\pythonSSH\\test\\b.txt')
sftp.close()