【问题标题】:Can not setup SSH Key correctly无法正确设置 SSH 密钥
【发布时间】:2020-07-21 17:35:48
【问题描述】:

我尝试连接到 Gitlab 服务器并想为此设置 SSH。我按照 Gitlab 上的步骤操作,但连接失败。这是我测试连接的输出:

$ ssh -Tvvv git@XXXX-gitlab.XXXX.com
OpenSSH_8.2p1, OpenSSL 1.1.1e  17 Mar 2020
debug1: Reading configuration data /etc/ssh/ssh_config
debug2: resolving "XXXX-gitlab.XXXX.com" port XX
debug2: ssh_connect_direct
debug1: Connecting to XXXX-gitlab.XXXX.com [XX.XX.XX.XXX] port XX.
debug1: Connection established.
debug1: identity file /c/Users/XXXXXXXX/.ssh/id_rsa type 0
debug1: identity file /c/Users/XXXXXXXX/.ssh/id_rsa-cert type -1
debug1: identity file /c/Users/XXXXXXXX/.ssh/id_dsa type -1
debug1: identity file /c/Users/XXXXXXXX/.ssh/id_dsa-cert type -1
debug1: identity file /c/Users/XXXXXXXX/.ssh/id_ecdsa type -1
debug1: identity file /c/Users/XXXXXXXX/.ssh/id_ecdsa-cert type -1
debug1: identity file /c/Users/XXXXXXXX/.ssh/id_ecdsa_sk type -1
debug1: identity file /c/Users/XXXXXXXX/.ssh/id_ecdsa_sk-cert type -1
debug1: identity file /c/Users/XXXXXXXX/.ssh/id_ed25519 type 3
debug1: identity file /c/Users/XXXXXXXX/.ssh/id_ed25519-cert type -1
debug1: identity file /c/Users/XXXXXXXX/.ssh/id_ed25519_sk type -1
debug1: identity file /c/Users/XXXXXXXX/.ssh/id_ed25519_sk-cert type -1
debug1: identity file /c/Users/XXXXXXXX/.ssh/id_xmss type -1
debug1: identity file /c/Users/XXXXXXXX/.ssh/id_xmss-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_8.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.2p2 Ubuntu-4ubuntu2.8
debug1: match: OpenSSH_7.2p2 Ubuntu-4ubuntu2.8 pat OpenSSH_7.0*,OpenSSH_7.1*,OpenSSH_7.2*,OpenSSH_7.3*,OpenSSH_7.4*,OpenSSH_7.5*,OpenSSH_7.6*,OpenSSH_7.7* compat 0x04000002
debug2: fd 3 setting O_NONBLOCK
debug1: Authenticating to XXXX-gitlab.XXXX.com:22 as 'XXXXXXXX'
debug3: hostkeys_foreach: reading file "/c/Users/XXXXXXXX/.ssh/known_hosts"
debug3: record_hostkey: found key type ECDSA in file /c/Users/XXXXXXXX/.ssh/known_hosts:1
debug3: load_hostkeys: loaded 1 keys from XXXX-gitlab.XXXX.com
debug3: order_hostkeyalgs: prefer hostkeyalgs: ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
debug3: send packet: type 20
debug1: SSH2_MSG_KEXINIT sent
debug3: receive packet: type 20
debug1: SSH2_MSG_KEXINIT received
debug2: local client KEXINIT proposal
debug2: KEX algorithms: curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,ext-info-c
debug2: host key algorithms: ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256-cert-v01@openssh.com,ssh-ed25519-cert-v01@openssh.com,sk-ssh-ed25519-cert-v01@openssh.com,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,sk-ecdsa-sha2-nistp256@openssh.com,ssh-ed25519,sk-ssh-ed25519@openssh.com,rsa-sha2-512,rsa-sha2-256,ssh-rsa
debug2: ciphers ctos: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,3des-cbc,aes256-cbc,aes192-cbc
debug2: ciphers stoc: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,3des-cbc,aes256-cbc,aes192-cbc
debug2: MACs ctos: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: MACs stoc: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: compression ctos: none,zlib@openssh.com,zlib
debug2: compression stoc: none,zlib@openssh.com,zlib
debug2: languages ctos:
debug2: languages stoc:
debug2: first_kex_follows 0
debug2: reserved 0
debug2: peer server KEXINIT proposal
debug2: KEX algorithms: curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1
debug2: host key algorithms: ssh-rsa,rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519
debug2: ciphers ctos: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com
debug2: ciphers stoc: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com
debug2: MACs ctos: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: MACs stoc: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: compression ctos: none,zlib@openssh.com
debug2: compression stoc: none,zlib@openssh.com
debug2: languages ctos:
debug2: languages stoc:
debug2: first_kex_follows 0
debug2: reserved 0
debug1: kex: algorithm: curve25519-sha256@libssh.org
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug3: send packet: type 30
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug3: receive packet: type 31
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:uE1tRPH243kfpd9Q/MN10WAk5DsZ0tTCleo20sqQ4Vc
debug3: hostkeys_foreach: reading file "/c/Users/XXXXXXXX/.ssh/known_hosts"
debug3: record_hostkey: found key type ECDSA in file /c/Users/XXXXXXXX/.ssh/known_hosts:1
debug3: load_hostkeys: loaded 1 keys from XXXX-gitlab.XXXX.com
debug3: hostkeys_foreach: reading file "/c/Users/XXXXXXXX/.ssh/known_hosts"
debug3: record_hostkey: found key type ECDSA in file /c/Users/XXXXXXXX/.ssh/known_hosts:1
debug3: load_hostkeys: loaded 1 keys from XX.XX.XX.XXX
debug1: Host 'XXXX-gitlab.XXXX.com' is known and matches the ECDSA host key.
debug1: Found key in /c/Users/XXXXXXXX/.ssh/known_hosts:1
debug3: send packet: type 21
debug2: set_newkeys: mode 1
debug1: rekey out after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug3: receive packet: type 21
debug1: SSH2_MSG_NEWKEYS received
debug2: set_newkeys: mode 0
debug1: rekey in after 134217728 blocks
debug1: Will attempt key: /c/Users/XXXXXXXX/.ssh/id_rsa RSA SHA256:p06ps84qa4QzJTeCOxlodXX/Ml2sGv8doOOdoNxpRIo
debug1: Will attempt key: /c/Users/XXXXXXXX/.ssh/id_dsa
debug1: Will attempt key: /c/Users/XXXXXXXX/.ssh/id_ecdsa
debug1: Will attempt key: /c/Users/XXXXXXXX/.ssh/id_ecdsa_sk
debug1: Will attempt key: /c/Users/XXXXXXXX/.ssh/id_ed25519 ED25519 SHA256:Sk3ubA/kcWl2l1p6OlAELC47Ra7j+7p28df/n8gGFTu
debug1: Will attempt key: /c/Users/XXXXXXXX/.ssh/id_ed25519_sk
debug1: Will attempt key: /c/Users/XXXXXXXX/.ssh/id_xmss
debug2: pubkey_prepare: done
debug3: send packet: type 5
debug3: receive packet: type 7
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<rsa-sha2-256,rsa-sha2-512>
debug3: receive packet: type 6
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug3: send packet: type 50
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /c/Users/XXXXXXXX/.ssh/id_rsa RSA SHA256:p06ps84qa4QzJTeCOxlodXX/Ml2sGv8doOOdoNxpRIo
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /c/Users/XXXXXXXX/.ssh/id_dsa
debug3: no such identity: /c/Users/XXXXXXXX/.ssh/id_dsa: No such file or directory
debug1: Trying private key: /c/Users/XXXXXXXX/.ssh/id_ecdsa
debug3: no such identity: /c/Users/XXXXXXXX/.ssh/id_ecdsa: No such file or directory
debug1: Trying private key: /c/Users/XXXXXXXX/.ssh/id_ecdsa_sk
debug3: no such identity: /c/Users/XXXXXXXX/.ssh/id_ecdsa_sk: No such file or directory
debug1: Offering public key: /c/Users/XXXXXXXX/.ssh/id_ed25519 ED25519 SHA256:Sk3ubA/kcWl2l1p6OlAELC47Ra7j+7p28df/n8gGFTu
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /c/Users/XXXXXXXX/.ssh/id_ed25519_sk
debug3: no such identity: /c/Users/XXXXXXXX/.ssh/id_ed25519_sk: No such file or directory
debug1: Trying private key: /c/Users/XXXXXXXX/.ssh/id_xmss
debug3: no such identity: /c/Users/XXXXXXXX/.ssh/id_xmss: No such file or directory
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
git@ch-s-gitlab.ch.abb.com's password:

似乎可疑的是文件权限:

$ ls -la ~/.ssh
total 27
drwxr-xr-x 1 XXXXXXXX 1049089    0 Apr 11 11:34 ./
drwxr-xr-x 1 XXXXXXXX 1049089    0 Apr  9 17:20 ../
-rw-r--r-- 1 XXXXXXXX 1049089  464 Apr 11 11:34 id_ed25519
-rw-r--r-- 1 XXXXXXXX 1049089  105 Apr 11 11:34 id_ed25519.pub
-rw-r--r-- 1 XXXXXXXX 1049089 3389 Apr  9 08:05 id_rsa
-rw-r--r-- 1 XXXXXXXX 1049089  749 Apr  9 08:05 id_rsa.pub
-rw-r--r-- 1 XXXXXXXX 1049089  383 Apr 14 08:00 known_hosts

我尝试使用命令chmod 600 ~/.ssh/id_rsa* 更改这些权限,但它不会更改上面的输出。你能帮帮我吗?

【问题讨论】:

    标签: git ssh permissions chmod


    【解决方案1】:

    看起来您正在尝试使用自己的用户名进行连接(即不明确提供用户名),然后该用户在服务器上不存在,因此无法进行身份验证。使用 GitLab,您始终使用 git 用户建立 SSH 连接,因此在您的情况下尝试使用 git@XXXX-gitlab.XXXX.com 连接。

    我假设您已经将您的公钥添加到您的 GitLab 帐户。

    【讨论】:

    • 谢谢,在尝试做一个最小的例子时,我忘记了这部分。不幸的是,与 git 用户相同的命令给了我相同的输出。
    【解决方案2】:

    请参阅“GitLab 和 SSH 密钥”(https://docs.gitlab.com/ee/ssh/)

    步骤如下:

    1. 生成 SSH 密钥 (https://docs.gitlab.com/ee/ssh/#generating-a-new-ssh-key-pair)(如果您还没有可以使用的密钥对)

    2. 将 SSH 密钥添加到您的 GitLab 帐户 (https://docs.gitlab.com/ee/ssh/#adding-an-ssh-key-to-your-gitlab-account)

    3. 测试它 (https://docs.gitlab.com/ee/ssh/#testing-that-everything-is-set-up-correctly)。

    【讨论】:

    • 感谢您的帮助。当然,我已经阅读了用户指南。在您回答之后,我又做了一次,但无法弄清楚会丢失的东西。在测试步骤中,上面的输出出来了。使用 -Tvvv (如指南中所建议的那样)有更多信息,但最后输入密码的请求相同。我认为奇怪的部分是,我的私人 id_rsa 密钥不在尝试过的密钥列表中。你对此有更多的了解吗?
    • 抱歉,我没听懂。您能否检查您的评论是否有错字或语法,在句子 re private rsa_id key 中?
    • 发送这个太快了...对不起! 1. 我在问题中更新了ssh -Tvvv git@XXXX-gitlab.XXXX.com 的输出。对我来说,结果看起来还是一样的。最后它要求我输入与我的 Gitlab 帐户不匹配的密码。 2. 在第 115 行 debug1: Trying private key: ... 它检查私钥是否匹配。它从不检查我的名为id_rsa 的密钥。这不奇怪吗?
    • 好的。我看到这个:'debug1: 身份文件 /c/Users/XXXXXXXX/.ssh/id_rsa type 0'
    • 是的没错,但它不应该在选中的键列表中(第 115 行)吗?
    猜你喜欢
    • 1970-01-01
    • 2020-03-01
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    相关资源
    最近更新 更多