本文和大家分享的是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....