通常,我們登陸到一台linux主機是需要輸入密碼,這樣可以驗證登陸者的身份。
這篇隨筆里面我打算記錄一下配置基於ssh密鑰對登陸系統。在配置之前先和大家說明一下我遇到過的問題:剛接觸到linux時候首先有了家目錄的概念,為了使用,所以將/path/html權限改為777並改作為用戶的家目錄,這樣每次登陸進系統時就直接到網站根目錄下進行操作了,方便至極..........之前我的筆記本電腦是windows操作系統,用xshell連接服務器可以保存密碼所以也一直用的很爽。直到我電腦換了linux操作系統,直接起終端ssh連接遠程服務器。但是在配置ssh登陸時出現了問題。一切配置操作都是正常的,但是始終要輸入密碼。。。。無奈只能將用戶家目錄改到/home/username,定義切換路徑的命令別名(/home/username/.bashrc 添加 alias chtml='cd /path/html' 這樣在我使用username登陸后使用cthml命令就可以直接切換到/path/html目錄).
具體配置ssh密鑰對登陸的操作:
1.在本機生成密鑰對,可直接用命令ssh-keygen(前提是系統安裝了ssh,沒有安裝的話debian sudo apt-get install ssh,centos yum install ),由於我電腦有密碼,密鑰對就沒有再設置密碼,一路敲回車。這個命令會在用戶家目錄的.ssh/生成兩個文件,id_rsa和id_rsa.pub,其中id_rsa是我們的私鑰,id_rsa_pub為公鑰。
2.將公鑰添加至服務器,可以直接使用命令:ssh-copy-id -i ~/.ssh/id_rsa.pub username@server,之后輸入username的密碼即可。
tip:在網絡上搜索到很多博客都是這樣操作第二步:
scp id.rsa.pub username@server
ssh username@server
登陸到服務器后:cat id.rsa.pub >> ~/.ssh/authorized_keys
sudo server ssh restart
感覺這樣有點麻煩,可以一個命令完成的事情為什么非要做的復雜呢?
只需要簡單的兩步即可配置完成,很簡單。這樣我們就可以直接連接, ssh username@server
關於更改完家目錄后無法給予ssh密鑰對登陸的問題暫時還沒有找到原因,之后明白了會寫博客記錄。我查看了/etc/ssh/sshd_config 中的設置,自動登陸的公鑰是這樣寫的 AuthorizedKeysFile %h/.ssh/authorized_keys ,如果沒猜錯的話可能是更改完用戶家目錄后尋找這個文件出現了問題,,但是該如何解決呢?