ssh 公鑰認證是ssh認證的方式之一。經過公鑰認證可實現ssh免密碼登錄,git的ssh方式也是經過公鑰進行認證的。git
在用戶目錄的home目錄下,有一個.ssh
的目錄,和當前用戶ssh配置認證相關的文件,幾乎都在這個目錄下。安全
ssh-keygen
可用來生成ssh公鑰認證所需的公鑰和私鑰文件。bash
使用
ssh-keygen
時,請先進入到~/.ssh
目錄,不存在的話,請先建立。而且保證~/.ssh
以及全部父目錄的權限不能大於711
ssh
使用 ssh-kengen
會在~/.ssh/目錄下生成兩個文件,不指定文件名和密鑰類型的時候,默認生成的兩個文件是:post
id_rsa
id_rsa.pub
第一個是私鑰文件,第二個是公鑰文件。spa
生成ssh key的時候,能夠經過 -f
選項指定生成文件的文件名,以下:.net
[huqiu@101 .ssh]$ ssh-keygen -f test -C "test key" ~~文件名 ~~~~ 備註
若是沒有指定文件名,會詢問你輸入文件名:code
[huqiu@101 .ssh]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/huqiu/.ssh/id_rsa):
你能夠輸入你想要的文件名,這裏咱們輸入test
。blog
以後,會詢問你是否須要輸入密碼。輸入密碼以後,之後每次都要輸入密碼。請根據你的安全須要決定是否須要密碼,若是不須要,直接回車:get
[huqiu@101 .ssh]$ ssh-keygen -t rsa -f test -C "test key" Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again:
若是文件名是test
,結果是:
[huqiu@101 .ssh]$ ll test* -rw------- 1 huqiu huqiu 1675 Sep 15 13:24 test -rw-r--r-- 1 huqiu huqiu 390 Sep 15 13:24 test.pub
上面生成的命令中,-C
選項是公鑰文件中的備註:
[huqiu@101 .ssh]$ cat test.pub ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAlgjiMw7AskxbvpQY9rmZPQxQBzh9laxFvbaini2EgmQkNsXBA9WJOXn2YBJauoiVsdUKBWA97avjsobrTxsCYvFr1yQQvTfTlbqlqGNIhQc/3HjTl2pIkClpDWvBrRN+jpyESS4MNbfOL1qjT4c/QhGvj6U6HrN6kUyn58oyyJpTzOLG74AZELJ2Led57QvTw1yJXZuAMWioR0A3BGd25fdocLX3ebux6ya8AsloOVYfsAqGlggrARe6FXjLfMH4a/nxaAdiDYVXU/Vr1ybK9P7SfyEDGJi3JtgiPUlA6vPxUC E+9IJPQaqqeqCGzrJ6G/XO7om1v9YLLG/H/ZN2tQ== test key ~~~~備註
爲了讓私鑰文件和公鑰文件可以在認證中起做用,請確保權限正確。
對於.ssh
以及父文件夾,當前用戶用戶必定要有執行權限,其餘用戶最多隻能有執行權限。
對於公鑰和私鑰文件也是: 當前用戶必定要有執行權限,其餘用戶最多隻能有執行權限。
對於利用公鑰登陸,對其餘用戶配置執行權限是沒有問題的。可是對於git,公鑰和私鑰, 以及config等相關文件的權限,其餘用戶不可有任何權限。
參考文獻:ssh-keygen參數說明