SSH連接指南 && Pycharm遠程開發


剛開始工作,在學校有些工具或知識接觸不到,現將某些概念和方法梳理一下。

1  SSH相關指南

1.1  什么是SSH?

簡單說,SSH是一種網絡協議,用於計算機之間的加密登錄。

如果一個用戶從本地計算機使用SSH協議登錄另一台遠程計算機,我們就可以認為,這種登錄是安全的,即使被中途截獲,密碼也不會泄露。

1.2  最基本的指令

SSH主要用於遠程登錄。假定你要以用戶名user,登錄遠程主機host,只要一條簡單命令就可以了。

1 $ ssh user@host

如果本地用戶名與遠程用戶名一致,登錄時可以省略用戶名。

1 $ ssh host

SSH的默認端口是22,也就是說,你的登錄請求會送進遠程主機的22端口。使用p參數,可以修改這個端口。

1 $ ssh -p 2222 user@host

上面這條命令表示,ssh直接連接遠程主機的2222端口。

1.3  在公司怎么連接服務器?

先添加用戶,才能遠程登錄。(公鑰登錄)

  1. 在終端中生成密鑰。指令為:
    1 $ ssh-keygen -m PEM -t rsa -b 4096

    注意后面的參數,其中4096是密鑰長度。之后一路回車,完成后會在當前用戶目錄下生成.ssh文件夾,其中包含id_rsa(私鑰)和id_rsa.pub(公鑰)。

  2. 復制公鑰。指令為:
    1 $ cat .ssh/id_rsa.pub | pbcopy
  3. 在ops中添加公鑰,得到登錄代碼。實際上是執行了如下代碼:
    1 $ ssh-copy-id user@host

    最終會返回登錄代碼,如:

    1 $ ssh -p port user@host

    需要注意,這個host往往是跳板機的地址,其可能為真實的IP地址,也可能為域名(即該IP地址的別稱),可以在網站https://ip.liangwei.cc/上查詢域名的真實IP地址。

  4. 在終端輸入登錄代碼,登錄跳板機,再通過IP地址連接服務器,即可進入到指定服務器的終端執行指令。

需要注意,以上生成的是使用公鑰登錄的方式,免密碼,就是用戶將自己的公鑰儲存在遠程主機上。還有一種方式是口令登錄,即輸入密碼。

[參考文章]

1.4  跳板機與服務器?

跳板機是什么?跳板機是運維堡壘主機的另個稱呼。現在一定規模互聯網企業,往往都擁有大量服務器,如何安全並高效的管理這些服務器是每個系統運維或安全運維人員必要工作。現在比較常見的方案是搭建跳板機環境作為線上服務器的入口,所有服務器只能通過堡壘機進行登陸訪問。即所有的ssh連接都是通過跳板機來完成,以便於對ssh連接進行驗證和管理。

因此,需要通過終端連接到遠程服務器進行工作,由於安全等因素,登錄服務器時需要先登錄跳板機,然后在跳板機上再實際連接服務器。

1.5  SSH免密登錄

每一次登錄服務器,都需要使用跳板機中轉未免有些繁瑣,若想直接與服務器進行連接,首先要做的工作就是在服務器上配置本機SSH免密登錄。

  1. 粘貼板復制id_rsa.pub內容,即公鑰。
  2. 通過跳板機登錄到指定服務器中,切換至hadoop用戶(如果使用當前用戶,則不用切換),指令如下:
    1 $ sudo su - hadoop
  3. 添加公鑰,指令如下(將“公鑰”替換為粘貼板內容,記得在雙引號里面):
    1 $ echo "公鑰" >> ~/.ssh/authorized_keys
  4. cat查看authorized_keys文件,指令如下:
    1 $ cat ~/.ssh/authorized_keys

    只要最后一段的結尾有“用戶名@本級名稱”就是添加成功了,現在,即可無密登錄服務器了。

注意,因配置在hadoop用戶下,故登錄用戶只能為hadoop時才是免密登錄。

另外,安全起見,在不需要的服務器用戶上通過vim在文件authorized_keys上刪除公鑰。

1.6  SecureCRT配置

經過SSH免密登錄配置后,其實本機就可以直接與服務器相連了,指令如下:

1 $ ssh -p port user@host

注意,host為遠程服務器的真實地址。現在其實可以直接配置Pycharm進行遠程開發了,但是還是想講一講“端口轉發”如何操作(不知道遠程服務器真實地址的情況下)。

端口轉發使用SecureCRT軟件,當然不止這一種方式。

  1. 新建SSH2連接,Hostname為跳板機地址,Port為權限端口,Username為用戶名,在Authentication中將Publickey調至最高級別,並選擇公鑰id_rsa.pub。

  2. 在Port Forwarding中添加端口轉發,設置本地端口號和服務器地址、端口號。

  3. 重新連接,此時端口轉發已完成,即通過本地端口號可以直接訪問遠程服務器,只要此連接不關閉,可一直轉發。
  4. 可作如下測試:新建SSH2連接,Hostname為本機地址127.0.0.1,Port為剛剛設置的本地端口號,Username為服務器的用戶名,在Authentication中將Publickey調至最高級別,並選擇公鑰,即可直接登錄服務器。

 備注,登錄跳板機后,需要再輸入服務器地址才能進入服務器,所以可以在Logon Active中添加登錄指令,自動完成輸入服務器地址命令,如下圖。

2  Pycharm遠程開發

2.1  服務器配置開發環境

  1. 登錄至服務器用戶,下載Anaconda安裝包,指令如下:
    1 $ wget https://repo.continuum.io/archive/Anaconda3-5.3.1-Linux-x86_64.sh

    如果是Miniconda,則地址為https://repo.continuum.io/miniconda/Miniconda3-4.6.14-Linux-x86_64.sh,在下面安裝過程中也要把對應的文件名更換。

  2. 安裝,指令如下:
    1 $ bash Anaconda3-5.3.1-Linux-x86_64.sh

    需要注意,這個命令是將Anaconda安裝到默認的根目錄路徑下面,如果要安裝到指定目錄,則需要使用下面的指令:

    1 $ bash Anaconda3-5.3.1-Linux-x86_64.sh -u

    然后一直enter,輸入yes接受條款,然后輸入你的指定路徑,在最后還需要選擇yes,即添加環境變量。

  3. 輸入conda list,如果出錯則是環境變量沒有配置,需再次配置,使用 $ vim ~/.bashrc 打開文件,在最后一行添加如下內容:
    1 export PATH=/home/(your_user_name)/anaconda3/bin:$PATH

    之后保存退出,使用 source ~/.bashrc 更新。

  4. 輸入conda list,則會成功顯示當前已安裝的包。

[參考文章]

2.2  常用conda指令

刪除conda:

  1. 刪除整個conda目錄,指令如下:
    1 $ rm -rf conda文件夾路徑
  2. 清理下.bashrc中的Anaconda路徑。
    1. 到根目錄下,打開終端並輸入以下指令:
      1 $ vim ~/.bashrc
    2. 在.bashrc文件末尾用#號注釋掉之前添加的路徑(或直接刪除):
      1 #export PATH=/home/lq/conda3/bin:$PATH

      保存並關閉文件。

    3. 使其立即生效,在終端執行以下指令:
      1 $ source ~/.bashrc
    4. 關閉終端,然后再重啟一個新的終端,這一步很重要,不然在原終端上還是綁定有conda。

更改下載源(Linux):[參考文章]

常用指令:

 1 conda --version  //查看conda版本
 2 conda env list  //查看所有環境
 3 conda info --envs  //查看所有環境
 4 activate  //直接進入默認的conda環境
 5 conda create -n environmentName python=3.6  //創建環境
 6 conda remove -n environmentName --all  //刪除環境
 7 activate environmentName  //切換環境(Windows)
 8 source activate environmentName  //切換環境(Linux)
 9 deactivate environmentName  //退出當前環境(Windows)
10 source deactivate environmentName  //退出當前環境(Linux)

以上是將虛擬環境安裝在默認路徑中,如果是想將虛擬環境安裝在指定路徑中,那么需要使用如下指令:

1 conda create --prefix="D:\my_python\envs\environmentName" python=3.6  //指定路徑下創建環境
2 conda remove --prefix="D:\my_python\envs\environmentName" --all  //刪除環境
3 activate D:\my_python\envs\environmentName  //切換環境(Windows)
4 source activate D:\my_python\envs\environmentName  //切換環境(Linux)
5 source deactivate environmentName  //退出當前環境(Linux)

注意:在conda4.0版本以上,在切換或者推出環境時不再使用source,而是替換成conda。

其實刪除指令有很多,除了以上指令外,下面這條也可以,但不經常使用,只是記錄一下:

1 conda env remove -p D:\my_python\envs\environmentName

進到環境后,就跟普通的Python指令是一樣的,可以使用pip或者conda進行安裝、查看和刪除包。

1 python -v  //查看Python版本
2 pip -v  //查看pip版本
3 pip list  //列出所有包
4 pip install name  //安裝包
5 pip update name  //升級包
6 pip uninstall name  //卸載包
7 pip freeze > requirements.txt  //導出當前環境的包信息
8 pip install -r requirements.txt  //安裝配置文件的包
1 conda list  //列出所有包
2 conda install name  //安裝包
3 conda update name  //升級包
4 conda remove name  //卸載包
5 conda env export > environment.yaml  //導出當前環境的包信息,注意只能導出conda安裝的包
6 conda env create -f environment.yaml  //用配置文件創建新的虛擬環境

2.3  Pycharm配置

 打開Pycharm,在Settings中添加python解釋器。

  1. 打開Pycharm,左上角打開Settings,在Project Interpreter選擇Add。
  2. 選擇SSH連接,輸入地址、端口、用戶名(確保SecureCRT打開)。
    注意,如果不經過端口轉發的話,Host地址和Port直接填寫遠程服務器的真實地址和端口即可。
  3. 選擇解釋器所在路徑。
  4. 選擇本地工作路徑和服務器的工作路徑,注意最下面的選項要選擇,可以自動同步代碼。
    還要注意一點,在點擊確認后,有可能會有提示框,大致意思是說“是否立即覆蓋遠程服務器文件夾的文件...”之類的,請視情況而選擇,確定的話會將設置的遠程服務器同步文件夾內的文件全部清空。

 事實上,在新建項目的時候可以選擇遠程解釋器,那樣操作比較方便,過程與上類似。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM