FAQ
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
SSH-Frontiรจre๊ฐ ์ ํํ ๋ฌด์์ธ๊ฐ์?
Rust๋ก ์์ฑ๋ ๋์ฒด ๋ก๊ทธ์ธ ์
ธ์
๋๋ค. ์๋น์ค ๊ณ์ ์ /etc/passwd์์ /bin/bash ๋์ ์ค์น๋ฉ๋๋ค. ๊ฐ SSH ์ฐ๊ฒฐ์ด SSH-Frontiรจre๋ฅผ ๊ฑฐ์น๋ฉฐ, TOML ๊ตฌ์ฑ ํ์ผ์ ๋ฐ๋ผ ๋ช
๋ น์ ๊ฒ์ฆํ ํ ์คํํฉ๋๋ค.
SSH ๋ฐฐ์ค์ฒ์ธ๊ฐ์?
์๋๋๋ค. SSH ๋ฐฐ์ค์ฒ(Teleport, Boundary)์ ๋ค๋ฅธ ์๋ฒ๋ก ์ฐ๊ฒฐ์ ์ค๊ณํ๋ ํ๋ก์์ ๋๋ค. SSH-Frontiรจre๋ ์ค๊ณ๋ฅผ ํ์ง ์์ผ๋ฉฐ, ์ค์น๋ ์๋ฒ์์ ์คํ๋๋ ๊ฒ์ ์ ์ดํฉ๋๋ค.
๋ฐฐ์ค์ฒ์ ์ฌ๋์ ์๋ฒ ํ ์ ๊ทผ์ ๊ด๋ฆฌํฉ๋๋ค. SSH-Frontiรจre๋ ์๋น์ค ๊ณ์ (CI ๋ฌ๋, AI ์์ด์ ํธ, ์คํฌ๋ฆฝํธ)์ ์๋ฒ ๋ด ํน์ ์ก์ ์ ๊ทผ์ ๊ด๋ฆฌํฉ๋๋ค.
sudo๋ฅผ ๋์ฒดํ๋์?
์๋๋๋ค, ์ํธ ๋ณด์์ ์
๋๋ค. SSH-Frontiรจre๋ SSH ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ์ ์๋ ๊ฒ์ ์ ์ดํฉ๋๋ค(์ 2๊ณ์ธต). sudo๋ ์คํ์ ํ์ํ ์์คํ
๊ถํ์ ์ ์ดํฉ๋๋ค(์ 3๊ณ์ธต). ๋์ ๊ฒฐํฉํ๋ฉด ์ฌ์ธต ๋ฐฉ์ด๊ฐ ๋ฉ๋๋ค.
TOML ํ์ผ ์์ด ์ฌ์ฉํ ์ ์๋์?
์๋๋๋ค. ๊ตฌ์ฑ ํ์ผ์ ํ์์ ๋๋ค. ์ด๊ฒ์ ์๋๋ ๊ฒ์ ๋๋ค: ๋ชจ๋ ๊ฒ์ด ๋ช ์์ ์ด๊ณ , ์ ์ธ์ ์ด๋ฉฐ, ๊ฐ์ฌ ๊ฐ๋ฅํฉ๋๋ค. ํ์ฉ ๋ชจ๋๋ ์๊ณ , ์ ธ๋ก์ ํด๋ฐฑ๋ ์์ต๋๋ค.
๊ตฌ์ฑ์ด ์๋ชป๋๋ฉด ์ด๋ป๊ฒ ๋๋์?
SSH-Frontiรจre๋ ์์ ์ ๊ตฌ์ฑ์ ์์ ํ ๊ฒ์ฆํฉ๋๋ค(fail-fast). ๊ตฌ์ฑ์ด ์๋ชป๋๋ฉด ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ ์ฝ๋ 129์ ํจ๊ป ๋ช ์์ ์ธ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ๋ก๊ทธ์ ๋จ๊ธฐ๊ณ ์ค๋จ๋ฉ๋๋ค. ์ด๋ค ๋ช ๋ น๋ ์คํ๋์ง ์์ต๋๋ค. SSH ํด๋ผ์ด์ธํธ๋ ์ค๋ฅ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ ๋ ๋ณด์ง ๋ชปํฉ๋๋ค โ ์๋น์ค๊ฐ ์ฌ์ฉ ๋ถ๊ฐ๋ฅํ๋ค๋ ๊ฒ๋ง ์ ์ ์์ต๋๋ค. ์ง๋จ ์ ๋ณด๋ ์๋ฒ ์ธก์ ๋จ์ต๋๋ค.
์ํ ์์ด ๊ตฌ์ฑ์ ํ ์คํธํ ์ ์์ต๋๋ค:
ssh-frontiere --check-config --config /etc/ssh-frontiere/config.toml
๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ์ง๋จํ๋์?
์ฌ๋ฌ ๋๊ตฌ๊ฐ ์ ๊ณต๋ฉ๋๋ค:
- ๊ตฌ์ฑ ๊ฒ์ฆ:
ssh-frontiere --check-config๋ก ๋ฌธ๋ฒ๊ณผ ์ผ๊ด์ฑ ๊ฒ์ฆ help๋ช ๋ น: ํด๋ผ์ด์ธํธ์ ์ ํจ ์์ค์์ ์ ๊ทผ ๊ฐ๋ฅํ ์ก์ ํ์list๋ช ๋ น: ์งง์ ๋ฒ์ (๋๋ฉ์ธ + ์ก์ )- JSON ๋ก๊ทธ: ์คํ๋๊ฑฐ๋ ๊ฑฐ๋ถ๋ ๋ชจ๋ ๋ช ๋ น์ด ํ์์คํฌํ, ๋ช ๋ น, ์ธ์, ์์ค, ๊ฒฐ๊ณผ์ ํจ๊ป ๊ธฐ๋ก๋จ
- ์ข ๋ฃ ์ฝ๋: 0 = ์ฑ๊ณต, 128 = ๊ฑฐ๋ถ, 129 = ๊ตฌ์ฑ ์ค๋ฅ, 130 = ํ์์์, 131 = ์์ค ๋ถ์กฑ, 132 = ํ๋กํ ์ฝ ์ค๋ฅ, 133 = body stdin ์กฐ๊ธฐ ์ข ๋ฃ
AI ์์ด์ ํธ๊ฐ ์ฌ์ฉํ ์ ์๋์?
๋ค, ์ด๊ฒ์ ์ผ๊ธ ์ฌ์ฉ ์ฌ๋ก์
๋๋ค. help์ list ๋ช
๋ น์ ์์ด์ ํธ๊ฐ ์ง์ ํ์ฑํ ์ ์๋ ๊ตฌ์กฐํ๋ JSON์ ๋ฐํํฉ๋๋ค. ํค๋ ํ๋กํ ์ฝ(์ ๋์ฌ +, #, $, >)์ ์ฌ๋์ ๊ฐ๋
์ฑ์ ํด์น์ง ์์ผ๋ฉด์ ๊ธฐ๊ณ๊ฐ ์ฝ์ ์ ์๋๋ก ์ค๊ณ๋์์ต๋๋ค.
์์ธํ ๊ตฌ์ฑ์ AI ์์ด์ ํธ ๊ฐ์ด๋๋ฅผ ์ฐธ์กฐํ์ธ์.
์์ค ์ฝ๋์ ์์กด์ฑ์ ๋ฌด์์ธ๊ฐ์?
์ง์ ์์กด์ฑ 3๊ฐ:
| ํฌ๋ ์ดํธ | ์ฉ๋ |
|---|---|
serde + serde_json | JSON ์ง๋ ฌํ (๋ก๊ทธ, ์๋ต) |
toml | ๊ตฌ์ฑ ๋ก๋ |
async ๋ฐํ์ ์์, Tokio ์์, ์น ํ๋ ์์ํฌ ์์. ์ ์ ๋ฐ์ด๋๋ฆฌ ํฌ๊ธฐ๋ ์ฝ 1 Mo.
์ Go/Python์ด ์๋๋ผ Rust์ธ๊ฐ์?
- ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ: ๋ฒํผ ์ค๋ฒํ๋ก ์์, use-after-free ์์ โ ๋ณด์ ์ปดํฌ๋ํธ์ ๊ฒฐ์ ์
- ์ ์ ๋ฐ์ด๋๋ฆฌ: musl๋ก ์ปดํ์ผ, ์์คํ ์์กด์ฑ ์์
- ์ฑ๋ฅ: ๋ฐ๋ฆฌ์ด ๋จ์ ์์, ๋ฐํ์ ์์
unsafe์์: Cargo ๋ฆฐํธ๋ก ๊ธ์ง (unsafe_code = "deny")
์ YAML์ด๋ JSON์ด ์๋๋ผ TOML์ธ๊ฐ์?
- TOML: ์ฝ๊ธฐ ์ฌ์, ํ์ ์ง์ , ์ฃผ์, Rust ํ์ค, ์ ์๋ฏธํ ๋ค์ฌ์ฐ๊ธฐ ์์
- YAML: ์ ์๋ฏธํ ๋ค์ฌ์ฐ๊ธฐ๊ฐ ์ค๋ฅ์ ์์ธ, ์ํํ ์๋ฌต์ ํ์
(
on/offโ ๋ถ๋ฆฌ์ธ) - JSON: ์ฃผ์ ์์, ์ฅํฉํจ, ์ฌ๋์ ๊ตฌ์ฑ์ ์ํด ์ค๊ณ๋์ง ์์
์ด ์ ํ์ ADR 0001์ ๋ฌธ์ํ๋์ด ์์ต๋๋ค.
ํ ํฐ ์ธ์ฆ์ ์ด๋ป๊ฒ ์๋ํ๋์?
๋ ๊ฐ์ง ๋ชจ๋:
- ๋จ์ ๋ชจ๋ (
challenge_nonce = false): ํด๋ผ์ด์ธํธ๊ฐSHA-256(secret)์ ๊ณ์ฐํ์ฌ proof๋ก ์ ์ก - ๋
ผ์ค ๋ชจ๋ (
challenge_nonce = true): ์๋ฒ๊ฐ ๋ ผ์ค๋ฅผ ์ ์ก, ํด๋ผ์ด์ธํธ๊ฐSHA-256(XOR_encrypt(secret || nonce, secret))์ ๊ณ์ฐ
๋ ผ์ค ๋ชจ๋๋ ์ฌ์ฌ์ฉ ๊ณต๊ฒฉ์ ๋ฐฉ์งํฉ๋๋ค: ๋ ผ์ค ๋๋ถ์ ๊ฐ proof๊ฐ ๊ณ ์ ํฉ๋๋ค.
์ฌ๋ฌ SSH ํค๋ฅผ ์ฌ์ฉํ ์ ์๋์?
๋ค. authorized_keys์ ๊ฐ ํค์ ๊ณ ์ ํ --level์ด ์์ต๋๋ค. ๋ค๋ฅธ ์์ค์ ์ฌ๋ฌ ํค๊ฐ ๊ณต์กดํ ์ ์์ต๋๋ค:
command="/usr/local/bin/ssh-frontiere --level=read",restrict ssh-ed25519 AAAA... monitoring
command="/usr/local/bin/ssh-frontiere --level=ops",restrict ssh-ed25519 AAAA... runner-ci
command="/usr/local/bin/ssh-frontiere --level=admin",restrict ssh-ed25519 AAAA... admin
์๋ต ํ์์ ์ด๋ค๊ฐ์?
ํ์ค ์ถ๋ ฅ๊ณผ ์ค๋ฅ ์ถ๋ ฅ์ ์คํธ๋ฆฌ๋ฐ์ผ๋ก ์ ์ก(์ ๋์ฌ >>์ >>!)๋ ํ, ํ ์ค์ ์ต์ข
JSON ์๋ต(์ ๋์ฌ >>>)์ด ์ด์ด์ง๋๋ค:
>> hello from ssh-frontiere
>>> {"command":"test hello","status_code":0,"status_message":"executed","stdout":null,"stderr":null}
- ์ต์ข
JSON์์
stdout/stderr=null: ์ถ๋ ฅ์ด ์คํธ๋ฆฌ๋ฐ์ผ๋ก ์ ์ก๋์์ status_code= 0: ์ฑ๊ณต (์์ ํ๋ก์ธ์ค์ ์ข ๋ฃ ์ฝ๋ ํจ์ค์ค๋ฃจ)
SSH-Frontiรจre๋ฅผ ์ด๋ป๊ฒ ์ ๋ฐ์ดํธํ๋์?
- ์ ๋ฒ์ ์ปดํ์ผ (
make release) - ์๋ฒ์ ๋ฐ์ด๋๋ฆฌ ๋ณต์ฌ (
scp) - ํ์ธ (
ssh user@serveur+help)
๋ฐ์ดํฐ ๋ง์ด๊ทธ๋ ์ด์ ์์, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ์์. TOML ํ์ผ์ git์ผ๋ก ๋ฒ์ ๊ด๋ฆฌ ๊ฐ๋ฅํฉ๋๋ค.
์ด๋ป๊ฒ ๊ธฐ์ฌํ๋์?
๊ธฐ์ฌ ๊ฐ์ด๋๋ฅผ ์ฐธ์กฐํ์ธ์. ์์ฝ: ์ด์ ์ด๊ธฐ, fork, TDD, pull request, ๋ น์ CI. AI ์์ฑ ๊ธฐ์ฌ๋ ์์ฉ๋ฉ๋๋ค.
์์ค ์ฝ๋๋ ์ด๋์์ ์ฐพ์ ์ ์๋์?
์์ค ์ฝ๋๋ GitHub ์ ์ฅ์์์ ํ์ธํ ์ ์์ต๋๋ค. ๋ผ์ด์ ์ค EUPL-1.2.