Git學習之常見錯誤 clone被拒絕


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每次一登錄就自動退出。


 




 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM