一、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 huahua2@IP命令
然后運行以下代碼來實現
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無疑了。