简单的连接 查看一下磁盘信息

import paramiko
# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 连接服务器
ssh.connect(hostname='172.16.2.225', port=22, username='root', password='123456')
# 执行命令
stdin, stdout, stderr = ssh.exec_command('df') # 获取命令结果
result = stdout.read()
# 关闭连接
ssh.close()
print(result.decode('utf-8'))

从服务器上传下载文件

import paramiko
transport = paramiko.Transport(('172.16.2.225', 22))
transport.connect(username='root', password='123456')
sftp = paramiko.SFTPClient.from_transport(transport)

#上传到服务器
#sftp.put('test.txt', '/root/test.txt')
#从服务器下载到本地
sftp.get('/root/test.txt', 'xx.txt')
transport.close()

连接服务器的两种方式

  • 用户名和密码
  • 公钥和私钥(rsa)
  • 生成公钥和私钥 把公钥放到服务器
  • 以后再连接服务器时,不需要在输入密码
  • 第一步 生成公私钥
ssh-keygen -m pem

第二部 拷贝公钥到服务器

ssh-copy-id -i id_rsa.pub root@172.16.2.225

从此 连接无需密码 注:生成公私钥,可以二次加密

私钥连接服务器

import paramiko
from io import StringIO
#private_key = paramiko.RSAKey(file_obj=StringIO(key))
private_key = paramiko.RSAKey.from_private_key_file(r'id_rsa')

# 创建SSH对象
ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#  连接服务器
ssh.connect(hostname='172.16.2.225', port=22, username='root', pkey=private_key)
# 执行命令
stdin, stdout, stderr = ssh.exec_command('df')
#  获取命令结果
result = stdout.read()
# 关闭连接
ssh.close()
print(result.decode('utf-8'))

私钥上传下载文件

import paramiko
private_key = paramiko.RSAKey.from_private_key_file(r'id_rsa')
transport = paramiko.Transport(('172.16.2.225', 22))
transport.connect(username='root', pkey=private_key)
sftp = paramiko.SFTPClient.from_transport(transport)
#上传
sftp.put('1.txt', '/root/1.txt')
#下载
#sftp.get('/root/1.txt', 'local.txt')
transport.close()

另外一种读取私钥,在内存中

key='''-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----'''




import paramiko
from io import StringIO
private_key = paramiko.RSAKey(file_obj=StringIO(key))
#private_key = paramiko.RSAKey.from_private_key_file(r'id_rsa')

# 创建SSH对象
ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#  连接服务器
ssh.connect(hostname='172.16.2.225', port=22, username='root', pkey=private_key)
# 执行命令
stdin, stdout, stderr = ssh.exec_command('df')
#  获取命令结果
result = stdout.read()
# 关闭连接
ssh.close()
print(result.decode('utf-8'))

版权声明:如无特殊说明,文章均为本站原创,转载请注明出处

本文链接:http://kkxl95.cn/article/1597824327/