ืื ื• ืงื•ื‘ืขื™ื ื ื•ื”ืœ ืœื’ื™ืฉื” ื—ื™ืจื•ื ืœืžืืจื—ื™ SSH ืขื ืžืคืชื—ื•ืช ื—ื•ืžืจื”

ืื ื• ืงื•ื‘ืขื™ื ื ื•ื”ืœ ืœื’ื™ืฉื” ื—ื™ืจื•ื ืœืžืืจื—ื™ SSH ืขื ืžืคืชื—ื•ืช ื—ื•ืžืจื”

ื‘ืคื•ืกื˜ ื–ื”, ื ืคืชื— ื ื•ื”ืœ ืœื’ื™ืฉื” ื—ื™ืจื•ื ืœืžืืจื—ื™ SSH ื‘ืืžืฆืขื•ืช ืžืคืชื—ื•ืช ืื‘ื˜ื—ืช ื—ื•ืžืจื” ื‘ืžืฆื‘ ืœื ืžืงื•ื•ืŸ. ื–ื•ื”ื™ ืจืง ื’ื™ืฉื” ืื—ืช, ื•ืืชื” ื™ื›ื•ืœ ืœื”ืชืื™ื ืื•ืชื” ืœืฆืจื›ื™ื ืฉืœืš. ื ืื—ืกืŸ ืืช ืจืฉื•ืช ื”ืื™ืฉื•ืจื™ื ืฉืœ SSH ืขื‘ื•ืจ ื”ืžืืจื—ื™ื ืฉืœื ื• ืขืœ ืžืคืชื— ื”ืื‘ื˜ื—ื” ืฉืœ ื”ื—ื•ืžืจื”. ืกื›ื™ืžื” ื–ื• ืชืขื‘ื•ื“ ื›ืžืขื˜ ืขืœ ื›ืœ OpenSSH, ื›ื•ืœืœ SSH ืขื ื›ื ื™ืกื” ื™ื—ื™ื“ื”.

ื‘ืฉื‘ื™ืœ ืžื” ื›ืœ ื–ื”? ื•ื‘ื›ืŸ, ื–ื• ืืคืฉืจื•ืช ืžื•ืฆื ืื—ืจื•ืŸ. ื–ื•ื”ื™ ื“ืœืช ืื—ื•ืจื™ืช ืฉืชืืคืฉืจ ืœืš ืœืงื‘ืœ ื’ื™ืฉื” ืœืฉืจืช ืฉืœืš ื›ืืฉืจ ืžืกื™ื‘ื” ื›ืœืฉื”ื™ ืฉื•ื ื“ื‘ืจ ืื—ืจ ืœื ืขื•ื‘ื“.

ืžื“ื•ืข ืœื”ืฉืชืžืฉ ื‘ืชืขื•ื“ื•ืช ื‘ืžืงื•ื ืžืคืชื—ื•ืช ืฆื™ื‘ื•ืจื™ื™ื/ืคืจื˜ื™ื™ื ืœื’ื™ืฉื” ืœืฉืขืช ื—ื™ืจื•ื?

  • ื‘ื ื™ื’ื•ื“ ืœืžืคืชื—ื•ืช ืฆื™ื‘ื•ืจื™ื™ื, ืœืื™ืฉื•ืจื™ื ืื•ืจืš ื—ื™ื™ื ืงืฆืจ ืžืื•ื“. ืืชื” ื™ื›ื•ืœ ืœื”ืคื™ืง ืื™ืฉื•ืจ ืฉืชืงืฃ ืœื“ืงื” ืื—ืช ืื• ืืคื™ืœื• 1 ืฉื ื™ื•ืช. ืœืื—ืจ ืชืงื•ืคื” ื–ื•, ื”ืื™ืฉื•ืจ ืœื ื™ื”ื™ื” ืฉืžื™ืฉ ืขื‘ื•ืจ ื—ื™ื‘ื•ืจื™ื ื—ื“ืฉื™ื. ื–ื” ืื™ื“ื™ืืœื™ ืขื‘ื•ืจ ื’ื™ืฉื” ื—ื™ืจื•ื.
  • ืืชื” ื™ื›ื•ืœ ืœื™ืฆื•ืจ ืื™ืฉื•ืจ ืขื‘ื•ืจ ื›ืœ ื—ืฉื‘ื•ืŸ ื‘ืžืืจื—ื™ื ืฉืœืš, ื•ื‘ืžื™ื“ืช ื”ืฆื•ืจืš ืœืฉืœื•ื— ืื™ืฉื•ืจื™ื "ื—ื“ ืคืขืžื™ื™ื" ื›ืืœื” ืœืขืžื™ืชื™ื.

ืžื” ืฉืืชื” ืฆืจื™ืš

  • ืžืคืชื—ื•ืช ืื‘ื˜ื—ืช ื—ื•ืžืจื” ื”ืชื•ืžื›ื™ื ื‘ืžืคืชื—ื•ืช ืชื•ืฉื‘.
    ืžืคืชื—ื•ืช ืชื•ืฉื‘ื™ื ื”ื ืžืคืชื—ื•ืช ืงืจื™ืคื˜ื•ื’ืจืคื™ื™ื ื”ืžืื•ื—ืกื ื™ื ื‘ืžืœื•ืื ื‘ืชื•ืš ืžืคืชื— ื”ืื‘ื˜ื—ื”. ืœืคืขืžื™ื ื”ื ืžื•ื’ื ื™ื ื‘ืืžืฆืขื•ืช PIN ืืœืคืื ื•ืžืจื™. ื ื™ืชืŸ ืœื™ื™ืฆื ืืช ื”ื—ืœืง ื”ืฆื™ื‘ื•ืจื™ ืฉืœ ืžืคืชื— ื”ืชื•ืฉื‘ ืžืžืคืชื— ื”ืื‘ื˜ื—ื”, ืื•ืคืฆื™ื•ื ืœื™ ื™ื—ื“ ืขื ื™ื“ื™ืช ื”ืžืคืชื— ื”ืคืจื˜ื™. ืœื“ื•ื’ืžื”, ืžืคืชื—ื•ืช USB ืžืกื“ืจืช Yubikey 5 ืชื•ืžื›ื™ื ื‘ืžืคืชื—ื•ืช ืชื•ืฉื‘. ืจืฆื•ื™ ืฉื”ื ืžื™ื•ืขื“ื™ื ืจืง ืœื’ื™ืฉื” ื—ื™ืจื•ื ืœืžืืจื—. ืขื‘ื•ืจ ื”ืคื•ืกื˜ ื”ื–ื” ืืฉืชืžืฉ ืจืง ื‘ืžืคืชื— ืื—ื“, ืื‘ืœ ืฆืจื™ืš ืœื”ื™ื•ืช ืœืš ืื—ื“ ื ื•ืกืฃ ืœื’ื™ื‘ื•ื™.
  • ืžืงื•ื ื‘ื˜ื•ื— ืœืื—ืกืŸ ืืช ื”ืžืคืชื—ื•ืช ื”ืืœื”.
  • OpenSSH ื’ืจืกื” 8.2 ื•ืžืขืœื” ื‘ืžื—ืฉื‘ ื”ืžืงื•ืžื™ ืฉืœืš ื•ื‘ืฉืจืชื™ื ืฉืืœื™ื”ื ื‘ืจืฆื•ื ืš ืœืงื‘ืœ ื’ื™ืฉื” ืœืฉืขืช ื—ื™ืจื•ื. ืื•ื‘ื•ื ื˜ื• 20.04 ื ืฉืœื— ืขื OpenSSH 8.2.
  • (ืื•ืคืฆื™ื•ื ืœื™, ืืš ืžื•ืžืœืฅ) ื›ืœื™ CLI ืœื‘ื“ื™ืงืช ืชืขื•ื“ื•ืช.

ื”ื“ืจื›ื”

ืจืืฉื™ืช, ืขืœื™ืš ืœื™ืฆื•ืจ ืจืฉื•ืช ืื™ืฉื•ืจ ืฉืชื”ื™ื” ืžืžื•ืงืžืช ืขืœ ืžืคืชื— ื”ืื‘ื˜ื—ื” ืฉืœ ื”ื—ื•ืžืจื”. ื”ื›ื ืก ืืช ื”ืžืคืชื— ื•ื”ืคืขืœ:

$ ssh-keygen -t ecdsa-sk -f sk-user-ca -O resident -C [security key ID]

ื›ื”ืขืจื” (-ื’) ืฆื™ื™ื ืชื™ [ืžื•ื’ืŸ ื‘ื“ื•ื"ืœ]ื›ื“ื™ ืฉืœื ืชืฉื›ื— ืœืื™ื–ื” ืžืคืชื— ืื‘ื˜ื—ื” ืฉื™ื™ื›ืช ืจืฉื•ืช ื”ืื™ืฉื•ืจื™ื ื”ื–ื•.

ื‘ื ื•ืกืฃ ืœื”ื•ืกืคืช ื”ืžืคืชื— ืœ- Yubikey, ืฉื ื™ ืงื‘ืฆื™ื ื™ื•ืคืงื• ื‘ืื•ืคืŸ ืžืงื•ืžื™:

  1. sk-user-ca, ื™ื“ื™ืช ืžืคืชื— ื”ืžืชื™ื™ื—ืกืช ืœืžืคืชื— ื”ืคืจื˜ื™ ื”ืžืื•ื—ืกืŸ ื‘ืžืคืชื— ื”ืื‘ื˜ื—ื”,
  2. sk-user-ca.pub, ืฉื™ื”ื™ื” ื”ืžืคืชื— ื”ืฆื™ื‘ื•ืจื™ ืฉืœ ืจืฉื•ืช ื”ืื™ืฉื•ืจื™ื ืฉืœืš.

ืื‘ืœ ืืœ ื“ืื’ื”, ื”- Yubikey ืžืื—ืกืŸ ืžืคืชื— ืคืจื˜ื™ ื ื•ืกืฃ ืฉืœื ื ื™ืชืŸ ืœืื—ื–ืจ. ืœื›ืŸ ื”ื›ืœ ืืžื™ืŸ ื›ืืŸ.

ื‘ืžืืจื—ื™ื, ื›ืฉื•ืจืฉ, ื”ื•ืกืฃ (ืื ืขื“ื™ื™ืŸ ืœื ืขืฉื™ืช ื–ืืช) ืืช ื”ื“ื‘ืจื™ื ื”ื‘ืื™ื ืœืชืฆื•ืจืช ื”-SSHD ืฉืœืš (/etc/ssh/sshd_config):

TrustedUserCAKeys /etc/ssh/ca.pub

ืœืื—ืจ ืžื›ืŸ ื‘ืžืืจื—, ื”ื•ืกืฃ ืืช ื”ืžืคืชื— ื”ืฆื™ื‘ื•ืจื™ (sk-user-ca.pub) ืœ-/etc/ssh/ca.pub

ื”ืคืขืœ ืžื—ื“ืฉ ืืช ื”ื“ืžื•ืŸ:

# /etc/init.d/ssh restart

ื›ืขืช ื ื•ื›ืœ ืœื ืกื•ืช ืœื’ืฉืช ืœืžืืจื—. ืื‘ืœ ืงื•ื“ื ืฆืจื™ืš ืชืขื•ื“ื”. ืฆื•ืจ ื–ื•ื’ ืžืคืชื—ื•ืช ืฉื™ืฉื•ื™ืš ืœืื™ืฉื•ืจ:

$ ssh-keygen -t ecdsa -f emergency

ืชืขื•ื“ื•ืช ื•ื–ื•ื’ื•ืช SSH
ืœืคืขืžื™ื ื–ื” ืžืคืชื” ืœื”ืฉืชืžืฉ ื‘ืชืขื•ื“ื” ื›ืชื—ืœื™ืฃ ืœื–ื•ื’ ืžืคืชื—ื•ืช ืฆื™ื‘ื•ืจื™/ืคืจื˜ื™. ืื‘ืœ ืื™ืฉื•ืจ ืœื‘ื“ื• ืื™ื ื• ืžืกืคื™ืง ื›ื“ื™ ืœืืžืช ืžืฉืชืžืฉ. ืœื›ืœ ืชืขื•ื“ื” ื™ืฉ โ€‹โ€‹ื’ื ืžืคืชื— ืคืจื˜ื™ ื”ืžืฉื•ื™ืš ืืœื™ื•. ื–ื• ื”ืกื™ื‘ื” ืฉืขืœื™ื ื• ืœื™ืฆื•ืจ ืฆืžื“ ืžืคืชื—ื•ืช "ื—ื™ืจื•ื" ื–ื” ืœืคื ื™ ืฉืื ื• ืžื•ืฆื™ืื™ื ืœืขืฆืžื ื• ืชืขื•ื“ื”. ื”ื“ื‘ืจ ื”ื—ืฉื•ื‘ ื”ื•ื ืฉื ืจืื” ืืช ื”ืื™ืฉื•ืจ ื”ื—ืชื•ื ืœืฉืจืช, ืชื•ืš ืฆื™ื•ืŸ ื–ื•ื’ ื”ืžืคืชื—ื•ืช ืขื‘ื•ืจื• ื™ืฉ ืœื ื• ืžืคืชื— ืคืจื˜ื™.

ืื– ื”ื—ืœืคืช ืžืคืชื—ื•ืช ืฆื™ื‘ื•ืจื™ืช ืขื“ื™ื™ืŸ ื—ื™ื” ื•ืงื™ื™ืžืช. ื–ื” ืขื•ื‘ื“ ืืคื™ืœื• ืขื ืชืขื•ื“ื•ืช. ืื™ืฉื•ืจื™ื ืคืฉื•ื˜ ืžื‘ื˜ืœื™ื ืืช ื”ืฆื•ืจืš ื‘ืฉืจืช ืœืื—ืกืŸ ืžืคืชื—ื•ืช ืฆื™ื‘ื•ืจื™ื™ื.

ืœืื—ืจ ืžื›ืŸ, ืฆื•ืจ ืืช ื”ืื™ืฉื•ืจ ืขืฆืžื•. ืื ื™ ืฆืจื™ืš ื”ืจืฉืืช ืžืฉืชืžืฉ ืื•ื‘ื•ื ื˜ื• ื‘ืžืจื•ื•ื— ืฉืœ 10 ื“ืงื•ืช. ืืชื” ื™ื›ื•ืœ ืœืขืฉื•ืช ืืช ื–ื” ื‘ื“ืจืš ืฉืœืš.

$ ssh-keygen -s sk-user-ca -I test-key -n ubuntu -V -5m:+5m emergency

ืชืชื‘ืงืฉ ืœื—ืชื•ื ืขืœ ื”ืื™ืฉื•ืจ ื‘ืืžืฆืขื•ืช ื˜ื‘ื™ืขืช ื”ืืฆื‘ืข ืฉืœืš. ืืชื” ื™ื›ื•ืœ ืœื”ื•ืกื™ืฃ ืฉืžื•ืช ืžืฉืชืžืฉ ื ื•ืกืคื™ื ืžื•ืคืจื“ื™ื ื‘ืคืกื™ืงื™ื, ืœืžืฉืœ -n ubuntu,carl,ec2-user

ื–ื”ื•, ืขื›ืฉื™ื• ื™ืฉ ืœืš ืชืขื•ื“ื”! ืœืื—ืจ ืžื›ืŸ ืขืœื™ืš ืœืฆื™ื™ืŸ ืืช ื”ื”ืจืฉืื•ืช ื”ื ื›ื•ื ื•ืช:

$ chmod 600 emergency-cert.pub

ืœืื—ืจ ืžื›ืŸ, ืชื•ื›ืœ ืœืจืื•ืช ืืช ืชื•ื›ืŸ ื”ืชืขื•ื“ื” ืฉืœืš:

$ step ssh inspect emergency-cert.pub

ื›ืš ื ืจืื” ืฉืœื™:

emergency-cert.pub
        Type: [email protected] user certificate
        Public key: ECDSA-CERT SHA256:EJSfzfQv1UK44/LOKhBbuh5oRMqxXGBSr+UAzA7cork
        Signing CA: SK-ECDSA SHA256:kLJ7xfTTPQN0G/IF2cq5TB3EitaV4k3XczcBZcLPQ0E
        Key ID: "test-key"
        Serial: 0
        Valid: from 2020-06-24T16:53:03 to 2020-06-24T17:03:03
        Principals:
                ubuntu
        Critical Options: (none)
        Extensions:
                permit-X11-forwarding
                permit-agent-forwarding
                permit-port-forwarding
                permit-pty
                permit-user-rc

ื›ืืŸ ื”ืžืคืชื— ื”ืฆื™ื‘ื•ืจื™ ื”ื•ื ืžืคืชื— ื”ื—ื™ืจื•ื ืฉื™ืฆืจื ื•, ื•-sk-user-ca ืžืฉื•ื™ืš ืœืจืฉื•ืช ื”ืื™ืฉื•ืจื™ื.

ืœื‘ืกื•ืฃ ืื ื—ื ื• ืžื•ื›ื ื™ื ืœื”ืคืขื™ืœ ืืช ืคืงื•ื“ืช SSH:


$ ssh -i emergency ubuntu@my-hostname
ubuntu@my-hostname:~$

  1. ื›ืขืช ืชื•ื›ืœ ืœื™ืฆื•ืจ ืื™ืฉื•ืจื™ื ืขื‘ื•ืจ ื›ืœ ืžืฉืชืžืฉ ื‘ืžืืจื— ื”ื ื•ืชืŸ ืืžื•ืŸ ื‘ืจืฉื•ืช ื”ืื™ืฉื•ืจื™ื ืฉืœืš.
  2. ืืชื” ื™ื›ื•ืœ ืœื”ืกื™ืจ ื—ื™ืจื•ื. ืืชื” ื™ื›ื•ืœ ืœืฉืžื•ืจ sk-user-ca, ืื‘ืœ ืืชื” ืœื ืฆืจื™ืš ืฉื›ืŸ ื”ื•ื ื’ื ื ืžืฆื ื‘ืžืคืชื— ื”ืื‘ื˜ื—ื”. ื™ื™ืชื›ืŸ ืฉืชืจืฆื” ื’ื ืœื”ืกื™ืจ ืืช ื”ืžืคืชื— ื”ืฆื™ื‘ื•ืจื™ ื”ืžืงื•ืจื™ PEM ืžื”ืžืืจื—ื™ื ืฉืœืš (ืœื“ื•ื’ืžื” ื‘-~/.ssh/authorized_keys ืขื‘ื•ืจ ืžืฉืชืžืฉ ื”-Ubuntu) ืื ื”ืฉืชืžืฉืช ื‘ื• ืœื’ื™ืฉื” ืœืžืงืจื™ ื—ื™ืจื•ื.

ื’ื™ืฉื” ืœืฉืขืช ื—ื™ืจื•ื: ืชื•ื›ื ื™ืช ืคืขื•ืœื”

ื”ื“ื‘ืง ืืช ืžืคืชื— ื”ืื‘ื˜ื—ื” ื•ื”ืคืขืœ ืืช ื”ืคืงื•ื“ื”:

$ ssh-add -K

ืคืขื•ืœื” ื–ื• ืชื•ืกื™ืฃ ืืช ื”ืžืคืชื— ื”ืฆื™ื‘ื•ืจื™ ื•ืืช ืžืชืืจ ื”ืžืคืชื—ื•ืช ืฉืœ ืจืฉื•ืช ื”ืื™ืฉื•ืจื™ื ืœืกื•ื›ืŸ SSH.

ื›ืขืช ื™ื™ืฆื ืืช ื”ืžืคืชื— ื”ืฆื™ื‘ื•ืจื™ ื›ื“ื™ ืœื™ืฆื•ืจ ืื™ืฉื•ืจ:

$ ssh-add -L | tail -1 > sk-user-ca.pub

ืฆื•ืจ ืื™ืฉื•ืจ ืขื ืชืืจื™ืš ืชืคื•ื’ื” ืฉืœ, ืœืžืฉืœ, ืœื ื™ื•ืชืจ ืžืฉืขื”:

$ ssh-keygen -t ecdsa -f emergency
$ ssh-keygen -Us sk-user-ca.pub -I test-key -n [username] -V -5m:+60m emergency
$ chmod 600 emergency-cert.pub

ื•ืขื›ืฉื™ื• ืฉื•ื‘ SSH:

$ ssh -i emergency username@host

ืื ืงื•ื‘ืฅ ื”-.ssh/config ืฉืœืš ื’ื•ืจื ืœื‘ืขื™ื•ืช ืžืกื•ื™ืžื•ืช ื‘ืขืช ื”ื—ื™ื‘ื•ืจ, ืืชื” ื™ื›ื•ืœ ืœื”ืคืขื™ืœ ืืช ssh ืขื ื”ืืคืฉืจื•ืช -F none ื›ื“ื™ ืœืขืงื•ืฃ ืื•ืชื•. ืื ืืชื” ืฆืจื™ืš ืœืฉืœื•ื— ืชืขื•ื“ื” ืœืขืžื™ืช, ื”ืืคืฉืจื•ืช ื”ืงืœื” ื•ื”ื‘ื˜ื•ื—ื” ื‘ื™ื•ืชืจ ื”ื™ื ื—ื•ืจ ืชื•ืœืขืช ืงืกื. ืœืฉื ื›ืš, ืืชื” ืฆืจื™ืš ืจืง ืฉื ื™ ืงื‘ืฆื™ื - ื‘ืžืงืจื” ืฉืœื ื•, ื—ื™ืจื•ื ื•ื—ื™ืจื•ื-cert.pub.

ืžื” ืฉืื ื™ ืื•ื”ื‘ ื‘ื’ื™ืฉื” ื–ื• ื”ื•ื ืชืžื™ื›ืช ื”ื—ื•ืžืจื”. ืืชื” ื™ื›ื•ืœ ืœืฉื™ื ืืช ืžืคืชื—ื•ืช ื”ืื‘ื˜ื—ื” ืฉืœืš ื‘ื›ืกืคืช ื•ื”ื ืœื ื™ืœื›ื• ืœืฉื•ื ืžืงื•ื.

ืขืœ ื–ื›ื•ื™ื•ืช ื”ืคืจืกื•ื

ืฉืจืชื™ื ืืคื™ื™ื - ื”ืื VPS ื–ื•ืœ ืขื ืžืขื‘ื“ื™ื ื—ื–ืงื™ื ืžื‘ื™ืช AMD, ืชื“ืจ ืœื™ื‘ืช ืžืขื‘ื“ ืขื“ 3.4 ื’ื™ื’ื”-ื”ืจืฅ. ื”ืชืฆื•ืจื” ื”ืžืงืกื™ืžืœื™ืช ืžืืคืฉืจืช ืœืš ืœืคืชื•ืจ ื›ืžืขื˜ ื›ืœ ื‘ืขื™ื” - 128 ืœื™ื‘ื•ืช CPU, 512 GB RAM, 4000 GB NVMe. ื”ืฆื˜ืจืฃ ืืœื™ื ื•!

ืื ื• ืงื•ื‘ืขื™ื ื ื•ื”ืœ ืœื’ื™ืฉื” ื—ื™ืจื•ื ืœืžืืจื—ื™ SSH ืขื ืžืคืชื—ื•ืช ื—ื•ืžืจื”

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”