简单的连接 查看一下磁盘信息
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/