ssh-keygen

tao.shi發表於2018-06-21

ssh-keygen用來生成ssh公鑰認證所需的公鑰和私鑰檔案。

ssh祕鑰登入特點:1.安全;2.免輸密碼。
對於安全級別較高的伺服器,建議配好ssh登入後禁掉密碼登入。
缺點:略繁瑣。如果你的只是臨時登入一次,那麼還是密碼吧。

一、生成祕鑰

祕鑰對需要在你自己的機器上生成,然後把公鑰放到伺服器相應使用者的~/.ssh目錄

執行下面命令,預設生成位置是~/.ssh

ssh-keygen

系統會詢問你檔名和祕鑰密碼,可以一路回車過去,會生成兩個檔案:

  • id_rsa 私鑰
  • id_rsa.pub 公鑰

預設使用rsa演算法,你也可以用比較詳細的指令,如

ssh-keygen -t rsa -b 1024 -f yourkeyname -C "備註"
引數 解釋
-b 採用長度1024bit的金鑰對,b=bits,最長4096,不過沒啥必要
-t rsa 採用rsa加密方式,t=type
-f 生成檔名,f=output_keyfiles
-C 備註,C=comment

更多引數可執行 man ssh-keygen

二、在伺服器上安裝祕鑰

把上一步生成的公鑰傳送到伺服器(scp,FillZilla等)上,然後在伺服器上執行下面命令

cat id_rsa.pub >> ~/.ssh/authorized_keys

如此便完成了公鑰安裝,有個小坑值得一提:authenrized_keys的許可權必須是600或更小,否則會連線失敗。
保險起見,執行下面命令

chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

另外,.ssh目錄的owner必須是ssh登入使用者,不能是root

伺服器ssh配置

修改伺服器上的ssh配置檔案,位置:/etc/ssh/sshd_config

RSAAuthentication yes
PubkeyAuthentication yes

PermitRootLogin no //禁止root登入
PasswordAuthentication yes //允許密碼登入,根據你的情況設定

然後重啟ssh服務

service sshd restart

三、連線伺服器

方法1: 直接ssh
ssh -i ~/.ssh/id_rsa -p 22 user@yourservername
方法2(推薦):修改~/.ssh/config
Host server_alias(你的伺服器別名)
HostName test.com/192.168.1.1(域名或IP)
Port 22
User user
Identifier id_rsa

儲存後,登入時只需執行

ssh server_alias

多個伺服器另起一行續寫就行了,就是這麼簡單!