Π’ΠΈΠΌΠΎΡΠΈ Π Π°Π²ΠΈΠ΅Ρ ΠΎΠ΄ 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 / ΡΠΈΡΡΠ΅ΠΌ /[Π·Π°ΡΡΠΈΡΠ΅Π½Π° ΠΏΠΎ Π΅-ΠΏΠΎΡΡΠ°]: [ΠΠ΄ΠΈΠ½ΠΈΡΠ°] ΠΠΏΠΈΡ=OpenSSH Π·Π° ΡΠ΅ΡΠ²Π΅ΡΡΠΊΠΈ Π΄Π΅ΠΌΠΎΠ½ Π·Π° ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ (ΠΏΡΠΈΠΊΠ»ΡΡΠΎΠΊ Π·Π° Unix) Documentation=man:sshd(8) man:sshd_config(5) Wants=sshd-keygen.target After=sshd-keygen.target [Π£ΡΠ»ΡΠ³Π°] ExecStart=- /usr/sbin/sshd -i -f /etc/ssh/sshd_config_unix StandardInput=socket
/etc/ssh/sshd_config_unix: # ΠΡΡΠ°Π²Π° ΡΠ°ΠΌΠΎ Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡΠ° Π½Π° ΠΊΠ»ΡΡΠΎΡ PermitRootLogin Π·Π°Π±ΡΠ°Π½ΠΈ-Π»ΠΎΠ·ΠΈΠ½ΠΊΠ° PasswordAuthentication Π±Π΅Π· PermitEmptyPasswords Π±Π΅Π· GSSAPIAΠ°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡΠ° Π½Π΅ΠΌΠ° # Π³ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΡΠ²Π° ΠΏΡΠΈΡΡΠ°ΠΏΠΎΡ Π΄ΠΎ ΠΈΠ·Π±ΡΠ°Π½ΠΈΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ AllowUsers root adminusername # ΠΠ° ΠΎΡΡΠ°Π²Π° ΡΠ°ΠΌΠΎ ΡΠΏΠΎΡΡΠ΅Π±Π°ΡΠ° Π½Π° root. 2 AuthorizedKeysFile .ssh /authorized_ keys # enable sftp ΠΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌ sftp /usr/libexec/openssh/sftp-ΡΠ΅ΡΠ²Π΅Ρ
ΠΠΊΡΠΈΠ²ΠΈΡΠ°ΡΡΠ΅ ΡΠ° ΠΈ ΡΡΠ°ΡΡΡΠ²Π°ΡΡΠ΅ ΡΠ° ΡΠΈΡΡΠ΅ΠΌΡΠΊΠ°ΡΠ° Π΅Π΄ΠΈΠ½ΠΈΡΠ°: 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 ΠΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ ΠΊΠΎΡΠ΅Π½ # ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ /run/host/run Π½Π°ΠΌΠ΅ΡΡΠΎ /run Π·Π° ΡΠ°Π±ΠΎΡΠ° ΠΎΠ΄ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ ProxyCommand socat - UNIX-CLIENT: / run/ host/run/sshd.sock # ΠΠ°ΡΠ΅ΠΊΠ° Π΄ΠΎ ΠΊΠΎΠΏΡΠ΅ΡΠΎ SSH IdentityFile ~/.ssh/keys/localroot # ΠΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° TTY Π·Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½Π°ΡΠ° ΡΠΊΠΎΠ»ΠΊΠ° RequestTTY Π΄Π° # ΠΡΡΡΡΠ°Π½ΠΈ Π½Π΅ΠΏΠΎΡΡΠ΅Π±Π΅Π½ ΠΈΠ·Π»Π΅Π· LogLevel QUIET
ΠΠΎ ΡΠ΅Π³Π°ΡΠ½Π°ΡΠ° ΡΠΎΡΠΌΠ°, ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΎΡΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡΠΊΠΎ ΠΈΠΌΠ΅ ΡΠ΅Π³Π° ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΊΠ°ΠΊΠΎ 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) Π³ΡΡΠΏΠΈ=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 ΡΠ°ΠΌΠΎ Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ ΠΊΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° Π·Π³ΠΎΠ»Π΅ΠΌΠ΅Π½ΠΈ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ (Π²ΠΎ Π½Π°ΡΠΈΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠΌΠ΅ Π½Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ). ΠΠΎ /etc/systemd/system/sshd-unix.socket Π΄ΠΎΠ΄Π°Π΄Π΅ΡΠ΅: [Socket] ... SocketUser=adminusername SocketGroup=adminusername SocketMode=0660
ΠΠ·Π²ΠΎΡ: opennet.ru