使用Python PyCharm遠程連接服務器的方法

Python是當今最為流行的編程語言之一,其受歡迎的原因之一是由於其靈活性和強大的功能。Python擁有豐富的庫和工具,使其成為處理多種任務的理想選擇。當與其他技術一起使用時,它可以完成各種各樣的任務,例如遠程服務器管理和批量處理,因此學習如何遠程訪問服務器,並使用Python進行管理是非常有用的。本文將探討使用Python PyCharm遠程連接服務器的方法。

一、安裝paramiko庫

緊密建立SSH(Secure Shell協議)的Python的一個標準庫是Paramiko。該庫包含用於SSH客戶端和服務器的模塊,與其他Perl,Ruby,Java等語言都有對應的庫。要在PyCharm中使用Paramiko,必須首先在計算機中安裝該庫。可以使用以下pip命令安裝Paramiko庫:

pip install paramiko

安裝完成後,便可在PyCharm中使用Paramiko連接服務器。下面是一個連接到遠程服務器的示例代碼:

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('server_ip', port=22, username='username', password='password')
stdin, stdout, stderr = ssh.exec_command('ls')
print(stdout.read())

ssh.close()

在此代碼中,我們使用Paramiko創建了一個SSH客戶端。 連接到SSH服務時,應在set_missing_host_key_policy()中指定策略,該策略將接受所有新的主機密鑰。然後,使用連接參數(主機名,端口,用戶名和密碼)連接到服務器。最後,我們執行命令’ls’,並使用print語句打印結果。最後,關閉SSH連接。

二、使用SSH密鑰進行連接

在上述示例中,我們使用了用戶名和密碼進行認證,但是,如果使用SSH密鑰對而非密碼進行身份驗證,則更加安全。因此,本章將介紹如何使用SSH密鑰對進行身份驗證。要使用SSH密鑰對,請執行以下操作:

1.生成密鑰對:

使用ssh-keygen命令生成密鑰對。命令如下:

ssh-keygen -t rsa -b 4096

可在運行ssh-keygen命令後按默認參數設置(一路按回車即可),即可生成私有密鑰(默認名稱為id_rsa)和公共密鑰(默認名稱為id_rsa.pub)。私有密鑰在使用時需要保證安全,因此不要輕易將其傳輸到其他機器中。公共密鑰可以分發給需要訪問服務器的用戶。

2.將公鑰添加到服務器上的authorized_keys文件中:

將id_rsa.pub文件的內容添加到服務器上的authorized_keys文件中。將公共密鑰添加到authorized_keys文件中後,即可使用私鑰對將連接到遠程服務器進行身份驗證。

3.使用私鑰進行連接:

使用私鑰對連接到遠程服務器。代碼如下:

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect('server_ip', username='username', key_filename='/path/to/private_key')
stdin, stdout, stderr = ssh.exec_command('ls')
print(stdout.read())
ssh.close()

在代碼中我們僅需要將password參數改成key_filename,參數值為我們的私鑰路徑即可完成從密碼方式到SSH密鑰對方式的轉變。

三、使用SSH代理進行連接

當我們需要連接到遠程服務器時,如果目標服務器不可直接訪問(如位於私有網絡中,或者通過跳板主機進行訪問),則必須使用代理。SSH代理(也稱為跳板)可讓用戶連接到一個中間服務器,然後從中間服務器連接到遠程服務器。本章將介紹如何使用SSH代理進行連接,以及如何在PyCharm中配置SSH代理。

1.使用SSH代理進行連接:

在使用SSH代理進行連接時,需要為paramiko設置一個堡壘機,然後再連接到我們要訪問的目標主機。下面是一個示例代碼,其中使用了一台堡壘機實現向目標服務器的連接:

import paramiko

# 定義堡壘機和目標機器的信息
bastion = {'hostname': '10.10.0.1', 'username': 'bastion', 'password': 'bastion-password', 'port': 22}
target = {'hostname': '192.168.0.101', 'username': 'target', 'password': 'target-password', 'port': 22}

# 連接到堡壘機
ssh_bastion = paramiko.SSHClient()
ssh_bastion.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_bastion.connect(bastion['hostname'], bastion['port'], bastion['username'], bastion['password'])

# 建立隧道連接至目標主機
transport = ssh_bastion.get_transport()
dest_addr = (target['hostname'], target['port'])
local_addr = ('localhost', 10022)
channel = transport.open_channel("direct-tcpip", dest_addr, local_addr)

# 連接到目標主機
ssh_target = paramiko.SSHClient()
ssh_target.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_target.connect('localhost', port=10022, username=target['username'], password=target['password'])

# 執行命令
stdin, stdout, stderr = ssh_target.exec_command('ls')
print(stdout.read())

# 關閉連接
ssh_target.close()
ssh_bastion.close()

在此代碼中,我們首先定義了一個表示堡壘機和目標服務器的字典。然後,使用Paramiko的SSHClient連接到堡壘機。隨後,我們創建了一個隧道通道來連接到目標服務器,並使用SSH代理連接到目標服務器。最後,我們執行命令’ls’,打印輸出結果,並關閉SSH連接。

2.在PyCharm中設置SSH代理:

配置PyCharm窗口左下角找到Setting–Search“SSH Proxy”,在彈出的對話框中根據實際情況輸入跳板機的IP地址,端口號等信息即可。

四、總結

在本文中,我們探討了使用Python PyCharm遠程連接服務器的方法。使用Paramiko庫進行SSH協議連接,可以實現多種連接方式,例如使用SSH密鑰,使用SSH代理等。這些都是管理大量服務器時非常有用的技術。因此,學習如何使用Python和Paramiko連接服務器是一個非常有用的技能,可以使工作更加高效便捷。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/236186.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 11:58
下一篇 2024-12-12 11:58

相關推薦

  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • 如何在PyCharm中安裝OpenCV?

    本文將從以下幾個方面詳細介紹如何在PyCharm中安裝OpenCV。 一、安裝Python 在安裝OpenCV之前,請確保已經安裝了Python。 如果您還沒有安裝Python,可…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29

發表回復

登錄後才能評論