ssh登入Linux通常有兩種方法:使用者名密碼登入、使用者名公鑰登入;使用使用者名密碼登入每次都要輸入密碼,相當麻煩,而使用使用者名公鑰登入則可以避免這個問題。
建立公鑰私鑰檔案
打開本地終端,執行 ssh-keygen 指令建立密鑰對:
ssh-keygen -t rsa -C 'your e[email protected]'
-t 指定密鑰類型,預設即 rsa ,可以省略
-C 設定注釋文字,比如你的郵箱,可以省略
生成過程中會提示輸入密碼兩次,如果不想在使用公鑰的時候輸入密碼,可以回車跳過;
密鑰預設儲存位置在 ~/.ssh 目錄下,打開後會看到私鑰檔案 id_rsa 和公鑰檔案 id_rsa.pub;
複制公鑰至伺服器
使用 scp 指令将本地的公鑰檔案 id_rsa.pub 複制到需要連接配接的Linux伺服器:
scp ~/.ssh/id_rsa.pub <使用者名>@<ip位址>:/home/id_rsa.pub
如果修改了ssh預設連接配接端口的話,需要加上端口資訊:
scp -P <端口号> ~/.ssh/id_rsa.pub <使用者名>@<ip位址>:/home/id_rsa.pub
把公鑰追加到伺服器ssh認證檔案中:
cat /home/id_rsa.pub >> ~/.ssh/authorized_keys
這時候在本地終端中使用使用者名和ip登入就不需要密碼了:
ssh <使用者名>@<ip>
如果修改了ssh預設連接配接端口的話,需要加上端口資訊:
ssh -p <端口号> <使用者名>@<ip位址>
配置快捷登入
即使不用輸入密碼,這樣每次登入還要輸入使用者名ip端口資訊還是有點麻煩,我們可以配置ssh快捷登入更友善的登入Linux;
在本地 ~/.ssh/config 配置檔案中添加ssh伺服器資訊,格式:
Host alias #自定義别名
HostName hostname #替換為你的ssh伺服器ip或domain
Port port #ssh伺服器端口,預設為22
User user #ssh伺服器使用者名
IdentityFile ~/.ssh/id_rsa #第一個步驟生成的公鑰檔案對應的私鑰檔案
這時候就可以使用配置檔案中自定義的别名來登入了: