使用paramiko如何連線伺服器?

2021-09-02 17:03:59 字數 2979 閱讀 7015

本文和大家分享的是python開發中使用

paramiko

paramiko

有所幫助。

ssh連線步驟

1.ssh server建立

server public key

,對應檔案

/etc/ssh/ssh_host_*

檔案首先是有乙個ssh的伺服器,它建立了一些公匙,然後放在本地的檔案中。

2.ssh client發出連線請求

這個ssh的

client

它發出連線請求

3.ssh server傳送

server public key

給ssh client

[client

如何反應?]

伺服器把公匙發給客戶端。

4.ssh client比較

server public key

,同時計算自己的

client pubic/private key

客戶端拿到公匙之後進行比較,同是做出判斷,接收或者是拒絕,還有儲存,同是時計算出自己的公匙還有私匙。

5.ssh client傳送

client public key

到ssh server

然後把這個公匙發給伺服器。

6.開始連線,雙向加解密

接著就開始連線雙向通訊,這個就是ssh連線的整個過程。

paraiko connect to remote server

前提:

1.remote server open ssh service.

2.知道其

username,password

顯示你要連線的機器,它已經開啟了ssh的這樣的服務, 我們今天要連線的這台機子就是我另外一台區域網內的,

ubuntu

的機器,它已經開啟了,預設埠為22的

ssh的服務,而且要知道它的使用者名稱和密碼。

方法:

1.新建

paramiko.sshclient

paramiko連線遠端伺服器,它的過程是這樣的,首先是新建乙個

sshclient

,這個sshclient

是什麼呢,它是

paramiko

提供給我們的乙個

api中的類,因為

paramiko

它是乙個基於

ssh協議的乙個封裝,的類庫它提供了一些建議好用的

api給我們使用。讓我們來完成各種各樣的操作。這個

sshclient

就是它提供的乙個要訪問遠端,和檔案傳輸的乙個最基本的介面。

2.設定

hot key

機制另外乙個就是要設定它的hot key,就是之前所提到的,設定公匙的,處理公匙的這樣乙個機制。

paramiko

它提供給我們乙個,比較簡單的設定的辦法。

3.呼叫

api connect

最後就是掉它的connect api連線,這樣我們就來看一下,如何編碼來實現。

我們開啟pycham,新建乙個

python

專案,引入

paramiko

的包。import paramiko

然後我們使用paramiko 的

sshclient

這個內建立乙個

client

物件。client = paramiko. sshclient ()

然後就設定它的host_key機制,一般是採用

paramiko

的自動天際的機制。

client.set_missing_host_key_policy(paramiko.autoaddpolicy())

第三個就是呼叫它的connect方法,我們可以看一下,它的

connect

方法有很多的引數,有

ip、埠、使用者名稱、密碼、還有一些其它的很多引數。我們在用其中乙個比較重要的引數就是

timeout

就是超時時間,就是建立這個鏈結的時候我們想讓它,如果多久沒有直接連線,就返回異常。

client.connect(hostname=self.host, port=self.port, username=self.usr, password=self.pwd, timeout=self.timeout)

然後這個connect我們首先,來看下不設定這個

host_key

會有什麼情況。

它會報錯,會丟擲乙個sshexception這個異常,說這個伺服器找不到,不在這個

known_hosts

的這個檔案下,所以說這個是必要的。

client = paramiko.sshclient()

client.set_missing_host_key_policy(paramiko.autoaddpolicy())

client.connect(hostname=self.host, port=self.port, username=self.usr, password=self.pwd, timeout=self.timeout)

我們來看一下

就沒有報錯了。我怎麼知道它這個連線是正常的呢。

因為這個connect api它如果,出現連線異常的情況下,它都會丟擲乙個

sshexception

這個異常,現在它沒有拋異常就說明它是,正常連線。

paramiko 基於ssh用於連線遠端伺服器

ssh username ip passwd 解決的問題 如果隻前沒有連線過的ip 會出現 root foundation0 ssh ssh root 172.25.254.36 the authenticity of host 172.25.254.36 172.25.254.36 can t b...

paramiko 基於ssh用於連線遠端伺服器

ssh username ip passwd 解決的問題 如果隻前沒有連線過的ip 會出現 root foundation0 ssh ssh root 172.25.254.36 the authenticity of host 172.25.254.36 172.25.254.36 can t b...

使用paramiko連線EC2主機

在亞馬遜雲上建的主機沒有密碼,只有乙個pem檔案。所以paramiko需要通過該pem檔案登入雲主機進行管理 有兩種方式,第一種被我註解了 import paramiko ssh paramiko.sshclient ssh.set missing host key policy paramiko....