使用Python程式碼遠端連線伺服器

阿麗米熱發表於2023-04-16

一、paramiko模組的介紹

  • 模組介紹

使用Python的第三方模組paramiko實現遠端連線伺服器
功能:透過python程式碼連線伺服器並執行相關操作並且支援使用者名稱密碼連線和公鑰私鑰連線

  • 模組安裝
pip install paramiko

二、基本使用(使用者名稱密碼登入)


import paramiko

# 使用者名稱和密碼的方式
# 建立SSH物件(固定)
ssh = paramiko.SSHClient()
# 允許連線不在know_hosts檔案中的主機(固定)
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 連線伺服器
ssh.connect(hostname='10.0.0.200', port=22, username='root', password='123')
# 執行命令
stdin, stdout, stderr = ssh.exec_command('df')
"""
stdin 支援傳額外的命令
stdout 命令正確的執行結果
stderr 命令錯誤的執行結果
"""
# 獲取命令結果  還可以利用stdin繼續傳值 eg:-y確認
result = stdout.read()
print(result.decode('utf8'))
# 關閉連線
ssh.close()

三、用公鑰私鑰連線

# 先產生公鑰私鑰
git軟體(桌面空白區域滑鼠右鍵即可檢視是否安裝成功)

# 1.生成
ssh-keygen -t rsa  連續按三下回車即可
# 2.複製公鑰到遠端伺服器
ssh-copy-id -i 公鑰檔案絕對路徑  使用者名稱@伺服器ip地址
# 公鑰和私鑰(先講公鑰儲存到伺服器上)
import paramiko

# 讀取本地私鑰
private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')

# 建立SSH物件
ssh = paramiko.SSHClient()
# 允許連線不在know_hosts檔案中的主機
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 連線伺服器
ssh.connect(hostname='123.206.16.61', port=22, username='root', pkey=private_key)

# 執行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 獲取命令結果
result = stdout.read()
print(result.decode('utf-8'))
# 關閉連線
ssh.close()

相關文章