【问题标题】:Public key ssh into a Debian container fails for non-root user非 root 用户进入 Debian 容器的公钥 ssh 失败
【发布时间】:2020-07-19 05:30:11
【问题描述】:

我有一个 Debian linux 10 容器(docker 主机是 oracle linux 7),它是为公钥身份验证设置的。我不明白为什么它不适用于非 root 用户(即 abc)。我让它为root用户工作。太令人沮丧了,因为我已经尝试了很多谷歌搜索的方法。

这是当前设置和secureCRT 跟踪日志。同样,abc 用户在容器内。我还在 docker 主机本身上为非 root 用户 123 以及 root 进行了公钥身份验证。所以,不确定是什么导致了这个问题。不知何故,无法正确读取 /home/abc/.ssh/authorized_keys 文件。

我还使用 chmod 700 获得了正确的 .ssh 和 .ssh/authorized_keys 权限(我也尝试了 744),并且 .ssh 和 .ssh/authorized_keys 也归 abc 用户所有。我还非常仔细地检查了 authorized_key 文件中的密钥,公钥(在记事本中打开,复制,然后粘贴到容器 authorized_key 文件中)匹配。你能帮我吗?我没有主意了。

  • /etc/ssh/sshd_config
   PasswordAuthentication no 
   PubkeyAuthentication yes
   ChallengeResponseAuthentication no
   PermitRootLogin yes
   UsePAM no
   AuthorizedKeysFile  .ssh/authorized_keys /home/abc/.ssh/authorized_keys
  • 用户 abc 的跟踪日志(不工作)。仅显示日志差异(来自根的跟踪)
      [LOCAL] : SENT : USERAUTH_REQUEST [publickey (ssh-rsa) - unsigned,fingerprint (SHA-2 hash): ...] 
    [LOCAL] : SENT : USERAUTH_REQUEST [publickey (ssh-rsa) - unsigned,fingerprint (SHA-1 hash): ...] 
    [LOCAL] : SENT : USERAUTH_REQUEST [publickey (ssh-rsa) - unsigned,fingerprint (MD5 hash): ...] 
    [LOCAL] : RECV : USERAUTH_FAILURE, continuations [publickey] 
    [LOCAL] : SENT : USERAUTH_REQUEST [publickey (ssh-rsa) - unsigned,agent,fingerprint (SHA-2 hash): ...] 
    [LOCAL] : SENT : USERAUTH_REQUEST [publickey (ssh-rsa) - unsigned,agent,fingerprint (SHA-1 hash): ...] 
    [LOCAL] : SENT : USERAUTH_REQUEST [publickey (ssh-rsa) - unsigned,agent,fingerprint (MD5 hash): ] 
    [LOCAL] : RECV : USERAUTH_FAILURE, continuations [publickey] 
    [LOCAL] : SEND: Disconnect packet: The user canceled authentication.  
    [LOCAL] : Changing state from STATE_CONNECTION to STATE_SEND_DISCONNECT 
    [LOCAL] : Changing state from STATE_SEND_DISCONNECT to STATE_CLOSED 
    [LOCAL] : Connected for 3 seconds, 2698 bytes sent, 2233 bytes received
  • root 用户的跟踪日志(工作)。仅显示日志差异(来自用户 abc 的跟踪)
    [LOCAL] : SENT : USERAUTH_REQUEST [publickey (ssh-rsa) - unsigned,fingerprint (SHA-2 hash): ...] 
    [LOCAL] : SENT : USERAUTH_REQUEST [publickey (ssh-rsa) - unsigned,fingerprint (SHA-1 hash): ...] 
    [LOCAL] : SENT : USERAUTH_REQUEST [publickey (ssh-rsa) - unsigned,fingerprint (MD5 hash): ...] 
    [LOCAL] : SENT : USERAUTH_REQUEST [publickey (ssh-rsa) - signed,May 2000 Standard] 
    [LOCAL] : RECV : AUTH_SUCCESS 
    [LOCAL] : SEND[0]: SSH_MSG_CHANNEL_OPEN('session')
    [FROM REMOTE] : /root/.ssh/authorized_keys:1: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding 
    [FROM REMOTE] : /root/.ssh/authorized_keys:1: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding 
    [LOCAL] : SEND[0]: Pty Request (rows: 68, cols: 189)
    [LOCAL] : RECV[0]: pty request succeeded
    [LOCAL] : SEND[0]: shell request
    [LOCAL] : RECV[0]: shell request succeeded
  • 跟踪日志的其余部分,对于 root 和 abc 用户是相同的。这是跟踪日志的第一部分,然后是上面的 root/用户 abc 的跟踪。
    [LOCAL] : SSH2Core version 8.1.0.1362 
    [LOCAL] : Connecting to xyz:220 ... 
    [LOCAL] : Resolved hostname to x.x.x.x:220 
    SecureCRT - Version 8.1.2 (x64 build 1362)
    [LOCAL] : Changing state from STATE_NOT_CONNECTED to STATE_EXPECT_KEX_INIT 
    [LOCAL] : Using protocol SSH2 
    [LOCAL] : RECV : Remote Identifier = 'SSH-2.0-OpenSSH_7.9p1 Debian-10+deb10u2' 
    [LOCAL] : CAP  : Remote can re-key 
    [LOCAL] : CAP  : Remote sends language in password change requests 
    [LOCAL] : CAP  : Remote sends algorithm name in PK_OK packets 
    [LOCAL] : CAP  : Remote sends algorithm name in public key packets 
    [LOCAL] : CAP  : Remote sends algorithm name in signatures 
    [LOCAL] : CAP  : Remote sends error text in open failure packets 
    [LOCAL] : CAP  : Remote sends name in service accept packets 
    [LOCAL] : CAP  : Remote includes port number in x11 open packets 
    [LOCAL] : CAP  : Remote uses 160 bit keys for SHA1 MAC 
    [LOCAL] : CAP  : Remote supports new diffie-hellman group exchange messages 
    [LOCAL] : CAP  : Remote correctly handles unknown SFTP extensions 
    [LOCAL] : CAP  : Remote correctly encodes OID for gssapi 
    [LOCAL] : CAP  : Remote correctly uses connected addresses in forwarded-tcpip requests 
    [LOCAL] : CAP  : Remote can do SFTP version 4 
    [LOCAL] : CAP  : Remote uses SHA1 hash in RSA signatures for x.509v3 
    [LOCAL] : CAP  : Remote x.509v3 uses ASN.1 encoding for DSA signatures 
    [LOCAL] : CAP  : Remote correctly handles zlib@openssh.com 
    [LOCAL] : SSPI : Requesting full delegation 
    [LOCAL] : SSPI : [Kerberos] SPN : host@xyz 
    [LOCAL] : SSPI : [Kerberos] InitializeSecurityContext() failed. 
    [LOCAL] : SSPI : [Kerberos] The specified target is unknown or unreachable  
    [LOCAL] : SSPI : [Kerberos] Disabling gss mechanism 
    [LOCAL] : GSS  : Requesting full delegation 
    [LOCAL] : GSS  : [Kerberos] SPN : host@xyz 
    [LOCAL] : GSS  : [Kerberos] InitializeSecurityContext() failed. 
    [LOCAL] : GSS  : [Kerberos] Could not load library 'gssapi64.dll': The specified module could not be found.   
    [LOCAL] : GSS  : [Kerberos] Disabling gss mechanism 
    [LOCAL] : GSS  : [Kerberos] Disabling gss mechanism 
    [LOCAL] : The following key exchange method has been filtered from the key exchange method list because it is not supported: gss-group1-sha1-toWM5Slw5Ew8Mqkay+al2g==  
    [LOCAL] : SSPI : Requesting full delegation 
    [LOCAL] : SSPI : [Kerberos (Group Exchange)] SPN : host@xyz 
    [LOCAL] : SSPI : [Kerberos (Group Exchange)] InitializeSecurityContext() failed. 
    [LOCAL] : SSPI : [Kerberos (Group Exchange)] The specified target is unknown or unreachable  
    [LOCAL] : SSPI : [Kerberos (Group Exchange)] Disabling gss mechanism 
    [LOCAL] : GSS  : Requesting full delegation 
    [LOCAL] : GSS  : [Kerberos (Group Exchange)] SPN : host@xyz 
    [LOCAL] : GSS  : [Kerberos (Group Exchange)] InitializeSecurityContext() failed. 
    [LOCAL] : GSS  : [Kerberos (Group Exchange)] Could not load library 'gssapi64.dll': The specified module could not be found.   
    [LOCAL] : GSS  : [Kerberos (Group Exchange)] Disabling gss mechanism 
    [LOCAL] : GSS  : [Kerberos (Group Exchange)] Disabling gss mechanism 
    [LOCAL] : The following key exchange method has been filtered from the key exchange method list because it is not supported: gss-gex-sha1-toWM5Slw5Ew8Mqkay+al2g==  
    [LOCAL] : SEND : KEXINIT 
    [LOCAL] : RECV : Read kexinit 
    [LOCAL] : Available Remote Kex Methods = 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,diffie-hellman-group14-sha1 
    [LOCAL] : Selected Kex Method = ecdh-sha2-nistp521 
    [LOCAL] : Available Remote Host Key Algos = rsa-sha2-512,rsa-sha2-256,ssh-rsa,ecdsa-sha2-nistp256,ssh-ed25519 
    [LOCAL] : Selected Host Key Algo = ssh-rsa 
    [LOCAL] : Available Remote Send Ciphers = chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com 
    [LOCAL] : Selected Send Cipher = aes256-ctr 
    [LOCAL] : Available Remote Recv Ciphers = chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com 
    [LOCAL] : Selected Recv Cipher = aes256-ctr 
    [LOCAL] : Available Remote Send Macs = 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 
    [LOCAL] : Selected Send Mac = hmac-sha2-512 
    [LOCAL] : Available Remote Recv Macs = 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 
    [LOCAL] : Selected Recv Mac = hmac-sha2-512 
    [LOCAL] : Available Remote Compressors = none,zlib@openssh.com 
    [LOCAL] : Selected Compressor = none 
    [LOCAL] : Available Remote Decompressors = none,zlib@openssh.com 
    [LOCAL] : Selected Decompressor = none 
    [LOCAL] : Changing state from STATE_EXPECT_KEX_INIT to STATE_KEY_EXCHANGE 
    [LOCAL] : SEND : SSH_MSG_KEX_ECDH_INIT 
    [LOCAL] : RECV : SSH_MSG_KEX_ECDH_REPLY 
    [LOCAL] : Changing state from STATE_KEY_EXCHANGE to STATE_READY_FOR_NEW_KEYS 
    [LOCAL] : RECV: Remote Hostkey (SHA-2 hash): ... 
    [LOCAL] : RECV: Remote Hostkey (SHA-1 hash): ...
    [LOCAL] : RECV: Remote Hostkey (MD5 hash): ...
    [LOCAL] : SEND : NEWKEYS 
    [LOCAL] : Changing state from STATE_READY_FOR_NEW_KEYS to STATE_EXPECT_NEWKEYS 
    [LOCAL] : RECV : NEWKEYS 
    [LOCAL] : Changing state from STATE_EXPECT_NEWKEYS to STATE_CONNECTION 
    [LOCAL] : SEND: SERVICE_REQUEST[ssh-userauth] 
    [LOCAL] : RECV: SERVICE_ACCEPT[ssh-userauth] -- OK 
    [LOCAL] : SENT : USERAUTH_REQUEST [none] 
    [LOCAL] : RECV : USERAUTH_FAILURE, continuations [publickey] 
    [LOCAL] : SENT : USERAUTH_REQUEST [publickey (ssh-rsa) - unsigned,fingerprint (SHA-2 hash): ...] 
    [LOCAL] : SENT : USERAUTH_REQUEST [publickey (ssh-rsa) - unsigned,fingerprint (SHA-1 hash): ...] 
    [LOCAL] : SENT : USERAUTH_REQUEST [publickey (ssh-rsa) - unsigned,fingerprint (MD5 hash): ...] 
    [LOCAL] : RECV : USERAUTH_FAILURE, continuations [publickey] 
    [LOCAL] : SENT : USERAUTH_REQUEST [publickey (ssh-rsa) - unsigned,agent,fingerprint (SHA-2 hash): ...] 
    [LOCAL] : SENT : USERAUTH_REQUEST [publickey (ssh-rsa) - unsigned,agent,fingerprint (SHA-1 hash): ...] 
    [LOCAL] : SENT : USERAUTH_REQUEST [publickey (ssh-rsa) - unsigned,agent,fingerprint (MD5 hash): ...] 
    [LOCAL] : RECV : USERAUTH_FAILURE, continuations [publickey] 
    [LOCAL] : SEND: Disconnect packet: The user canceled authentication.  
    [LOCAL] : Changing state from STATE_CONNECTION to STATE_SEND_DISCONNECT 
    [LOCAL] : Changing state from STATE_SEND_DISCONNECT to STATE_CLOSED 
    [LOCAL] : Connected for 3 seconds, 2698 bytes sent, 2233 bytes received

    [LOCAL] : Stream has closed [CLOSE_TYPE_NO_AUTO_RECONNECT] : The user canceled authentication. 

【问题讨论】:

    标签: ssh debian key containers public


    【解决方案1】:

    你猜怎么着,我不小心把它修好了!

    所以我很绝望,几乎筋疲力尽地尝试了所有选项,但仍然没有开始工作。所以我昨晚放弃了,并使用 sshd_config 中的以下设置为 abc 用户重新使用密码验证。

    匹配用户 abc

    密码验证是

    PubkeyAuthentication 否

    然后一个声音告诉我尝试禁用(取消注释)这些设置,它就奏效了!我曾经遇到过的最奇怪和最痛苦的问题,但现在很开心!

    您认为这是 Debian 10 的错误,还是 secureCRT 8.1.2 的错误?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-09-22
      • 2017-10-12
      • 2014-07-20
      • 2011-11-27
      • 1970-01-01
      • 2016-09-24
      • 1970-01-01
      • 2022-06-10
      相关资源
      最近更新 更多