天天看點

python之SSH遠端登入

一、SSH簡介

  SSH(Secure Shell)屬于在傳輸層上運作的使用者層協定,相對于Telnet來說具有更高的安全性。

二、SSH遠端連接配接

  SSH遠端連接配接有兩種方式,一種是通過使用者名和密碼直接登入,另一種則是用過密鑰登入。

  1、使用者名和密碼登入

  花花1要在自己的主機登入花花2的電腦,她可以通過運作以下代碼來實作

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())  # 跳過了遠端連接配接中選擇‘是’的環節,
ssh.connect('IP', 22, '使用者名', '密碼')
stdin, stdout, stderr = ssh.exec_command('df')
print stdout.read()      

  在這裡要用到paramiko子產品,這是一個第三方子產品,要自自己導入(要想使用paramiko子產品,還要先導入pycrypto子產品才能用)。

  tips: 下載下傳一個pip(超級好用!!!完美地避開自己導入子產品會出現的莫名其妙的錯誤),輸入pip install paramiko一句話解決

  2、密鑰登入

 花花1要在自己的主機登入花花2的電腦,花花1用指令ssh.keygen -t rsa生成公鑰和私鑰,她将自己的公鑰發給花花2,使用ssh-copy-id -i ~/ssh/id_rsa.pub [email protected]指令

然後運作以下代碼來實作      
import paramiko

private_key_path = '/home/auto/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(private_key_path)

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
ssh.connect('IP', 22, '使用者名', key)
stdin, stdout, stderr = ssh.exec_command('df')
print stdout.read()      

  關于密鑰登入,每個人都有一個公鑰,一個私鑰,公鑰是給别人的,私鑰是自己留着,隻有自己的私鑰能解開自己公鑰加密的檔案。

  花花1有一個情書要發給花花2,就要先下載下傳花花2的公鑰進行加密,這樣花花2就能用自己私鑰解開這情書,獲得内容。

  如果花花2要确認是否是花花1本人給她寄的情書,就去下載下傳一個花花1的公鑰,随機寫一些字母,用花花1的公鑰加密,發給對方,對方解密之後發回給花花2,如果花花2收到的解密後的字母和自己發出去的一樣,對方就是花花1無疑了。

轉載于:https://www.cnblogs.com/huahua12/p/7491729.html