使用Python进行基于口令认证的连接:
1 #加载paramiko包 2 import paramiko 3 #创建新的SSH对象 4 Client=paramiko.SSHClient() 5 #允许以自动的方式连接不在Host表中的主机 6 Client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 7 #连接到主机 8 Client.connect(hostname="172.16.74.133",port=22,username="kali",password="kali") 9 #执行命令并输入 10 while True: 11 STr1 = input("请输入命令:") 12 stdin,stout,stderr=Client.exec_command(STr1) 13 print(stout.read().decode())
使用Python进行基于密钥认证的连接:
1 #加载paramiko包 2 import paramiko 3 #设置私钥所在路径 4 private_key_path="./id_usa" 5 #加载私钥 6 key_pri=paramiko.RSAKey.from_private_key_file(private_key_path,password="wang") 7 #创建新的SSH连接实例 8 Client=paramiko.SSHClient() 9 #允许不在konw_hosts文件中的主机 10 Client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 11 Client.connect(hostname="172.16.74.133",port=22,username="root",pkey=key_pri) 12 while True: 13 Some=input("Input:") 14 stdin,stdout,stderr=Client.exec_command(Some) 15 print(stdout.read().decode())
使用SFTP函数实现从服务器上下载和传输文件:
思路:
1.创建transport实例,并通过SSH连接
2.通过transport实例继而创建stfp对象,然后使用sftp对象的put和get方法进行文件传输
1 #加载paramiko模块 2 import paramiko 3 #创建Transport实例 4 trans=paramiko.Transport("172.16.74.133",22) 5 #设置私钥路径 6 key_path="./id_usa" 7 #加载私钥 8 key=paramiko.RSAKey.from_private_key_file(key_path,password="wang") 9 #进行认证连接登录 10 trans.connect(username="root",pkey=key) 11 #创建sftp对象 12 sftp=paramiko.SFTPClient.from_transport(trans) 13 #上传文件 14 sftp.put("./id_rsa",'/etc/haha') 15 #下载文件 16 sftp.get("/etc/passwd","./passwd")
总结:使用Python的paramiko库可以实现对Linux系统是SSH连接操作并执行任意命令与文件下载,通过此次操作,熟悉了Python对Linux的连接与密钥认证方式。