如今基本上都普及使用git了,因此服務器登陸的sshkey和git sshkey最好能分開使用,不要互相混淆。網上有不少關於單獨配置linux服務器登陸證書和git證書的教程,可是都是囫圇吞棗。這裏將這兩個問題放在一塊兒來處理。linux
authorized_keys再也不放在 %h/.ssh/authorized_keys
,而專門存放在一個指定的目錄中,在本文的例子中,咱們將authorized_keys都存放 /etc/ssh/keys/%u/authorized_keys
。git
這裏假定咱們須要容許使用ssh登陸的用戶爲web-user。github
useradd -d /home/web-user -m -s /bin/bash web-user
首先,以 root 用戶建立必須的目錄:web
mkdir /etc/ssh/keys mkdir /etc/ssh/keys/web-user cd /etc/ssh/keys/web-user ssh-keygen -t rsa -b 4096 -f id_rsa -C "web-user"
這裏,請把id_rsa和id_rsa.pub的文件保存到本身電腦上,使用 puttygen.exe
生成私鑰(Save Private Key)。shell
cat id_rsa.pub >> authorized_keys rm id_rsa* chown web-user:web-user ./ -Rf chmod 700 ./ chmod 600 authorized_keys
上述操做中,後面三步很重要,authorized_keys文件和authorized_keys所在的目錄若是權限不正確,則在登陸時會一直提示這個證書的權限被屏蔽。bash
接下來,修改/etc/ssh/sshd_config文件的配置,下面列舉的內容是較爲關鍵的部分,其餘請酌情刪改。服務器
PermitRootLogin no RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile /etc/ssh/keys/%u/authorized_keys PasswordAuthentication no PermitEmptyPasswords no
修改完畢後,執行 service ssh restart
重啓ssh服務,但注意,這裏不要馬上關閉當前鏈接,最好維持住,而後打開一個新窗口來驗證ssh證書是否生效。ssh
關於登陸用戶的權限問題.net
id -Gn web-user
能夠知道該用戶的所在的用戶組。rest
若是須要這個用戶擁有sudo的權限,須要將用戶添加到指定的 sudoers
的組,具體能夠查詢 cat /etc/sudoers
。
首先,git須要先設定當前環境的執行用戶,root用戶和須要使用git的權限的用戶組,由於git默認的配置信息時保存在 %u/.gitconfig
文件上,因此都須要設定:
git config --global user.name "Janpoem" git config --global user.email "janpoem@163.com"
這裏,假如你還沒建立過和添加git的公鑰,請參考git@osc的教程。下面假設你已經生成並擁有相關的私鑰和公鑰,而且已經在相關的git服務供應商添加了相關了公鑰。
在用戶的 .ssh 目錄中,只須要保留id_rsa(私鑰)便可,注意,是%u/.ssh
或 ~/.ssh
,養成良好習慣:
chmod 700 ~/.ssh chmod 600 ~/.ssh/id_rsa
執行 ssh git@git.oschina.net
或 ssh git@github.com
檢查證書是否能生效。
好了,今後更新不用再打密碼了。
若是你的證書的設定了passphrase,那麼在flashFXP中,登陸類型要選擇:
若是沒有設定passphrase,則使用【基於密鑰】便可。