XNUMX๊ฐœ์›”๊ฐ„์˜ ๊ฐœ๋ฐœ ๋์— ์ œ์‹œ๋œ SSH 8.4 ๋ฐ SFTP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐœ๋ฐฉํ˜• ํด๋ผ์ด์–ธํŠธ ๋ฐ ์„œ๋ฒ„ ๊ตฌํ˜„์ธ OpenSSH 2.0 ๋ฆด๋ฆฌ์Šค์ž…๋‹ˆ๋‹ค.

์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ :

  • ๋ณด์•ˆ ๋ณ€๊ฒฝ ์‚ฌํ•ญ:
    • ssh-agent์—์„œ SSH ์ธ์ฆ์„ ์œ„ํ•ด ์ƒ์„ฑ๋˜์ง€ ์•Š์€ FIDO ํ‚ค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ(ํ‚ค ID๋Š” "ssh:" ๋ฌธ์ž์—ด๋กœ ์‹œ์ž‘ํ•˜์ง€ ์•Š์Œ) SSH ํ”„๋กœํ† ์ฝœ์— ์‚ฌ์šฉ๋œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”์‹œ์ง€๊ฐ€ ์„œ๋ช…๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ์‚ฌํ•ญ์œผ๋กœ ์ธํ•ด ssh-agent๊ฐ€ FIDO ํ‚ค๊ฐ€ ์žˆ๋Š” ์›๊ฒฉ ํ˜ธ์ŠคํŠธ๋กœ ๋ฆฌ๋””๋ ‰์…˜๋˜์–ด ์›น ์ธ์ฆ ์š”์ฒญ์— ๋Œ€ํ•œ ์„œ๋ช…์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์ด๋Ÿฌํ•œ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ฐจ๋‹จํ•˜๋Š” ๊ฒƒ์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์—ญ์˜ ๊ฒฝ์šฐ, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ SSH ์š”์ฒญ์— ์„œ๋ช…ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๋Š” ์ฒ˜์Œ์— ์ œ์™ธ๋จ). ํ‚ค ์‹๋ณ„์ž์— "ssh:" ์ ‘๋‘์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค).
    • ssh-keygen์˜ ์ƒ์ฃผ ํ‚ค ์ƒ์„ฑ์—๋Š” FIDO 2.1 ์‚ฌ์–‘์— ์„ค๋ช…๋œ credProtect ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ง€์›์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์€ ํ† ํฐ์—์„œ ์ƒ์ฃผ ํ‚ค๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— PIN์„ ์š”๊ตฌํ•˜์—ฌ ํ‚ค์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๋ณดํ˜ธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์ž ์žฌ์ ์ธ ํ˜ธํ™˜์„ฑ ๋ณ€๊ฒฝ ์‚ฌํ•ญ:
    • FIDO/U2F๋ฅผ ์ง€์›ํ•˜๋ ค๋ฉด libfido2 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „ 1.5.0 ์ด์ƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด์ „ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์€ ๋ถ€๋ถ„์ ์œผ๋กœ ๊ตฌํ˜„๋˜์—ˆ์ง€๋งŒ ์ด ๊ฒฝ์šฐ ์ฃผ๋ฏผ ํ‚ค, PIN ์š”์ฒญ, ์—ฌ๋Ÿฌ ํ† ํฐ ์—ฐ๊ฒฐ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
    • ssh-keygen์—์„œ๋Š” ๋””์ง€ํ„ธ ์„œ๋ช… ํ™•์ธ์— ํ•„์š”ํ•œ ์ธ์ฆ์ž ๋ฐ์ดํ„ฐ๊ฐ€ ํ™•์ธ ์ •๋ณด ํ˜•์‹์— ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ FIDO ํ‚ค ์ƒ์„ฑ ์‹œ ์„ ํƒ์ ์œผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
    • OpenSSH๊ฐ€ FIDO ํ† ํฐ์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•ด ๋ ˆ์ด์–ด์™€ ์ƒํ˜ธ ์ž‘์šฉํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” API๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    • OpenSSH์˜ ํœด๋Œ€์šฉ ๋ฒ„์ „์„ ๋นŒ๋“œํ•  ๋•Œ ์ด์ œ automake๋Š” ๊ตฌ์„ฑ ์Šคํฌ๋ฆฝํŠธ์™€ ๊ทธ์— ์ˆ˜๋ฐ˜๋˜๋Š” ๋นŒ๋“œ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๊ฒŒ์‹œ๋œ ์ฝ”๋“œ tar ํŒŒ์ผ์—์„œ ๋นŒ๋“œํ•˜๋Š” ๊ฒฝ์šฐ ๊ตฌ์„ฑ์„ ์žฌ์ƒ์„ฑํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค).
  • SSH ๋ฐ ssh-keygen์—์„œ PIN ํ™•์ธ์ด ํ•„์š”ํ•œ FIDO ํ‚ค์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. PIN์œผ๋กœ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด "verify-required" ์˜ต์…˜์ด ssh-keygen์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์„œ๋ช… ์ƒ์„ฑ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— ์‚ฌ์šฉ์ž์—๊ฒŒ PIN ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์ž‘์—…์„ ํ™•์ธํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  • sshd์—์„œ๋Š” "verify-required" ์˜ต์…˜์ดauthorized_keys ์„ค์ •์— ๊ตฌํ˜„๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ํ† ํฐ ์ž‘์—… ์ค‘์— ์‚ฌ์šฉ์ž์˜ ์กด์žฌ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. FIDO ํ‘œ์ค€์€ ์ด๋Ÿฌํ•œ ํ™•์ธ์„ ์œ„ํ•œ ์—ฌ๋Ÿฌ ์˜ต์…˜์„ ์ œ๊ณตํ•˜์ง€๋งŒ ํ˜„์žฌ OpenSSH๋Š” PIN ๊ธฐ๋ฐ˜ ํ™•์ธ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • sshd ๋ฐ ssh-keygen์—๋Š” FIDO Webauthn ํ‘œ์ค€์„ ์ค€์ˆ˜ํ•˜๋Š” ๋””์ง€ํ„ธ ์„œ๋ช… ํ™•์ธ ์ง€์›์ด ์ถ”๊ฐ€๋˜์–ด ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ FIDO ํ‚ค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • SSH์˜ CertificateFile ์„ค์ •์—์„œ
    ControlPath, IdentityAgent, IdentityFile, LocalForward ๋ฐ
    RemoteForward๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด "${ENV}" ํ˜•์‹์œผ๋กœ ์ง€์ •๋œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ssh ๋ฐ ssh-agent์—๋Š” ssh-askpass ํ˜ธ์ถœ์„ ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” $SSH_ASKPASS_REQUIRE ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ssh์˜ AddKeysToAgent ์ง€์‹œ๋ฌธ์— ์žˆ๋Š” ssh_config์— ํ‚ค์˜ ์œ ํšจ ๊ธฐ๊ฐ„์„ ์ œํ•œํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ง€์ •๋œ ์ œํ•œ์ด ๋งŒ๋ฃŒ๋˜๋ฉด ํ‚ค๋Š” ssh-agent์—์„œ ์ž๋™์œผ๋กœ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค.
  • scp ๋ฐ sftp์—์„œ "-A" ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด์ œ ssh-agent๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ scp ๋ฐ sftp๋กœ์˜ ๋ฆฌ๋””๋ ‰์…˜์„ ๋ช…์‹œ์ ์œผ๋กœ ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋ฆฌ๋””๋ ‰์…˜์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค).
  • ํ˜ธ์ŠคํŠธ ํ‚ค ์ด๋ฆ„์„ ์ง€์ •ํ•˜๋Š” SSH ์„ค์ •์— '%k' ๋Œ€์ฒด์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ‚ค๋ฅผ ๋ณ„๋„์˜ ํŒŒ์ผ(์˜ˆ: "UserKnownHostsFile ~/.ssh/known_hosts.d/%k")์— ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‚ญ์ œ๋  stdin์—์„œ ํ‚ค๋ฅผ ์ฝ์œผ๋ ค๋ฉด "ssh-add -d -" ์ž‘์—…์„ ์‚ฌ์šฉํ•˜๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • sshd์—์„œ๋Š” ์—ฐ๊ฒฐ ์ •๋ฆฌ ํ”„๋กœ์„ธ์Šค์˜ ์‹œ์ž‘๊ณผ ๋์ด ๋กœ๊ทธ์— ๋ฐ˜์˜๋˜๋ฉฐ MaxStartups ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ทœ์ œ๋ฉ๋‹ˆ๋‹ค.

OpenSSH ๊ฐœ๋ฐœ์ž๋“ค์€ ๋˜ํ•œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ SHA-1 ํ•ด์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๊ณง ํ๊ธฐ๋  ๊ฒƒ์ด๋ผ๊ณ  ํšŒ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํ™๋ณด ํŠน์ • ์ ‘๋‘์‚ฌ๋ฅผ ์‚ฌ์šฉํ•œ ์ถฉ๋Œ ๊ณต๊ฒฉ์˜ ํšจ์œจ์„ฑ(์ถฉ๋Œ ์„ ํƒ ๋น„์šฉ์€ ์•ฝ 45๋‹ฌ๋Ÿฌ๋กœ ์ถ”์‚ฐ๋ฉ๋‹ˆ๋‹ค) ๋‹ค๊ฐ€์˜ค๋Š” ๋ฆด๋ฆฌ์Šค ์ค‘ ํ•˜๋‚˜์—์„œ๋Š” SSH ํ”„๋กœํ† ์ฝœ์— ๋Œ€ํ•œ ์›๋ž˜ RFC์— ์–ธ๊ธ‰๋˜์–ด ์žˆ๊ณ  ์‹ค์ œ๋กœ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๊ณต๊ฐœ ํ‚ค ๋””์ง€ํ„ธ ์„œ๋ช… ์•Œ๊ณ ๋ฆฌ์ฆ˜ "ssh-rsa"๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค(์‚ฌ์šฉ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด). ์‹œ์Šคํ…œ์— ssh-rsa๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ "-oHostKeyAlgorithms=-ssh-rsa" ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ssh๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

OpenSSH์—์„œ ์ƒˆ๋กœ์šด ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์›ํ™œํ•˜๊ฒŒ ์ „ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ UpdateHostKeys ์„ค์ •์„ ํ™œ์„ฑํ™”ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋ณด๋‹ค ์•ˆ์ •์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์ž๋™ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์— ๊ถŒ์žฅ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์—๋Š” 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

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€