8.7๊ฐ์ ๊ฐ์ ๊ฐ๋ฐ ๋์ SSH 2.0 ๋ฐ SFTP ํ๋กํ ์ฝ์ ํตํ ์์ ์ ์ํ ํด๋ผ์ด์ธํธ ๋ฐ ์๋ฒ์ ๊ฐ๋ฐฉํ ๊ตฌํ์ธ OpenSSH XNUMX์ด ์ถ์๋์์ต๋๋ค.
์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ :
- ๊ธฐ์กด SCP/RCP ํ๋กํ ์ฝ ๋์ SFTP ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ์คํ์ ์ธ ๋ฐ์ดํฐ ์ ์ก ๋ชจ๋๊ฐ scp์ ์ถ๊ฐ๋์์ต๋๋ค. SFTP๋ ๋ณด๋ค ์์ธก ๊ฐ๋ฅํ ์ด๋ฆ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๊ณ ๋ค๋ฅธ ํธ์คํธ ์ธก์์ glob ํจํด์ ์ ์ฒ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฏ๋ก ๋ณด์ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. scp์์ SFTP๋ฅผ ํ์ฑํํ๊ธฐ ์ํด "-s" ํ๋๊ทธ๊ฐ ์ ์๋์์ง๋ง ์์ผ๋ก๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ด ํ๋กํ ์ฝ๋ก ์ ํํ ๊ณํ์ ๋๋ค.
- sftp-server๋ scp์ ํ์ํ ~/ ๋ฐ ~user/ ๊ฒฝ๋ก๋ฅผ ํ์ฅํ๊ธฐ ์ํด SFTP ํ๋กํ ์ฝ์ ๋ํ ํ์ฅ์ ๊ตฌํํฉ๋๋ค.
- scp ์ ํธ๋ฆฌํฐ๋ ๋ ๊ฐ์ ์๊ฒฉ ํธ์คํธ(์: "scp ํธ์คํธ-a:/๊ฒฝ๋ก ํธ์คํธ-b:") ๊ฐ์ ํ์ผ์ ๋ณต์ฌํ ๋ ๋์์ ๋ณ๊ฒฝํ์ต๋๋ค. ์ด ์์ ์ ์ด์ "๋ฅผ ์ง์ ํ ๋์ฒ๋ผ ์ค๊ฐ ๋ก์ปฌ ํธ์คํธ๋ฅผ ํตํด ๊ธฐ๋ณธ์ ์ผ๋ก ์ํ๋ฉ๋๋ค. -3โ ํ๋๊ทธ. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์ฒซ ๋ฒ์งธ ํธ์คํธ์ ๋ถํ์ํ ์๊ฒฉ ์ฆ๋ช ์ ์ ๋ฌํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ณ ์ ธ(์์ค, ๋์ ๋ฐ ๋ก์ปฌ ์์คํ ์ธก)์์ ํ์ผ ์ด๋ฆ์ ์ผ์ค ํด์์ ํผํ ์ ์์ผ๋ฉฐ SFTP๋ฅผ ์ฌ์ฉํ๋ฉด ์๊ฒฉ ์ก์ธ์ค ์ ๋ชจ๋ ์ธ์ฆ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋น๋ํํ ๋ฉ์๋๋ฟ๋ง ์๋๋ผ ํธ์คํธ๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ์ด์ ๋์์ ๋ณต์ํ๊ธฐ ์ํด "-R" ์ต์ ์ด ์ถ๊ฐ๋์์ต๋๋ค.
- "-f" ํ๋๊ทธ์ ํด๋นํ๋ SSH์ ForkAfterAuthentication ์ค์ ์ ์ถ๊ฐํ์ต๋๋ค.
- "-n" ํ๋๊ทธ์ ํด๋นํ๋ StdinNull ์ค์ ์ ssh์ ์ถ๊ฐํ์ต๋๋ค.
- SessionType ์ค์ ์ด ssh์ ์ถ๊ฐ๋์์ต๋๋ค. ์ด๋ฅผ ํตํด "-N"(์ธ์ ์์) ๋ฐ "-s"(ํ์ ์์คํ ) ํ๋๊ทธ์ ํด๋นํ๋ ๋ชจ๋๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
- ssh-keygen์ ์ฌ์ฉํ๋ฉด ํค ํ์ผ์์ ํค ์ ํจ ๊ฐ๊ฒฉ์ ์ง์ ํ ์ ์์ต๋๋ค.
- sshsig ์๋ช ์ ์ผ๋ถ๋ก ์ ์ฒด ๊ณต๊ฐ ํค๋ฅผ ์ธ์ํ๊ธฐ ์ํด ssh-keygen์ "-Oprint-pubkey" ํ๋๊ทธ๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- ssh ๋ฐ sshd์์๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๋ชจ๋ ๋ฐ์ดํ, ๊ณต๋ฐฑ ๋ฐ ์ด์ค์ผ์ดํ ๋ฌธ์๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ ธ๊ณผ ์ ์ฌํ ๊ท์น์ ์ฌ์ฉํ๋ ๋ณด๋ค ์ ํ์ ์ธ ๊ตฌ์ฑ ํ์ผ ํ์๋ฅผ ์ฌ์ฉํ๋๋ก ์ด๋๋์์ต๋๋ค. ๋ํ ์ ํ์๋ ์ต์ ์์ ์ธ์ ์๋ต(์: DenyUsers ์ง์์ด๋ ๋ ์ด์ ๋น์ ๋ ์ ์์), ๋ซํ์ง ์์ ๋ฐ์ดํ, ์ฌ๋ฌ ๊ฐ์ = ๋ฌธ์ ์ง์ ๊ณผ ๊ฐ์ ์ด์ ๊ฐ์ ์ ๋ฌด์ํ์ง ์์ต๋๋ค.
- ํค๋ฅผ ํ์ธํ ๋ SSHFP DNS ๋ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ด์ ssh๋ ํน์ ์ ํ์ ๋์งํธ ์๋ช ์ด ํฌํจ๋ ๋ ์ฝ๋๋ฟ๋ง ์๋๋ผ ์ผ์นํ๋ ๋ชจ๋ ๋ ์ฝ๋๋ฅผ ํ์ธํฉ๋๋ค.
- ssh-keygen์์ -Ochallenge ์ต์ ์ ์ฌ์ฉํ์ฌ FIDO ํค๋ฅผ ์์ฑํ ๋ ์ด์ libfido2 ๋์ ๋ด์ฅ ๋ ์ด์ด๊ฐ ํด์ฑ์ ์ฌ์ฉ๋๋ฏ๋ก 32๋ฐ์ดํธ๋ณด๋ค ํฌ๊ฑฐ๋ ์์ ์ฑ๋ฆฐ์ง ์ํ์ค๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- sshd์์authorized_keys ํ์ผ์ Environment="..." ์ง์๋ฌธ์ ์ฒ๋ฆฌํ ๋ ์ด์ ์ฒซ ๋ฒ์งธ ์ผ์น ํญ๋ชฉ์ด ํ์ฉ๋๋ฉฐ ํ๊ฒฝ ๋ณ์ ์ด๋ฆ์ 1024๊ฐ๋ก ์ ํ๋ฉ๋๋ค.
OpenSSH ๊ฐ๋ฐ์๋ค์ ๋ํ ์ฃผ์ด์ง ์ ๋์ฌ๋ฅผ ์ฌ์ฉํ ์ถฉ๋ ๊ณต๊ฒฉ์ ํจ์จ์ฑ ์ฆ๊ฐ๋ก ์ธํด SHA-1 ํด์๋ฅผ ์ฌ์ฉํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ถํด์ ๋ํด ๊ฒฝ๊ณ ํ์ต๋๋ค(์ถฉ๋ ์ ํ ๋น์ฉ์ ์ฝ 50๋ง ๋ฌ๋ฌ๋ก ์ถ์ฐ๋ฉ๋๋ค). ๋ค์ ๋ฆด๋ฆฌ์ค์์๋ SSH ํ๋กํ ์ฝ์ ๋ํ ์๋ RFC์์ ์ธ๊ธ๋์์ผ๋ฉฐ ์ค์ ๋ก ๋๋ฆฌ ์ฌ์ฉ๋๋ ๊ณต๊ฐ ํค ๋์งํธ ์๋ช ์๊ณ ๋ฆฌ์ฆ "ssh-rsa"๋ฅผ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํํ ๊ณํ์ ๋๋ค.
์์คํ ์์ ssh-rsa ์ฌ์ฉ์ ํ ์คํธํ๋ ค๋ฉด "-oHostKeyAlgorithms=-ssh-rsa" ์ต์ ์ ์ฌ์ฉํ์ฌ ssh๋ฅผ ํตํด ์ฐ๊ฒฐ์ ์๋ํ ์ ์์ต๋๋ค. ๋์์, ๊ธฐ๋ณธ์ ์ผ๋ก "ssh-rsa" ๋์งํธ ์๋ช ์ ๋นํ์ฑํํ๋ค๊ณ ํด์ RSA ํค ์ฌ์ฉ์ด ์์ ํ ์ค๋จ๋๋ ๊ฒ์ ์๋๋๋ค. SSH ํ๋กํ ์ฝ์ SHA-1 ์ธ์๋ ๋ค๋ฅธ ํด์ ๊ณ์ฐ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉ์ ํ์ฉํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ํนํ, "ssh-rsa" ์ธ์๋ "rsa-sha2-256"(RSA/SHA256) ๋ฐ "rsa-sha2-512"(RSA/SHA512) ๋ฒ๋ค์ ๊ณ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์๋ก์ด ์๊ณ ๋ฆฌ์ฆ์ผ๋ก์ ์ํํ ์ ํ์ ์ํด OpenSSH์์๋ ์ด์ ์ UpdateHostKeys ์ค์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํํ์ฌ ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ค ์์ ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์๋ ์ ํํ ์ ์๋๋ก ํ์ต๋๋ค. ์ด ์ค์ ์ ์ฌ์ฉํ๋ฉด ํน์ ํ๋กํ ์ฝ ํ์ฅ์ด ํ์ฑํ๋ฉ๋๋ค.[์ด๋ฉ์ผ ๋ณดํธ]"๋ฅผ ์ฌ์ฉํ๋ฉด ์ธ์ฆ ํ ์๋ฒ๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ํธ์คํธ ํค์ ๋ํด ํด๋ผ์ด์ธํธ์ ์๋ฆด ์ ์์ต๋๋ค. ํด๋ผ์ด์ธํธ๋ ~/.ssh/known_hosts ํ์ผ์ ์ด๋ฌํ ํค๋ฅผ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ํธ์คํธ ํค๋ฅผ ์ ๋ฐ์ดํธํ๊ณ ์๋ฒ์์ ํค๋ฅผ ๋ ์ฝ๊ฒ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
UpdateHostKeys ์ฌ์ฉ์ ๋์ค์ ์ ๊ฑฐ๋ ์ ์๋ ๋ช ๊ฐ์ง ์ฃผ์ ์ฌํญ์ผ๋ก ์ ํ๋ฉ๋๋ค. ํค๋ UserKnownHostsFile์์ ์ฐธ์กฐ๋์ด์ผ ํ๋ฉฐ GlobalKnownHostsFile์์๋ ์ฌ์ฉ๋์ด์๋ ์ ๋ฉ๋๋ค. ํค๋ ํ๋์ ์ด๋ฆ์ผ๋ก๋ง ์กด์ฌํด์ผ ํฉ๋๋ค. ํธ์คํธ ํค ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๋ฉ๋๋ค. ํธ์คํธ ์ด๋ฆ์ผ๋ก ์๋ ค์ง ํธ์คํธ ๋ง์คํฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๋ฉ๋๋ค. verifyHostKeyDNS ์ค์ ์ ๋นํ์ฑํํด์ผ ํฉ๋๋ค. UserKnownHostsFile ๋งค๊ฐ๋ณ์๊ฐ ํ์ฑ ์ํ์ฌ์ผ ํฉ๋๋ค.
๋ง์ด๊ทธ๋ ์ด์
์ ๊ถ์ฅ๋๋ ์๊ณ ๋ฆฌ์ฆ์๋ RFC2 ๊ธฐ๋ฐ์ rsa-sha256-512/8332 RSA SHA-2(OpenSSH 7.2๋ถํฐ ์ง์๋๋ฉฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ๋จ), ssh-ed25519(OpenSSH 6.5๋ถํฐ ์ง์) ๋ฐ ecdsa-sha2-nistp256/384/521 ๊ธฐ๋ฐ์ด ํฌํจ๋ฉ๋๋ค. RFC5656 ECDSA(OpenSSH 5.7๋ถํฐ ์ง์).
์ถ์ฒ : opennet.ru