問題
通過SSH信峻,使能agent forward后敛腌,遠(yuǎn)程登錄Ubuntu Linux服務(wù)器后焙格,運(yùn)行git fetch
或者git pull
更新代碼時(shí)報(bào)如下錯(cuò)誤图毕。
$ ssh -A user@server_name_or_ip
$ git fetch
ssh_exchange_identification: Connection closed by remote host
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
解決方法
加載正確的SSH key,確保能正常訪問Linux Server和遠(yuǎn)程代碼庫(kù)眷唉。
我之所以會(huì)有這樣的問題吴旋,是因?yàn)橛袃蓚€(gè)SSH key:新的pub key放到Linux服務(wù)器上,但沒有放到遠(yuǎn)程代碼庫(kù)的服務(wù)器上厢破;舊的pub key沒有放到Linux服務(wù)器上,但卻放到了遠(yuǎn)程代碼庫(kù)的服務(wù)器上治拿。如此這樣摩泪,訪問Linux服務(wù)器,需要新的key劫谅;訪問代碼见坑,需要舊的key。也就是捏检,必須兩個(gè)key都加載了荞驴,才能在Linux服務(wù)器上使用agent forwarding來(lái)訪問Git遠(yuǎn)程代碼庫(kù)。
SSH相關(guān)知識(shí)
.ssh/config中使能agent forward
Host server_name
HostName ip_or_server_name
User ubuntu
ProxyCommand ssh bastion-server -W %h:%p
# Enable forward agent
ForwardAgent yes
檢測(cè)私鑰是否加載
$ ssh-add -L
加載私鑰
$ ssh-add -K
# 或者
$ ssh-add {path_of_key}
檢測(cè)agent forwarding是否使能
$ echo "$SSH_AUTH_SOCK"
檢測(cè)能否訪問Git Server
$ ssh -T git@{git_server}