git sshkey和服務器登陸的sshkey管理問題

如今基本上都普及使用git了,因此服務器登陸的sshkey和git sshkey最好能分開使用,不要互相混淆。網上有不少關於單獨配置linux服務器登陸證書和git證書的教程,可是都是囫圇吞棗。這裏將這兩個問題放在一塊兒來處理。linux

服務器登陸的sshkey

authorized_keys再也不放在 %h/.ssh/authorized_keys ,而專門存放在一個指定的目錄中,在本文的例子中,咱們將authorized_keys都存放 /etc/ssh/keys/%u/authorized_keysgit

這裏假定咱們須要容許使用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的sshkey

首先,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.netssh git@github.com 檢查證書是否能生效。

好了,今後更新不用再打密碼了。

補充說明一下flashFXP的sftp協議設定的問題

若是你的證書的設定了passphrase,那麼在flashFXP中,登陸類型要選擇:

輸入圖片說明

若是沒有設定passphrase,則使用【基於密鑰】便可。

相關文章
相關標籤/搜索