Git學習之常見錯誤
問題:
git clone 時 報錯 Permission Denied (權限被拒絕)。
解決方法:
需要把本地的公鑰上傳到服務器。
解決步驟:
①第一步,設置本地的git的用戶名和郵箱。
鼠標右鍵 -->【Git Bash Here】,打開命令行。
(注意 --global 表明本機的所有git倉庫均使用該配置,根據自己實際需求配置)
git config --global user.name '用戶名' git config --global user.email '郵箱地址'
查看用戶名和郵箱:
git config --global user.name
git config --global user.email
②第二步,本地生成公鑰。
鼠標右鍵 -->【Git Bash Here】,打開命令行操作。
$ ssh-keygen -t rsa -C "git的email"
然后會看到以下提示:
輸入私鑰文件保存的位置,如果不想指定,就按Enter鍵,選擇默認的:
Enter file in which to save the key (/c/Users/admin/.ssh/id_rsa):
然后輸入兩次密碼:
Enter passphrase (empty for no passphrase): Enter same passphrase again:
正常會生成私鑰文件和公鑰文件:id_rsa和id_rsa.pub。
③第三步,服務器端git打開RSA認證。
進入/etc/ssh目錄,編輯sshd_config,把下面三個注釋打開。
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
保存,並重啟服務,
/etc/rc.d/init.d/sshd restart
//如果沒有rc.d或者sshd命令,可以使用
sudo service ssh restart
④第四步,將客戶端的公鑰導入服務器authorized_keys文件里。
這里需要注意,在第三步配置RSA認證時,配置的這一行:
AuthorizedKeysFile .ssh/authorized_keys
這一行,表示的實際意思是 $Home/.ssh/authorized_keys,
然后還要根據管理Git服務的用戶是誰,來確定具體的路徑,
例如:
管理git的用戶是git,那么實際存放公鑰的路徑是 /home/git/.ssh/authorized_keys。
管理git的用戶是zhang_san,那么實際存放公鑰的路徑是 /home/zhang_san/.ssh/authorized_keys。
一般情況,都會配置一個專門的用戶對git和代碼進行管理,假如我們創建一個zhang_san用戶來管理:
useradd zhang_san passwd zhang_san //輸入密碼
然后創建zhang_san管理git公鑰文件:
sudo mkdir -p /home/zhang_san/.ssh
cd /home/zhang_san/.ssh
sudo touch authorized_keys
修改文件所屬用戶、所屬組、以及具體權限:
sudo chown -R zhang_san:zhang_san /home/zhang_san/.ssh
//切換到zhang_san用戶 su zhang_san cd /home/zhang_san chmod 700 .ssh cd .ssh chmod 600 authorized_keys
把本地的公鑰,復制到authorized_keys文件中。
⑤克隆代碼:
git clone zhang_san@靜態IP:/home/www/項目名字
輸入第二步生成公鑰時輸入的密碼,就可以克隆下來代碼了。
為了安全考慮,在創建的管理git服務的用戶一般不允許登錄shell,
方式一:
創建用戶時,不使用超級用戶創建,也不實用sudo 命令,新創建用戶就無法登陸。
方式二:
編輯/etc/passwd文件完成。找到下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
最后一個冒號后改為:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
這樣,git用戶可以正常通過ssh使用git,但無法登錄shell,因為我們為git用戶指定的git-shell每次一登錄就自動退出。