Linux登錄指令-ssh


SSH(遠程連接工具)連接原理:ssh服務是一個守護進程(demon),系統后台監聽客戶端的連接,ssh服務端的進程名為sshd,負責實時監聽客戶端的請求(IP 22端口),包括公共秘鑰等交換等信息。

ssh遠程登陸

登錄 22為默認端口
ssh omd@192.168.25.137 
ssh -p 22 omd@192.168.25.137 

ssh免密碼登陸

首先在客戶端上創建一對公私鑰(公鑰文件:~/.ssh/id_rsa.pub私鑰文件:~/.ssh/id_rsa),然后把公鑰放到服務器上~/.ssh/authorized_keys),自己保留好私鑰。當ssh登錄時,ssh程序會發送私鑰去和服務器上的公鑰做匹配。如果匹配成功就可以登錄了。

白話說明:每個機器都可以生成自己的密鑰公鑰,將自己的公鑰交給其他人后,之后使用ssh遠程訪問遠程機器時,會自動拿自己的密鑰去匹配遠程機器上公鑰記錄(提前登記),匹配上了就自動連接,不需要密碼!

生成公鑰和私鑰

如果已經生成可以跳過(所有詢問輸入都跳過)

ssh-keygen -t rsa

產生一個新目錄,叫.ssh,進入該目錄ls就會發現有兩個文件,id_rsaid_rsa.pub,前者為密鑰,后者為公鑰

將公鑰復制到其他從機

  • 方式一(通用方法)

    # 將主機私鑰復制成authorized_keys
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 
    # 修改權限
    chmod 600 ~/.ssh/authorized_keys
    # 遠程拷貝
    scp ~/.ssh/authorized_keys cjp@hadoop001:~/.ssh/
    
  • 方式二(ssh專屬方法

    ssh-copy-id將主機的pub值寫入遠程機器的~/.ssh/authorized_key中,

    • 如果遠程機器上不存在~/.ssh/authorized_key文件,將會自動創建
    • 如果主機的pub值已經存在~/.ssh/authorized_key文件中,將會復寫該主機在此遠程機器的pub值
    ssh-copy-id  -i  ~/.ssh/id_rsa.pub  root@192.168.1.100
    

文件說明

id_rsa

私鑰

id_rsa.pub

公鑰

authorized_keys

一個登記本,經過授權的公鑰,可以免密碼登陸。不會自動創建。

有專用的ssh-copy-id指令對應這個文件(參考上訴的密碼登陸方式二)。

known_host

參考:https://www.cnblogs.com/cindy-cindy/p/6797216.html

ssh會把你每個你訪問過計算機的公鑰(public key)都記錄在~/.ssh/known_hosts。當下次訪問相同計算機時,OpenSSH會核對公鑰。如果公鑰不同,OpenSSH會發出警告, 避免你受到DNS Hijack之類的攻擊。

只要機子遠程登陸過其他機子,當前機子就會創建出known_host進行登記。

一台主機上有多個Linux系統,會經常切換,那么這些系統使用同一ip,登錄過一次后就會把ssh信息記錄在本地的~/.ssh/known_hsots文件中,切換該系統后再用ssh訪問這台主機就會出現沖突警告。有以下兩個解決方案:

  1. 手動刪除修改known_hsots里面的內容;
  2. 修改配置文件“~/.ssh/config”,加上這兩行,重啟服務器。
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null


免責聲明!

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



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