1. 程式人生 > >linux ssh免密碼登入其他主機

linux ssh免密碼登入其他主機

現在A主機要通過ssh連線到B主機,需要在A主機上生成一個ssh公鑰,然後寫入到B主機的authorized_keys檔案即可(預設主機使用者都為root)。

1 在root賬戶下生成公鑰 
ssh-keygen


2 將生成的公鑰先寫入A主機的authorized_keys檔案 
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

3 將A主機下的authorized_keys傳送到B主機的 root賬戶的 ~/.ssh/ 目錄下 
這時還沒設定免密碼登入,所以傳送時需要輸入B主機root賬戶的密碼,我用的虛擬機器裝完系統後還沒設定ubuntu的root賬戶初始密碼,所以需要先設定一下。

  • (1) 在B主機 輸入 sudo passwd ,之後輸入要設定的密碼
  • (2) 之後A主機還是不能通過ssh輸入密碼的方式連線到B主機的root賬戶,因為ssh預設不能連線到root賬戶,需要更改一下B主機ssh的配置,修改 /etc/ssh/sshd_config 檔案。 
    使用vi或gedit開啟後,找到 PermitRootLogin prohibit-password ,這裡預設的是禁止密碼登入(即禁止登入?) ,其修改為yes,即 PermitRootLogin yes ,然後執行service sshd restart重啟ssh服務 。 
    修改完成後,重啟B主機的ssh服務。之後測試一下,A主機能否連線到B主機,ssh

    [email protected],然後輸入密碼,發現終於可以連上了。

  • (3) 將A主機中的公鑰,傳送到B主機,先在B主機的root賬戶下執行 
    ssh-keygen ,建立一個 .ssh 目錄 
    之後在A主機的root賬戶下執行 
    scp ~/.ssh/authorized_keys [email protected]:~/.ssh/ 
    注意這裡使用scp命令傳送檔案到目錄需要先建立一個目錄,或者將A主機的authorized_keys直接傳送到 B主機的~/.ssh/authorized_keys 檔案中 
    之後修改B主機接受到的authorized_keys的許可權,在B主機中執行 
    chmod 600 ~/.ssh/authorized_keys

    到這終於實現了使用ssh無密碼訪問root賬戶。

    注:若使用者不是root使用者 則不需要修改sshd_config檔案 就可以實現無密碼登入