SSH(paramiko模块实现)
SSH认证的过程是加密的,但认证成功后的通信是明文的。认证过程:A主机以公钥加密发送一段密文给B主机,B主机通过私钥将秘文解密后发送至A主机进行验证,成功后即认证成功。步骤:1:A主机执行命令ssh-keygen#生成私钥和公钥2:A主机执行命令ssh-copy-id root@B主机IP#将私钥发送至B主机通过密码登陆远程主机:#!/bin/env python#!c
·
SSH认证的过程是加密的,但认证成功后的通信是明文的。
认证过程:
A主机以公钥加密发送一段密文给B主机,B主机通过私钥将秘文解密后发送至A主机进行验证,成功后即认证成功。
步骤:
1:A主机执行命令ssh-keygen #生成私钥和公钥
2:A主机执行命令ssh-copy-id root@B主机IP #将私钥发送至B主机
通过密码登陆远程主机:
#!/bin/env python
#!coding=utf-8
import paramiko
import sys,os
#host = "192.168.137.101" ##可以主动设定主机IP
user='root'
password='westos'
#cmd= 'ls /mnt' ##登陆主机后执行的命令
host=sys.argv[1] ##将主机设为参数形式,类似于shell的$1
cmd=sys.argv[2] ##将要执行的命令设为参数形式,类似与shell的$2
s=paramiko.SSHClient() ##绑定实例
s.load_system_host_keys() ##加载本机HOST主机文件
s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ##该句的作用是,解决第一次连接时‘yes’的问题
s.connect(host,22,user,password,timeout=5) ##进行连接
stdin,stdout,stderr = s.exec_command(cmd) ##执行‘cmd’的命令,将正确的结果赋给stdout,错误的输出赋给stderr
cmd_result = stdout.read(),stderr.read() ##将赋给的值做为结果
for line in cmd_result:
print line
##输出结果
s.close()
通过key(公钥,私钥)连接
#!/bin/env python
#!coding=utf-8
import paramiko
import sys,os
pkey_file='/root/.ssh/id_rsa' ##设定私钥文件
key=paramiko.RSAKey.from_private_key_file(pkey_file) ##绑定私钥
host=sys.argv[1] ##设定要连接的主机IP
user='root'
cmd=sys.argv[2] ##设定要执行的命令
s=paramiko.SSHClient() ##绑定实例
s.load_system_host_keys() ##加载本机的HOST文件
s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ##解决第一次登陆时‘YES’的问题
s.connect(host,22,user,pkey=key,timeout=5) ##连接
stdin,stdout,stderr = s.exec_command(cmd)
cmd_result = stdout.read(),stderr.read()
for line in cmd_result:
print line
s.close()
实现ftp:
#!/bin/env python
#!coding=utf-8
import paramiko
import sys,os
pkey_file='/root/.ssh/id_rsa'
key=paramiko.RSAKey.from_private_key_file(pkey_file)
host=sys.argv[1]
user='root'
t=paramiko.Transport((host,22)) ##设定要连接的对象
t.connect(username=user,pkey=key) ##设定登陆的用户
sftp=paramiko.SFTPClient.from_transport(t) ##打开ftp
sftp.get('/mnt/haha','/mnt/ha') ##下载对方主机/mnt/haha到本地主机/mnt/ha
sftp.put('1.py','/mnt/1.py') ##上传本地文件1.py到对方主机/mnt/1.py
t.close()
更多推荐
所有评论(0)