이 글은 주로 Python paramiko 모듈의 학습 자료를 공유합니다. 관심 있는 친구들이 참고할 수 있습니다.
paramiko는 Python 언어로 작성되었으며 암호화를 지원합니다. 원격 서버에 접속하기 위한 인증 방법입니다. paramiko는 Linux, Solaris, BSD, MacOS X, Windows 및 기타 플랫폼을 지원하여 SSH를 통해 한 플랫폼에서 다른 플랫폼으로 연결할 수 있습니다. 이 모듈을 사용하면 SFTP 파일 전송을 위한 SSH 연결 및 SFTP 프로토콜을 쉽게 수행할 수 있습니다.
먼저 다음 용어를 명확히 하겠습니다.
SSHClient: packages Channel, Transport, SFTPClient
Channel: 는 소켓과 유사한 보안 SSH 전송 채널입니다.
Transport: 는 암호화된 세션입니다. 그러나 그러한 개체의 세션은 설정되지 않았습니다.) 암호화된 터널이 생성됩니다. 이러한 터널을 채널이라고 합니다.
Session: 클라이언트가 서버와의 연결을 유지하는 데 사용되는 개체입니다. start_client( )/start_server()를 사용하여 세션을 시작합니다.
paramiko 모듈은 내부적으로 pycrypto에 의존하므로 먼저 pycrypto를 다운로드하여 설치하세요
pip3 install paramiko
원격 연결은 두 가지 유형으로 나뉩니다. (1) 사용자 이름과 비밀번호에 따른 연결 (2) 공개 키와 비밀 키에 따른 연결실제로 paramiko 원격 작업을 사용하여 (1) SSHClient만 사용 (2) 직접 전송 만들기
사용자 이름과 비밀번호를 기반으로 연결
import paramiko # 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器 ssh.connect(hostname='host', port=22, username='root', password='123') # 执行命令 stdout命令结果,stderr错误 stdin, stdout, stderr = ssh.exec_command('ls') # 获取命令结果 result = stdout.read() # 关闭连接 ssh.close()
import paramiko transport = paramiko.Transport(('hostname', 22)) transport.connect(username='root', password='123') ssh = paramiko.SSHClient() ssh._transport = transport stdin, stdout, stderr = ssh.exec_command('df') print(stdout.read()) transport.close()
import paramiko private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa') # 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器 ssh.connect(hostname='host', port=22, username='root', key=private_key) # 执行命令 stdin, stdout, stderr = ssh.exec_command('df') # 获取命令结果 result = stdout.read() # 关闭连接 ssh.close()
import paramiko private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa') transport = paramiko.Transport(('hostname', 22)) transport.connect(username='wupeiqi', pkey=private_key) ssh = paramiko.SSHClient() ssh._transport = transport stdin, stdout, stderr = ssh.exec_command('df') transport.close()
SFTPClient:
은 원격 서버에 연결하고 업로드 및 다운로드 기능을 수행하는 데 사용됩니다. 사용자 이름과 비밀번호를 기반으로 업로드 및 다운로드
import paramiko transport = paramiko.Transport(('hostname',22)) transport.connect(username='root',password='123') sftp = paramiko.SFTPClient.from_transport(transport) # 将location.py 上传至服务器 /tmp/test.py sftp.put('/tmp/location.py', '/tmp/test.py') # 将remove_path 下载到本地 local_path sftp.get('remove_path', 'local_path') transport.close()
import paramiko private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa') transport = paramiko.Transport(('hostname', 22)) transport.connect(username='root', pkey=private_key ) sftp = paramiko.SFTPClient.from_transport(transport) # 将location.py 上传至服务器 /tmp/test.py sftp.put('/tmp/location.py', '/tmp/test.py') # 将remove_path 下载到本地 local_path sftp.get('remove_path', 'local_path') transport.close()
import paramiko class SSHConnection(object): def __init__(self, host='192.168.12.68', port=22, username='locojoy',pwd='123321QQ!'): self.host = host self.port = port self.username = username self.pwd = pwd self.__k = None def run(self): self.connect() # 连接远程服务器 self.upload('db.py','/tmp/1.py') # 将本地的db.py文件上传到远端服务器的/tmp/目录下并改名为1.py self.cmd('df') # 执行df 命令 self.close() # 关闭连接 def connect(self): transport = paramiko.Transport((self.host, self.port)) transport.connect(username=self.username, password=self.pwd) self.__transport = transport def close(self): self.__transport.close() def upload(self,local_path,target_path): sftp = paramiko.SFTPClient.from_transport(self.__transport) sftp.put(local_path,target_path) def cmd(self, command): ssh = paramiko.SSHClient() ssh._transport = self.__transport # 执行命令 stdin, stdout, stderr = ssh.exec_command(command) # 获取命令结果 result = stdout.read() print(result) return result obj = SSHConnection() obj.run()
위 내용은 Python의 paramiko 모듈에 대한 공유 학습의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!