久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

Python如何使用paramiko模塊連接linux

瀏覽:62日期:2022-08-02 08:34:40

python程序需要連接linux時,需要使用密碼或者秘鑰驗證以登錄os進行命令操作或者文件傳輸,python中實現(xiàn)此功能的模塊為paramiko;下面是該模塊的基礎用法

下面是通過密碼進行l(wèi)inux登錄執(zhí)行命令和文件傳輸示例

import paramiko#python程序需要批量管理linux時需要借助paramilo模塊登錄linux執(zhí)行命令或者傳輸文件,下面是最簡單的登錄主機執(zhí)行命令ssh_client = paramiko.SSHClient() #創(chuàng)建連接對象ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #允許連接不在know_hosts文件中的主機,首次登陸其它機器時會用到ssh_client.connect(hostname='192.168.226.128', port=22, username='root', password='123456') #使用用戶名密碼連接主機stdin, stdout, stderr = ssh_client.exec_command('df -h') #執(zhí)行命令獲取結(jié)果#獲取命令結(jié)果res,err = stdout.read(),stderr.read()result = res if res else err ##這里我們使用三元運算print(result.decode(encoding='utf-8'))ssh_client.close() #關閉ssh#下面是傳輸文件transport = paramiko.Transport(('192.168.226.128', 22))transport.connect(username='root', password='123456')my_sftp = paramiko.SFTPClient.from_transport(transport)my_sftp.put('__init__.py', '/root/123.tst') #__init__.py是本地文件名,其它目錄需要寫絕對路徑形式, /root/123.tst上傳到128的root目錄且命名為123.tstmy_sftp.get('/root/hello.py', 'hello_get.py') #將遠端的hello.py 下載到本地當前目錄且重命名為hello_get.pytransport.close()

代碼中出現(xiàn)明文密碼是不安全也不符合編程規(guī)范的,為了更加安全我們可使用秘鑰來進行登錄。

首先兩臺linux機器進行如下操作后就可以實現(xiàn)192.168.226.128免密登錄192.168.226.129

1、正常條件下128主機ssh連接129機器整個過程如下,需要數(shù)據(jù)密碼

Python如何使用paramiko模塊連接linux

2、輸入ssh-keygen后,所有命令直接回車,在登錄用戶家目錄下.ssh目錄下會生成id_rsa和id_rsa.pub兩個文件,其中id_rsa是私鑰id_rsa.pub是公鑰

Python如何使用paramiko模塊連接linux

3、ssh-copy-id命令可以將本地公鑰拷貝到129主機的root用戶家目錄下的authorized_keys文件里

Python如何使用paramiko模塊連接linux

Python如何使用paramiko模塊連接linux

3、此時128就可以免密登錄129了,但是129不能免密登錄128;如果需要則129需要進行與128相同的操作。可以免密是128的id_rsa與129對應用戶的authorized_keys文件內(nèi)的公鑰能夠校驗成功

Python如何使用paramiko模塊連接linux

4、對應的如果當前只進行上述操作,此時win機器可以通過128的id_rsa實現(xiàn)免密登錄129機器,具體實現(xiàn)如下

import paramiko#python程序需要批量管理linux時需要借助paramilo模塊登錄linux執(zhí)行命令或者傳輸文件,下面是最簡單的登錄主機執(zhí)行命令private_key = paramiko.RSAKey.from_private_key_file('id_rsa')ssh = paramiko.SSHClient() #創(chuàng)建連接對象ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #允許連接不在know_hosts文件中的主機ssh.connect(hostname='192.168.226.129', port=22, username='root', pkey=private_key) #使用用戶名密碼連接主機stdin, stdout, stderr = ssh.exec_command('df -h') #執(zhí)行命令獲取結(jié)果#獲取命令結(jié)果res,err = stdout.read(),stderr.read()result = res if res else err ##這里我們使用三元運算print(result.decode(encoding='utf-8'))ssh.close() #關閉ssh#下面是傳輸文件transport = paramiko.Transport(('192.168.226.129', 22))transport.connect(username='root', pkey=private_key)my_sftp = paramiko.SFTPClient.from_transport(transport)my_sftp.put('__init__.py', '/root/123.tst')my_sftp.get('/root/hello.py', 'hello_get129.py')transport.close()

注意:

1、此時雖然有128的私鑰,但是無法免密登錄128,登錄時會報認證失敗,paramiko.ssh_exception.AuthenticationException: Authentication failed;此時還只能通過密碼登錄128或者通過將129生成的公鑰拷貝給128使用129私鑰登錄128。

2、不能使用128的公鑰來登錄129,此時win機器模擬的是128免密登錄129當然需要使用128的私鑰了,否則無法和129本地文件內(nèi)128的公鑰無法配對;使用公鑰登錄129 會報不合法的私鑰文件paramiko.ssh_exception.SSHException: not a valid RSA private key file

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 日韩久久一区 | 国产精品自产av一区二区三区 | av网站免费 | 黄色一级片视频 | julia中文字幕久久一区二区 | 国产乱码精品一区二区三区忘忧草 | 天天干夜夜爽 | 日韩美一级 | 一级黄色片子看看 | 噜噜噜在线观看免费视频日本 | 久久久久久久一区 | 国产精品视频成人 | 777kkk999成人ww | 日韩国产在线观看 | 久久精品1 | 亚洲狠狠爱一区二区三区 | 免费在线一区二区三区 | 亚洲动漫在线观看 | 91国产精品 | 久久久99精品免费观看 | 欧美黄视频在线观看 | 超碰天天| 欧美亚洲日本 | 国产精品久久国产精品 | 日韩五月| 日本黄色片免费看 | 欧美日韩中文字幕 | 国产精品久久久久久亚洲调教 | 国产一级一级国产 | 草草网| 国产免费中文字幕 | 操视频网站 | 欧美日韩国产一区二区三区不卡 | 色网站视频| 国产欧美在线观看 | 亚洲福利一区二区 | 午夜视频在线观看网站 | 日日干日日爽 | 国产免费自拍av | 中文字幕一区二区在线观看 | 久久久久香蕉视频 |