Paramiko是Python的一個(gè)SSH客戶端和服務(wù)器庫,可以實(shí)現(xiàn)SSHv2協(xié)議的加密和身份驗(yàn)證功能,支持SFTP和SCP協(xié)議。在本文中,我們將介紹如何使用Paramiko庫來建立SSH連接、執(zhí)行遠(yuǎn)程命令、傳輸文件等。
安裝Paramiko
要使用Paramiko庫,我們需要先安裝它。可以使用pip命令進(jìn)行安裝:
pipinstallparamiko
建立SSH連接
使用Paramiko庫建立SSH連接非常簡單,只需指定主機(jī)名、用戶名和密碼即可。以下是一個(gè)簡單的示例:
importparamiko ssh=paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('hostname',username='username',password='password') stdin,stdout,stderr=ssh.exec_command('ls') print(stdout.read().decode()) ssh.close()
在上述示例中,我們首先創(chuàng)建一個(gè)SSHClient對(duì)象,并將主機(jī)名、用戶名和密碼作為參數(shù)傳遞給connect()方法。然后,使用exec_command()方法執(zhí)行l(wèi)s命令,并將結(jié)果打印到控制臺(tái)。最后,我們關(guān)閉SSH連接。
執(zhí)行遠(yuǎn)程命令
使用Paramiko庫執(zhí)行遠(yuǎn)程命令也很簡單,只需將命令作為字符串傳遞給exec_command()方法。以下是一個(gè)示例:
importparamiko ssh=paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('hostname',username='username',password='password') command='ls-l' stdin,stdout,stderr=ssh.exec_command(command) forlineinstdout.readlines(): print(line.strip()) ssh.close()
在上述示例中,我們使用exec_command()方法執(zhí)行l(wèi)s -l命令,并使用readlines()方法讀取輸出結(jié)果,并打印到控制臺(tái)。需要注意的是,在某些情況下,需要使用strip()方法刪除輸出結(jié)果中的換行符。
傳輸文件
使用Paramiko庫傳輸文件也很簡單,只需使用SFTPClient類即可。以下是一個(gè)示例:
importparamiko ssh=paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('hostname',username='username',password='password') sftp=ssh.open_sftp() sftp.put('local_file_path','remote_file_path') sftp.get('remote_file_path','local_file_path') sftp.close() ssh.close()
在上述示例中,我們首先創(chuàng)建一個(gè)SFTPClient對(duì)象,并使用put()方法將本地文件傳輸?shù)竭h(yuǎn)程主機(jī)上。然后,使用get()方法將遠(yuǎn)程文件傳輸?shù)奖镜刂鳈C(jī)上。最后,我們關(guān)閉SFTPClient和SSH連接。
使用密鑰認(rèn)證
除了使用用戶名和密碼進(jìn)行身份驗(yàn)證外,我們還可以使用SSH密鑰進(jìn)行身份驗(yàn)證。以下是一個(gè)示例:
importparamiko ssh=paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('hostname',username='username',pkey=key) stdin,stdout,stderr=ssh.exec_command('ls') print(stdout.read().decode()) ssh.close()
在上述示例中,我們首先使用from_private_key_file()方法加載SSH私鑰文件,并將私鑰作為參數(shù)傳遞給connect()方法。然后,我們使用exec_command()方法執(zhí)行l(wèi)s命令,并將結(jié)果打印到控制臺(tái)。最后,我們關(guān)閉SSH連接。
高級(jí)選項(xiàng)
Paramiko庫還提供了許多高級(jí)選項(xiàng),例如超時(shí)、端口轉(zhuǎn)發(fā)、密鑰管理等。以下是一個(gè)示例:
importparamiko ssh=paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('hostname',username='username',password='password',port=22,timeout=10) #開啟端口轉(zhuǎn)發(fā) transport=ssh.get_transport() local_port=8080 remote_host='google.com' remote_port=80 transport.request_port_forward('',local_port,remote_host,remote_port) #密鑰管理 key=paramiko.RSAKey.generate(2048) private_key_string=key.export_key('PEM') public_key_string=key.get_base64() ssh.close()
在上述示例中,我們首先使用connect()方法連接到遠(yuǎn)程主機(jī),并指定了端口號(hào)和超時(shí)時(shí)間。然后,我們使用get_transport()方法獲取SSH傳輸對(duì)象,并使用request_port_forward()方法開啟端口轉(zhuǎn)發(fā)。最后,我們使用generate()方法生成RSA密鑰,并使用export_key()和get_base64()方法導(dǎo)出私鑰和公鑰。
結(jié)論
在本文中,我們介紹了如何使用Python Paramiko庫實(shí)現(xiàn)SSH客戶端和服務(wù)器功能,包括建立SSH連接、執(zhí)行遠(yuǎn)程命令、傳輸文件等。此外,我們還介紹了如何使用SSH密鑰進(jìn)行身份驗(yàn)證,并討論了一些高級(jí)選項(xiàng)。使用Paramiko庫,我們可以輕松地編寫Python腳本來管理遠(yuǎn)程服務(wù)器和網(wǎng)絡(luò)設(shè)備。
審核編輯:劉清
-
服務(wù)器
+關(guān)注
關(guān)注
12文章
9671瀏覽量
87211 -
SSH
+關(guān)注
關(guān)注
0文章
193瀏覽量
16773 -
python
+關(guān)注
關(guān)注
56文章
4823瀏覽量
86107 -
SCP
+關(guān)注
關(guān)注
0文章
30瀏覽量
9469
原文標(biāo)題:網(wǎng)絡(luò)工程師學(xué)Python-34-SSH客戶端和服務(wù)器庫Paramiko
文章出處:【微信號(hào):網(wǎng)絡(luò)技術(shù)干貨圈,微信公眾號(hào):網(wǎng)絡(luò)技術(shù)干貨圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
【linux篇】ubuntu下的SSH安裝與使用
ssh連接
【HiKey試用體驗(yàn)】4.通過SSH遠(yuǎn)程連接Hikey
如何使用SSH遠(yuǎn)程命令登錄香橙派開發(fā)板
ubuntu- python-ssh遠(yuǎn)程控制jetson nano與單片機(jī)串口通信的方法
Python+微信一鍵連接實(shí)現(xiàn)遠(yuǎn)程管理Windows10操作系統(tǒng)的開機(jī)和關(guān)機(jī)
SSH第1部分:配置SSH以安全連接到遠(yuǎn)程設(shè)備
[Q3] 沒有ssh客戶端怎么快速連接?
介紹一些流行的Python SSH庫以及如何使用它們
Linux上建立SSH安全連接的10種方法
SSH命令詳解

如何通過SSH連接到Linux計(jì)算機(jī)?
SSH遠(yuǎn)程登錄與控制教程

評(píng)論