很多人可能都遇到過這樣的場景,每次遠程ssh登錄服務器都需要輸入一次密碼,既不安全又麻煩,讓我們來一起看看如何使用公鑰私鑰避免輸入密碼登錄吧。
歡迎到我的博客網站查看整理版本
Step1 本地生成密鑰
打開Terminal,輸入指令ssh-keygen
,會詢問你文件名,自己起一個名字,然後讓你設置passphrase,這個是在密鑰的基礎上多加一重保障(設置了之後,本地使用私鑰ssh登錄,會要求先輸入這個密碼),爲了方便,我們不設置這個(留空就好)
當前文件夾會生成test(私鑰)和test.pub(公鑰)兩個文件
Step2 上傳公鑰文件
下一步上傳並設置公鑰文件(利用copy-ssh-id這個工具,很多操作系統都默認安裝了)
ssh-copy-id -i identity_file username@remote_host
這裏的identity_file就是你在Step1裏面生成的公鑰文件(注意是公鑰!!!)
成功之後,打開服務器,進到ssh路徑下(cd ~/.ssh
),你會發現有一個authorized_keys文件,查看該文件,你會發現就是你本地的公鑰文件(.pub)
Step3 利用密鑰ssh登錄
設置好密鑰之後,下次就可以直接用
ssh -i identify_file username@remote_host
登錄你的服務器了,這裏的identify_file是你在Step1裏面生成的私鑰文件(注意和ssh-copy-id不一樣)
爲了方便,你還可以將這個命令保存到.bashrc(或.zshrc)等系統配置文件裏面,利用alias指令,這樣以後你就可以用connect代替那一長條指令了。
alias connect='ssh -i identify_file username@remote_host'