gitllab访问报错:Permission denied (publickey). 以及后续测试
主要測試了各方式clone的情況:
1. 安裝gitlab,配置ip:port。
常規步驟:
yum install -y curl policycoreutils-python openssh-server wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm rpm -ivh gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm vim /etc/gitlab/gitlab.rb #修改nginx['listen_addresses']、nginx['listen_port']、external_url 3項 gitlab-ctl restart gitlab-ctl reconfigure
然后在gitlab網頁端注冊賬號
2. gitlab注冊的賬號和linux賬號關系,git賬號
linux賬號和gitlab內賬號沒有關系。安裝完gitlab之后,linux系統會創建一個叫git的賬號,之后對project的上傳下拉操作都是通過git賬號完成。
3. 注冊ssh key之后,以及使用ssh clone的過程。訪問受linux sshd內ssh認證配置的影響。
在gitlab上注冊了ssh key之后,背后實際上gitlab會把注冊的key寫入git賬號的~/.ssh/authorized_keys文件。這樣,每次git clone/push/pull操作時,都是先ssh到linux的git賬號,再進行后續操作。
因為git的ssh方式會通過sshd服務,所以在linux上修改了sshd配置會影響git的使用。比如修改了ssh端口,則git也需要配置響應端口(很多時候會修改ssh的默認端口,從22改為一個大數字)。
一般情況下,git ssh認證有公鑰私鑰就可以正常操作。但有的情況下,linux端會開雙重認證AuthenticationMethods publickey,password。這個時候再git clone git@****.git 的時候,會需要輸入git賬號自身的密碼(可以想象成先登錄到linux的git賬號)。如果想要順利進行,一般要通過root賬號修改下git賬號的密碼,再通過驗證。
4. git ssh clone和http clone的區別。為什么ssh clone不可以,http clone卻可以?
git ssh 和 git http是兩個相互獨立的方式。git ssh通過ssh連接,受linuxsshd配置(git賬戶)影響;git http直接通過ip:port進行連接,不需要linux賬戶的信息,只需要在gitlab上注冊的賬號的用戶名和密碼。
所以,有時候git ssh不成功時,通過ssh clone可以成功。
5. git http clone 用戶密碼。全局配置文件~/.gitconfig內的[User].name項的作用。
git http每次都要輸賬號密碼,可以通過git config credential.helper 相關命令存儲賬號密碼。
此外,在全局配置文件~/.gitconfig內也會有一個
[user] name = testmm email = ***
User項。這里的user.name和gitlab賬號也是相互獨立的。user.name代表的是在你提交commit時,顯示的名字。比如,執行git lg:
[ttt1@local transfer]$ git lg * 67ccd87 - (HEAD, origin/master, origin/HEAD, master) test123 (3 hours ago) <testmm>
這里顯示是testmm提交的修改,這不是gitlab內賬號的名字,只是本地做的一個全局配置內的名字。
但是在gitlab網頁上看到的修改者還是以gitlab內的賬號名字出現的。這是個不一樣的地方。
總結
以上是生活随笔為你收集整理的gitllab访问报错:Permission denied (publickey). 以及后续测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 无线路由器怎么连接如何接入无线路由器
- 下一篇: 优酷路由宝怎么赚钱优酷土豆路由器如何赚钱