ssh-keygen
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
多個伺服器另起一行續寫就行了,就是這麼簡單!