ssh登錄Linux通常有兩種方法:用戶名密碼登錄、用戶名密鑰登錄;使用用戶名密碼登錄每次都要輸入密碼,相當麻煩,而使用用戶名密鑰登錄則可以避免這個問題。
創建密鑰對文件
打開本地終端,執行 ssh-keygen 命令創建密鑰對:
ssh-keygen -t rsa -C 'your email@domain.com'
-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 #第一個步驟生成的公鑰文件對應的私鑰文件
這時候就可以使用配置文件中自定義的別名來登錄了:
參考:
Linux公社 文章 Mac OS X下配置遠程Linux 服務器SSH密鑰認證自動登錄
菜鳥教程 教程 Linux scp命令