Опенш и смарт-карта
Я пытаюсь подключиться к удаленному хосту с помощью смарт-карты (то же самое, что я использую для входа в систему). Я извлек ключ rsa из смарт-карты:
$ ssh-keygen -D /usr/lib/opensc-pkcs11.so -e
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDJ[...]
Затем я помещаю его в ~/.ssh/authorized_keys удаленного сервера. Файл /etc/ssh/sshd_config удаленного сервера содержит:
Protocol 2
SyslogFacility AUTHPRIV
PermitRootLogin no
StrictModes yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PubkeyAcceptedKeyTypes +ssh-rsa
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
UsePAM yes
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
X11Forwarding yes
Subsystem sftp /usr/libexec/openssh/sftp-server
Когда я пытаюсь подключиться через ssh, используя PKCS11 (см. Следующее окно, чтобы узнать, что это не работает):
$ ssh -p 8022 -vv -I /usr/lib64/pkcs11/opensc-pkcs11.so matteo@XXX.XXX.XXX.XXX
OpenSSH_7.9p1, OpenSSL 1.1.1a 20 Nov 2018
debug1: Reading configuration data /home/matteo/.ssh/config
debug1: /home/matteo/.ssh/config line 2: Applying options for *
debug1: /home/matteo/.ssh/config line 8: Applying options for 159.213.*
debug1: Reading configuration data /etc/ssh/ssh_config
debug2: resolve_canonicalize: hostname XXX.XXX.XXX.XXX is address
debug2: ssh_connect_direct
debug1: Connecting to XXX.XXX.XXX.XXX [XXX.XXX.XXX.XXX] port 8022.
debug1: Connection established.
debug1: provider /usr/lib64/pkcs11/opensc-pkcs11.so: manufacturerID <OpenSC Project> cryptokiVersion 2.20 libraryDescription <OpenSC smartcard framework> libraryVersion 0.19
debug1: provider /usr/lib64/pkcs11/opensc-pkcs11.so slot 0: label <PIN CNS0 (MATTEO)> manufacturerID <IC: STMicroelectronics; mask: A> model <PKCS#15 emulate> serial <700000082531237> flags 0x4040c
debug1: have 1 keys
debug1: pkcs11_provider_unref: 0x55a1b3e2a010 refcount 2
debug1: identity file /home/matteo/.ssh/id_rsa type -1
debug1: identity file /home/matteo/.ssh/id_rsa-cert type -1
debug1: identity file /home/matteo/.ssh/id_dsa type 1
debug1: identity file /home/matteo/.ssh/id_dsa-cert type -1
debug1: identity file /home/matteo/.ssh/id_ecdsa type -1
debug1: identity file /home/matteo/.ssh/id_ecdsa-cert type -1
debug1: identity file /home/matteo/.ssh/id_ed25519 type -1
debug1: identity file /home/matteo/.ssh/id_ed25519-cert type -1
debug1: identity file /home/matteo/.ssh/id_xmss type -1
debug1: identity file /home/matteo/.ssh/id_xmss-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_7.9
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.4
debug1: match: OpenSSH_7.4 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 XXX.XXX.XXX.XXX:8022 as 'matteo'
debug1: SSH2_MSG_KEXINIT sent
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,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,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,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,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,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
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,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,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-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,diffie-hellman-group1-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,aes128-cbc,aes192-cbc,aes256-cbc,blowfish-cbc,cast128-cbc,3des-cbc
debug2: ciphers stoc: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,aes192-cbc,aes256-cbc,blowfish-cbc,cast128-cbc,3des-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
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
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
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:4B9UqbstaHrknxwJHHuvx5pAHGDLvPxMSAEUWt6YyjE
debug1: checking without port identifier
debug1: Host 'XXX.XXX.XXX.XXX' is known and matches the ECDSA host key.
debug1: Found key in /home/matteo/.ssh/known_hosts:1
debug1: found matching key w/out port
debug2: set_newkeys: mode 1
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug2: set_newkeys: mode 0
debug1: rekey after 134217728 blocks
debug1: Skipping ssh-rsa key /usr/lib64/pkcs11/opensc-pkcs11.so - not in PubkeyAcceptedKeyTypes
debug1: pkcs11_provider_unref: 0x55a1b3e2a010 refcount 2
debug1: Will attempt key: /home/matteo/.ssh/id_rsa
debug1: Will attempt key: /home/matteo/.ssh/id_dsa DSA SHA256:Lrv0jwwVeXGDOt9g0cxRg9h3E5rkcLF8Lkm+7qJSKoo
debug1: Will attempt key: /home/matteo/.ssh/id_ecdsa
debug1: Will attempt key: /home/matteo/.ssh/id_ed25519
debug1: Will attempt key: /home/matteo/.ssh/id_xmss
debug2: pubkey_prepare: done
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<rsa-sha2-256,rsa-sha2-512>
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: publickey
debug1: Trying private key: /home/matteo/.ssh/id_rsa
debug1: Offering public key: /home/matteo/.ssh/id_dsa DSA SHA256:Lrv0jwwVeXGDOt9g0cxRg9h3E5rkcLF8Lkm+7qJSKoo
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Trying private key: /home/matteo/.ssh/id_ecdsa
debug1: Trying private key: /home/matteo/.ssh/id_ed25519
debug1: Trying private key: /home/matteo/.ssh/id_xmss
debug2: we did not send a packet, disable method
debug1: Next authentication method: password
matteo@XXX.XXX.XXX.XXX's password:
как я сказал что-то не так, имхо, с
debug1: provider /usr/lib64/pkcs11/opensc-pkcs11.so: manufacturerID <OpenSC Project> cryptokiVersion 2.20 libraryDescription <OpenSC smartcard framework> libraryVersion 0.19
debug1: provider /usr/lib64/pkcs11/opensc-pkcs11.so slot 0: label <PIN CNS0 (MATTEO)> manufacturerID <IC: STMicroelectronics; mask: A> model <PKCS#15 emulate> serial <700000082531237> flags 0x4040c
debug1: have 1 keys
debug1: pkcs11_provider_unref: 0x55a1b3e2a010 refcount 2
я ошибаюсь где-то в процедуре? Это ошибка? Я пробовал 2 разные смарт-карты (чипсет Athena), 2 устройства чтения смарт-карт (клавиатура и слот Dell Dell для чтения смарт-карт и слот 1 (0x4): OMNIKEY CardMan 4321 01 00), 2 ОС (debian 9 и antergos), 2 разных удаленных ОС (сентос 7 и дебиан 9). Неважно, что я делаю, это не работает. Я снова говорю, что все работает, как и ожидалось, когда я пытаюсь использовать смарт-карту для аутентификации на веб-сайтах и в системе для входа в систему и использования sudo.
Спасибо!
1 ответ
Я считаю, что соответствующая часть заключается в следующем:
debug1: пропуск ключа ssh-rsa /usr/lib64/pkcs11/opensc-pkcs11.so - отсутствует в PubkeyAcceptedKeyTypes
Что интересно, потому что, похоже, вы разрешаете использовать ключи ssh-rsa. Я бы посмотрел в журнале сервера, прямо после перезапуска сервера.