步驟一:打開終端,輸入:
ssh-keygen -t rsa -C "youremail@qq.com"
一路歡快的回車,所有默認都不用改,就可以生成密鑰了。
引號內是你唯一Email,這里可以作為以后Git遠程倉庫使用。
步驟二:查看生成的公鑰和私鑰:
ls ~/.ssh
可以看到兩個密鑰文件:id_rsa(私鑰) id_rsa.pub(公鑰) ———— 我的本機的~是/Users/linfeng,可以通過pwd查看當前所在的路徑
步驟三:登錄遠程服務器,在~目錄下創建.ssh文件夾,要先切換到/root/目錄下哦。(此時root賬號的家目錄就是/root/)
mkdir .ssh
————再補充一個知識點,~表示當前用戶的家目錄,對於root來說,就是/root/,對於普通用戶來說,就是/home/user/,可以切換到~並使用pwd查看。所以如果是普通用戶,則需要把.ssh建在/home/user/下。
步驟四:放置公鑰到Linux服務器的用戶家目錄的.ssh目錄下,並重命名為authorized_keys。使用scp命令:
scp ~/.ssh/id_rsa.pub root@121.42.xxx.xxx:/root/.ssh/authorized_keys
步驟五:服務器上切換到.ssh目錄下,對authorized_keys和.ssh賦予權限:
chmod 700 .ssh chmod 600 authorized_keys
————請注意,此時.ssh目錄的權限應該是700,只有屬主有讀、寫、執行的權限。
步驟六:免密碼登錄到服務器:——無需輸入密碼了。
ssh root@121.42.xxx.xxx //方式一 ssh -l root 121.42.xxx.xxx //方式二
——請注意,這時候只是可以免密碼登錄,但是沒有密鑰的人(如其他人的電腦),還是能通過密碼登錄。
——這步請直接測試是否可以免密登錄,如果可以的話,第七步第2)就可以不用操作。
步驟七:設置禁止密碼登錄
1)打開ssh配置文件:
sudo vim /etc/ssh/sshd_config
2)去掉以下的注釋:——其實不注釋,我的機器上默認值也是yes,因為在第六步的時候,我已經可以免密碼登錄了。所以為可選項
#RSAAuthentication yes // RSA認證,我的機子上沒有這個選項,也不需要。 #PubkeyAuthentication yes // 公鑰登錄,這個好像不需要注釋掉也沒事。 #AuthorizedKeysFile %h/.ssh/authorized_keys // 驗證文件的位置,這個默認是開啟的。
——我的實踐中,這項全部都不需要修改
3)禁止密碼和 root賬號登錄,修改以下為no:
PasswordAuthentication no // 禁止密碼登錄。原先為PasswordAuthentication yes PermitRootLogin no //禁止 root 登錄,看情況是否需要。原先為PermitRootLogin yes
4)重啟ssh服務
service ssh restart //或者service ssh reload,有可能碰到並未開啟ssh服務的報錯,執行下面的那句。 /etc/init.d/sshd restart //上面一句無法執行的時候,執行這句。 systemctl restart sshd //centOS7以上請使用這句
八、其他:
1、指定秘鑰和端口登錄:(正常端口都是 22,你改了才需要指定),秘鑰最好也用同一個
ssh -i ~/.ssh/hk_sshkey username@121.42.xx.xx -p 23
2、添加其他機器登錄使用一個用戶登錄。
將公鑰內容添加到服務器 authorized_keys 里面即可
————占位符