Π’ΠΈΠΌΡΡΠΈ Π Π°Π²ΠΈΠ΅Ρ ΠΎΡ Red Hat, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅ Fedora Silverblue ΠΈ Fedora Kinoite, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈ Π½Π°ΡΠΈΠ½ Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠΌΠΎΡΠ½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° sudo, ΠΊΠΎΡΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π±ΠΈΡΠ° suid Π·Π° Π΅ΡΠΊΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ. ΠΠΌΠ΅ΡΡΠΎ sudo, Π·Π° Π½ΠΎΡΠΌΠ°Π»Π΅Π½ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Ρ ΠΏΡΠ°Π²Π° Π½Π° root, ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎΠΌΠΎΡΠ½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° ssh Ρ Π»ΠΎΠΊΠ°Π»Π½Π° Π²ΡΡΠ·ΠΊΠ° ΠΊΡΠΌ ΡΡΡΠ°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΡΡΠ΅Π· UNIX ΡΠΎΠΊΠ΅Ρ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° SSH ΠΊΠ»ΡΡΠΎΠ²Π΅.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ssh Π²ΠΌΠ΅ΡΡΠΎ sudo Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ ΠΎΡΡΡΠ²Π΅ΡΠ΅ ΠΎΡ suid ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΠΈ Π΄Π° ΡΠ°Π·ΡΠ΅ΡΠΈΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π² Ρ ΠΎΡΡ ΡΡΠ΅Π΄Π°ΡΠ° Π½Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π·Π° ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ, ΠΊΠ°ΡΠΎ Fedora Silverblue, Fedora Kinoite, Fedora Sericea ΠΈ Fedora Onyx. ΠΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π΄ΠΎΡΡΡΠΏΠ° ΠΌΠΎΠΆΠ΅ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎΡΠ²ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠ°Π²ΠΎΠΌΠΎΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° USB ΡΠΎΠΊΠ΅Π½ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Yubikey).
ΠΡΠΈΠΌΠ΅Ρ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΡΠ²ΡΡΠ½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° OpenSSH Π·Π° Π΄ΠΎΡΡΡΠΏ ΠΏΡΠ΅Π· Π»ΠΎΠΊΠ°Π»Π΅Π½ Unix ΡΠΎΠΊΠ΅Ρ (ΡΠ΅ Π±ΡΠ΄Π΅ ΡΡΠ°ΡΡΠΈΡΠ°Π½ΠΎ ΠΎΡΠ΄Π΅Π»Π½ΠΎ sshd ΠΊΠΎΠΏΠΈΠ΅ ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π΅Π½ ΡΠ°ΠΉΠ»):
/etc/systemd/system/sshd-unix.socket: [Unit] Description=OpenSSH Server Unix Socket Documentation=man:sshd(8) man:sshd_config(5) [Socket] ListenStream=/run/sshd.sock Accept=yes [ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅] WantedBy=sockets.target
/ Π Ρ.Π½. / systemd / ΡΠΈΡΡΠ΅ΠΌΠ° /[ΠΈΠΌΠ΅ΠΉΠ» Π·Π°ΡΠΈΡΠ΅Π½]: [Unit] Description=OpenSSH ΡΡΡΠ²ΡΡ Π΄Π΅ΠΌΠΎΠ½ Π·Π° Π²ΡΡΠΊΠ° Π²ΡΡΠ·ΠΊΠ° (Unix socket) Documentation=man:sshd(8) man:sshd_config(5) Wants=sshd-keygen.target After=sshd-keygen.target [Service] ExecStart=- /usr/sbin/sshd -i -f /etc/ssh/sshd_config_unix StandardInput=ΡΠΎΠΊΠ΅Ρ
/etc/ssh/sshd_config_unix: # ΠΡΡΠ°Π²Ρ ΡΠ°ΠΌΠΎ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠ»ΡΡ PermitRootLogin prohibit-password PasswordAuthentication Π½Π΅ PermitEmptyPasswords Π½Π΅ GSSAPIAuthentication Π½Π΅ # ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ° Π΄ΠΎ ΠΈΠ·Π±ΡΠ°Π½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ AllowUsers root adminusername # ΠΡΡΠ°Π²Ρ ΡΠ°ΠΌΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° .ssh/authorized_keys (Π±Π΅Π· .ssh/authorized_keys2 ΠΠ²ΡΠΎΡ izedKeysFile .ssh /authorized_ keys # enable sftp Subsystem sftp /usr/libexec/openssh/sftp-ΡΡΡΠ²ΡΡ
ΠΠΊΡΠΈΠ²ΠΈΡΠ°ΠΉΡΠ΅ ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°ΠΉΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Π° systemd: sudo systemctl daemon-reload sudo systemctl enable βnow sshd-unix.socket
ΠΠΎΠ±Π°Π²Π΅ΡΠ΅ ΡΠ²ΠΎΡ SSH ΠΊΠ»ΡΡ ΠΊΡΠΌ /root/.ssh/authorized_keys
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° SSH ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ ΠΏΠΎΠΌΠΎΡΠ½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° socat: sudo dnf install socat
ΠΠΎΠΏΡΠ»Π²Π°ΠΌΠ΅ /.ssh/config, ΠΊΠ°ΡΠΎ ΠΏΠΎΡΠΎΡΠ²Π°ΠΌΠ΅ socat ΠΊΠ°ΡΠΎ ΠΏΡΠΎΠΊΡΠΈ Π·Π° Π΄ΠΎΡΡΡΠΏ ΠΏΡΠ΅Π· UNIX ΡΠΎΠΊΠ΅Ρ: Host host.local User root # ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ /run/host/run Π²ΠΌΠ΅ΡΡΠΎ /run Π·Π° ΡΠ°Π±ΠΎΡΠ° ΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ ProxyCommand socat - UNIX-CLIENT: / run/ host/run/sshd.sock # ΠΡΡ Π΄ΠΎ SSH ΠΊΠ»ΡΡΠ° IdentityFile ~/.ssh/keys/localroot # ΠΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° TTY ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½Π°ΡΠ° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° RequestTTY Π΄Π° # ΠΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ Π½Π° Π½Π΅Π½ΡΠΆΠ½ΠΈΡ ΠΈΠ·Ρ ΠΎΠ΄ LogLevel QUIET
Π ΡΠ΅Π³Π°ΡΠ½Π°ΡΠ° ΡΠΈ ΡΠΎΡΠΌΠ° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ adminusername Π²Π΅ΡΠ΅ ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΊΠ°ΡΠΎ root, Π±Π΅Π· Π΄Π° Π²ΡΠ²Π΅ΠΆΠ΄Π° ΠΏΠ°ΡΠΎΠ»Π°. ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ°: $ ssh host.local [root ~]#
Π‘ΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ Π½Π° sudohost Π² bash, Π·Π° Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ βssh host.localβ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° sudo: sudohost() { if [[ ${#} -eq 0 ]]; ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ssh host.local "cd \"${PWD}\"; exec \"${SHELL}\" --login" else ssh host.local "cd \"${PWD}\"; exec \Β»${@}\»» fi }
ΠΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅: $ sudohost id uid=0(root) gid=0(root) groups=0(root)
ΠΠΎΠ±Π°Π²ΡΠΌΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΠΌΠ΅ Π΄Π²ΡΡΠ°ΠΊΡΠΎΡΠ½ΠΎ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° root Π΄ΠΎΡΡΡΠΏ ΡΠ°ΠΌΠΎ ΠΊΠΎΠ³Π°ΡΠΎ Π΅ ΠΏΠΎΡΡΠ°Π²Π΅Π½ Yubikey USB ΡΠΎΠΊΠ΅Π½.
ΠΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΌΠ΅ ΠΊΠΎΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΠΎΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡ Yubikey: lsusb -v 2>/dev/null | grep -A2 Yubico | grep "bcdDevice" | awk '{print $2}'
ΠΠΊΠΎ ΠΈΠ·Ρ ΠΎΠ΄ΡΡ Π΅ 5.2.3 ΠΈΠ»ΠΈ ΠΏΠΎ-Π²ΠΈΡΠΎΠΊ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ed25519-sk, ΠΊΠΎΠ³Π°ΡΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠ΅ ΠΊΠ»ΡΡΠΎΠ²Π΅, Π² ΠΏΡΠΎΡΠΈΠ²Π΅Π½ ΡΠ»ΡΡΠ°ΠΉ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ecdsa-sk: ssh-keygen -t ed25519-sk ΠΈΠ»ΠΈ ssh-keygen -t ecdsa-sk
ΠΠΎΠ±Π°Π²Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈΡ ΠΊΠ»ΡΡ ΠΊΡΠΌ /root/.ssh/authorized_keys
ΠΠΎΠ±Π°Π²Π΅ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° ΡΠΈΠΏ ΠΊΠ»ΡΡ ΠΊΡΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° sshd: /etc/ssh/sshd_config_unix: PubkeyAcceptedKeyTypes [ΠΈΠΌΠ΅ΠΉΠ» Π·Π°ΡΠΈΡΠ΅Π½],[ΠΈΠΌΠ΅ΠΉΠ» Π·Π°ΡΠΈΡΠ΅Π½]
ΠΠΈΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°ΠΌΠ΅ Π΄ΠΎΡΡΡΠΏΠ° Π΄ΠΎ Unix ΡΠΎΠΊΠ΅ΡΠ° ΡΠ°ΠΌΠΎ Π΄ΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° ΠΏΠΎΠ²ΠΈΡΠ΅Π½ΠΈ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ (Π² Π½Π°ΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ, adminusername). Π /etc/systemd/system/sshd-unix.socket Π΄ΠΎΠ±Π°Π²Π΅ΡΠ΅: [Socket] ... SocketUser=adminusername SocketGroup=adminusername SocketMode=0660
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru