Paramiko是Python的一個(gè)SSH客戶端和服務(wù)器庫(kù),可以實(shí)現(xiàn)SSHv2協(xié)議的加密和身份驗(yàn)證功能,支持SFTP和SCP協(xié)議。在本文中,我們將介紹如何使用Paramiko庫(kù)來(lái)建立SSH連接、執(zhí)行遠(yuǎn)程命令、傳輸文件等。
安裝Paramiko
要使用Paramiko庫(kù),我們需要先安裝它??梢允褂?a href="http://www.brongaenegriffin.com/tags/pi/" target="_blank">pip命令進(jìn)行安裝:
pipinstallparamiko
建立SSH連接
使用Paramiko庫(kù)建立SSH連接非常簡(jiǎn)單,只需指定主機(jī)名、用戶名和密碼即可。以下是一個(gè)簡(jiǎn)單的示例:
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庫(kù)執(zhí)行遠(yuǎn)程命令也很簡(jiǎ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庫(kù)傳輸文件也很簡(jiǎn)單,只需使用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庫(kù)還提供了許多高級(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)
#開(kāi)啟端口轉(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()方法開(kāi)啟端口轉(zhuǎn)發(fā)。最后,我們使用generate()方法生成RSA密鑰,并使用export_key()和get_base64()方法導(dǎo)出私鑰和公鑰。

結(jié)論
在本文中,我們介紹了如何使用Python Paramiko庫(kù)實(shí)現(xiàn)SSH客戶端和服務(wù)器功能,包括建立SSH連接、執(zhí)行遠(yuǎn)程命令、傳輸文件等。此外,我們還介紹了如何使用SSH密鑰進(jìn)行身份驗(yàn)證,并討論了一些高級(jí)選項(xiàng)。使用Paramiko庫(kù),我們可以輕松地編寫Python腳本來(lái)管理遠(yuǎn)程服務(wù)器和網(wǎng)絡(luò)設(shè)備。
審核編輯:劉清
-
服務(wù)器
+關(guān)注
關(guān)注
13文章
10093瀏覽量
90895 -
SSH
+關(guān)注
關(guān)注
0文章
198瀏覽量
17572 -
python
+關(guān)注
關(guān)注
57文章
4858瀏覽量
89588 -
SCP
+關(guān)注
關(guān)注
0文章
30瀏覽量
9737
原文標(biāo)題:網(wǎng)絡(luò)工程師學(xué)Python-34-SSH客戶端和服務(wù)器庫(kù)Paramiko
文章出處:【微信號(hào):網(wǎng)絡(luò)技術(shù)干貨圈,微信公眾號(hào):網(wǎng)絡(luò)技術(shù)干貨圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
ssh連接
【HiKey試用體驗(yàn)】4.通過(guò)SSH遠(yuǎn)程連接Hikey
如何使用SSH遠(yuǎn)程命令登錄香橙派開(kāi)發(fā)板
ubuntu- python-ssh遠(yuǎn)程控制jetson nano與單片機(jī)串口通信的方法
Python+微信一鍵連接實(shí)現(xiàn)遠(yuǎn)程管理Windows10操作系統(tǒng)的開(kāi)機(jī)和關(guān)機(jī)
SSH第1部分:配置SSH以安全連接到遠(yuǎn)程設(shè)備
[Q3] 沒(méi)有ssh客戶端怎么快速連接?
介紹一些流行的Python SSH庫(kù)以及如何使用它們
Linux上建立SSH安全連接的10種方法
SSH命令詳解
如何通過(guò)SSH連接到Linux計(jì)算機(jī)?
SSH遠(yuǎn)程登錄與控制教程
SSH 遠(yuǎn)程連接內(nèi)網(wǎng) Linux 服務(wù)器

如何使用Paramiko庫(kù)來(lái)建立SSH連接遠(yuǎn)程命令?
評(píng)論