Linux 基礎之 OpenSSH

OpenSSH

OpenSSH 是 SSH (Secure SHell) 協議的免費開源實現。SSH協議族可以用來進行遠程控制, 或在計算機之間傳送文件。而實現此功能的傳統方式,如telnet(終端仿真協議)、 rcp ftp、 rlogin、rsh都是極爲不安全的,並且會使用明文傳送密碼。OpenSSH提供了服務端後臺程序和客戶端工具,用來加密遠程控制和文件傳輸過程中的數據,並由此來代替原來的類似服務。

OpenSSH是使用SSH透過計算機網絡加密通訊的實現。它是取代由SSH Communications Security所提供的商用版本的開放源代碼方案。目前OpenSSH是OpenBSD的子計劃。

OpenSSH常常被誤認以爲與OpenSSL有關聯,但實際上這兩個計劃的有不同的目的,不同的發展團隊,名稱相近只是因爲兩者有同樣的軟件發展目標──提供開放源代碼的加密通訊軟件。

OpenSSH服務,sshd,是一個典型的獨立守護進程(standalone daemon),但也可以根據需要通過網絡守護進程。


  • 安裝 openssh

  • 使用 ssh 用戶名+密碼 方式登錄
  • openssh的主配置文件爲 /etc/ssh/ 目錄下的 ssh_configsshd_config
  • ssh_config和sshd_config都是ssh服務器的配置文件,二者區別在於,前者是針對客戶端的配置文件,後者則是針對服務端的配置文件

  • 這裏只配置 sshd_config 

  • vim /etc/ssh/sshd_config        #需要root權限

  • 修改以下幾項

  • Port 22                                   #sshd服務運行端口,默認爲22                         
    SyslogFacility AUTHPRIV       #定義ssh的日誌記錄在 /var/log/secure 文件中
    PermitRootLogin yes              #允許 root 用戶網絡登錄
    PermitEmptyPasswords no     #是否允許空密碼登錄,設置爲no 不允許
    PasswordAuthentication yes   #是否允許使用密碼登錄,設置爲允許
    UsePAM no                            #是否使用PAM驗證
    UseDNS no                            #是否允許DNS查詢,選擇 no 關閉
    AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
    AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
    AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
    AcceptEnv XMODIFIERS
    Subsystem    sftp    /usr/libexec/openssh/sftp-server
  • 確認無誤後保存退出,重啓ssh服務

  • 在另外一臺機器上登錄
  • ssh 用戶名@IP      登錄的用戶要事先存在於要登錄的機器上,並設置有密碼。
  • 按提示輸入密碼


  • 在生產環境中,如果讓root用戶直接可以使用網絡登錄是非常危險的,所以下面制定更高安全級別的登陸方式:密鑰登錄

  • 使用 ssh-keygen 命令來生成密鑰對

  • 使用需要登錄的用戶生成密鑰對

  • Generating public/private rsa key pair.
    Enter file in which to save the key (/home/test/.ssh/id_rsa): #默認存放密鑰的目錄及密鑰名稱 id_rsa (默認基於rsa算法)
    Enter passphrase (empty for no passphrase):                      #是否給密鑰設置密碼
    Enter same passphrase again: 
    Your identification has been saved in /home/test/.ssh/id_rsa.    #生成密鑰對的存放目錄及名稱
    Your public key has been saved in /home/test/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:q12boL6CTiU1DSBRt6/rPpwoIi/8mVI1Aq5POWbUUIU [email protected]
    The key's randomart image is:                                                #rsa 2048 爲密鑰的長度
    +---[RSA 2048]----+
    |oooo+o.          |
    | o..E+           |
    |. .o+ .          |
    | ..o.=           |
    |....+ o S        |
    |. *+ .   .       |
    |.=o=..  o .      |
    |=++ B. + o o     |
    |o==*++=.. o      |
    +----[SHA256]-----+
  • 私密鑰文件 id_rsa 一定要保存好,不能泄漏
  • 將公密鑰文件 id_rsa.pub 的內容寫入本地 authorized_keys 私鑰驗證文件中

  • 在使用密碼驗證方式登錄的情況下,可以使用 ssh-copy-id 將公鑰複製到遠程機器
  • ssh-copy-id -i .ssh/id_rsa.pub  用戶名@對方IP
  • 注意: ssh-copy-id 將key寫到遠程機器的 ~/ .ssh/authorized_key.文件中

  • 注意 .ssh 目錄和 authorized_keys 文件的權限

  • .ssh 目錄權限必須爲 700  authorized_keys 文件權限必須爲 644

  • chmod 700 ~/.ssh
  • chmod 644 ~/.ssh/authorized_keys


  • Permission denied (publickey,keyboard-interactive).權限被拒絕(公鑰、鍵盤交互)  一般這個報錯就是文件權限引起的


  • 編輯 /etc/ssh/sshd_config 配置文件

  • Port 22
    SyslogFacility AUTHPRIV
    PermitRootLogin no                                        #禁止root用戶網絡登錄
    PubkeyAuthentication yes                              #開啓密鑰認證
    AuthorizedKeysFile    .ssh/authorized_keys    #指明密鑰認證文件存放位置及名稱,這裏使用的是相對路徑
    PermitEmptyPasswords no                             #不允許空密碼登錄
    PasswordAuthentication no                            #不允許密碼方式登錄
    UsePAM no
    UseDNS no
     
  • 重啓服務之前,建議多開一個 ssh 鏈接,萬一配置有問題方便處理

  • 確認無誤保存退出,重啓sshd服務

  • systemctl restart sshd

  • 登錄測試
  • 切換爲生成 ssh-keygen 的用戶
  • ssh [email protected]


  • 將公密鑰 id_rsa.pub 文件中的 key 複製到其他機器上的 authorized_keys 密鑰驗證文件中

  • 注意 :id_rsz.pub 文件中的 Key 爲一行,沒有換行

  • 單方通信只需要對方機器的 id_rsz.pub 文件中的 Key

  • A 機器上的 authorized_keys 密鑰認證文件中有 B 機器密鑰key的信息,所以在 B 機器上可以登陸 A 機器
  • 反之在 B 機器上的 authorized_keys 密鑰認證文件中沒有 A 機器的key,所以在 A 機器上無法登陸 B 機器

  • 雙方通信 authorized_keys 文件中要有雙方機器 id_rsz.pub 文件中的 Key

  • 在另外一臺機器上測試


  • 配置好使用密鑰認證登錄後,在 WINDOWS 上使用 Xshell 密鑰認證方式登錄 Linux
  • 打開 Xshell 點擊 工具--新建用戶密鑰生成嚮導

  • 默認密鑰類型 rsa ,密鑰長度 2048位

  • rz 命令屬於 lrzsz 包
  • 在 Linux 機器上使用哪個用戶登陸,就在對應用戶家目錄下的 authorized_keys 文件中添加密鑰認證 key

  • 在 Linux 機器上使用哪個用戶登陸就在對應用戶家目錄下的 authorized_keys 文件中添加密鑰認證 key
  • 填寫對應的用戶名
  • 填寫用戶 key 文件的加密密碼


 

發佈了32 篇原創文章 · 獲贊 4 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章