在这篇文章中,主要谈及如何利用paramiko库,使用密码连接远程linux主机。paramiko是用python语言编写的一个模块,遵循SSH2协议,支持以加密和认证的方式进行远程服务器的连接。
(1)安装paramiko库:pip install paramiko
(2)python 2.7用来编写代码
(3)在kali-linux上详细配置ssh,见linux环境下ssh的配置
配置好之后,开启ssh:/etc/init.d/ssh start
(4)本地win10、远程kali-linux
(1)直接使用SSHClient对象的exec_command()在服务端执行命令,在ssh.py添加如下代码:
#-*- coding:utf-8 -*-
import paramiko
def ssh_command(ip,port,username,password,command):
# 创建SSH对象
client = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
client.connect(ip,port,username,password)
# 直接使用SSHClient对象的exec_command()在服务端执行命令
stdin,stdout,stderr = client.exec_command(command)
receive = stdout.read()
# 打印输出
print receive.decode('utf-8')
# 关闭连接
client.close()
ssh_command('192.168.1.175',22,'root','远程主机登陆密码','ls')
(2)在win10运行,用这个代码来连接kali-linux,把执行结果显示在win10。
先测试是否可以ping通:
已经ping通了,现在连接运程主机,命令执行的结果也可以看到了:
(1)利用SSHClient建立连接的对象得到一个Transport对象,以Transport对象的exec_command()在服务端执行命令,在sshcmd.py添加如下代码(出自python黑帽子 黑客与渗透测试):
#-*- coding:utf8 -*-
import paramiko
def ssh_command(ip,port,username,password,command):
# 创建SSH对象
client = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
client.connect(ip,port,username,password)
#将SSHClient建立连接的对象得到一个Transport对象,
#以Transport对象的exec_command()在服务端执行命令
ssh_session = client.get_transport().open_session()
if ssh_session.active:
ssh_session.exec_command(command)
receive=ssh_session.recv(1024)
print receive.decode('utf-8')
# 关闭连接
client.close()
ssh_command('192.168.1.175',22,'root','远程主机登陆密码','ls')
在linux上执行“ls”命令,发现一致。