在Linux上已經安裝過git(自己搭建)了,本機(windows)想連接過去,通過git bash敲了下clone命令提示沒權限:
$ git clone git@111.11.111.11:code.git Cloning into 'code'... The authenticity of host '111.11.111.11 (111.11.111.11)' can't be established. ECDSA key fingerprint is SHA256:7jmL7Nrr9zJ7psJd3Zcfr4UckRNOMkgwK/ae9dsCgaw. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '111.11.111.11' (ECDSA) to the list of known hosts. git@111.11.111.11's password: Connection closed by 111.11.111.11 port 22 fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
第一次連接失敗很正常,畢竟沒有設置賬號信息,但第二次連接敲了自己剛設置的密碼,竟然一直提示沒權限
$ git clone git@111.11.111.11:code.git Cloning into 'code'... git@111.11.111.11's password: Permission denied, please try again. git@111.11.111.11's password: Permission denied, please try again. git@111.11.111.11's password: git@111.11.111.11: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,pas sword). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
蒙圈了,密碼對的啊。看下日志:
$ ssh -vT git@111.11.111.11 OpenSSH_7.6p1, OpenSSL 1.0.2n 7 Dec 2017 debug1: Reading configuration data /etc/ssh/ssh_config debug1: Connecting to 111.11.111.11 [111.11.111.11] port 22. debug1: Connection established. debug1: identity file /c/Users/wulf/.ssh/id_rsa type 0 debug1: key_load_public: No such file or directory debug1: identity file /c/Users/wulf/.ssh/id_rsa-cert type -1 debug1: key_load_public: No such file or directory debug1: identity file /c/Users/wulf/.ssh/id_dsa type -1 debug1: key_load_public: No such file or directory debug1: identity file /c/Users/wulf/.ssh/id_dsa-cert type -1 debug1: key_load_public: No such file or directory debug1: identity file /c/Users/wulf/.ssh/id_ecdsa type -1 debug1: key_load_public: No such file or directory debug1: identity file /c/Users/wulf/.ssh/id_ecdsa-cert type -1 debug1: key_load_public: No such file or directory debug1: identity file /c/Users/wulf/.ssh/id_ed25519 type -1 debug1: key_load_public: No such file or directory debug1: identity file /c/Users/wulf/.ssh/id_ed25519-cert type -1 debug1: Local version string SSH-2.0-OpenSSH_7.6 debug1: Remote protocol version 2.0, remote software version OpenSSH_7.4 debug1: match: OpenSSH_7.4 pat OpenSSH* compat 0x04000000 debug1: Authenticating to 111.11.111.11:22 as 'git' debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: algorithm: curve25519-sha256 debug1: kex: host key algorithm: ecdsa-sha2-nistp256 debug1: kex: server->client cipher: aes128-ctr MAC: umac-64-etm@openssh.com comp ression: none debug1: kex: client->server cipher: aes128-ctr MAC: umac-64-etm@openssh.com comp ression: none debug1: expecting SSH2_MSG_KEX_ECDH_REPLY debug1: Server host key: ecdsa-sha2-nistp256 SHA256:7jmL7Nrr9zJ7oooo5Zcfr4UckRNO MkgwK/ae9dsCgaw debug1: Host '111.11.111.11' is known and matches the ECDSA host key. debug1: Found key in /c/Users/wulf/.ssh/known_hosts:14 debug1: rekey after 4294967296 blocks debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: rekey after 4294967296 blocks debug1: SSH2_MSG_EXT_INFO received debug1: kex_input_ext_info: server-sig-algs=<rsa-sha2-256,rsa-sha2-512> debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mi c,password debug1: Next authentication method: publickey debug1: Offering public key: RSA SHA256:gXnx5odooo7yK+Imse/ggjIzZdooooJwCU6T6PEy spk /c/Users/wulf/.ssh/id_rsa debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mi c,password debug1: Trying private key: /c/Users/wulf/.ssh/id_dsa debug1: Trying private key: /c/Users/wulf/.ssh/id_ecdsa debug1: Trying private key: /c/Users/wulf/.ssh/id_ed25519 debug1: Next authentication method: password
然后又死循環了,讓我輸入密碼。看日志里這個c/Users/wulf/.ssh目錄下有啥東西,就發現原來這里有我的公鑰:
$ cat /c/Users/wulf/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCf20s0rabgMRn8CCCCC/+VC/wS5x/dvIYoG+TP23bHWn9gD/AXizrkds5geX9AG90oVRqf+RfTvLFlaNMrzK
公鑰太長,上面就只是隨便貼了點。后來才發現linux上的服務端git根本不認識你,因為你有的是你自己的密碼,人家那還沒有你的公鑰呢,得去它那里設置一下。
登陸linux下的111.11.111.11,把上面那段公鑰貼到服務端authorized_keys里:
vi /home/git/.ssh/authorized_keys
貼好后保存后再去windows的git bash本地連下,這次ok了:
$ git clone git@111.11.111.11:code.git Cloning into 'code'... warning: You appear to have cloned an empty repository.