Post

๐Ÿ› ๏ธ Termux์—์„œ tmux๋กœ ์ œ์–ดํ•˜๋Š” ์ž„์‹œ SSH ์„œ๋ฒ„ ์—ด๊ธฐ


1๏ธโƒฃ ๐Ÿงญ ๋‚ด๊ฐ€ ์ด ์ž‘์—…์„ ์‹œ์ž‘ํ•œ ์ด์œ 

๋‚˜๋Š” pi-server์— ์—ฐ๋™๊ณผ ์ ‘๊ทผ์„ฑ ๊ทธ๋ฆฌ๊ณ  ๋ณด์•ˆ์„ ์œ„ํ•ด ๋‚ด ํฐ์ด ์ผ์ข…์— ์ค‘๊ฐ€๊ฐ„์— ํ—ˆ๋ธŒ์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜๊ธธ ๋ฐ”๋žฌ๋‹ค. ๊ฐ€์žฅ ๊ฐ€๊นŒ์ด ์žˆ์œผ๋ฉด์„œ ๊ฐ€์žฅ ๋‚ด ๊ธฐ๊ธฐ๋“ค๊ณผ์˜ ์†Œํ†ต์ด ๋งŽ์€ ๊ธฐ๊ธฐ๊ฐ€ ์Šค๋งˆํŠธํฐ ์•„๋ผ ์ƒ๊ฐํ•ด ์ด๋Ÿฐ ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ Termux๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ, ํ•„์š”ํ•  ๋•Œ๋งŒ ์ž ๊น ์“ธ ์ˆ˜ ์žˆ๋Š” SSH ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ–ˆ๋‹ค. ํ•ญ์ƒ ์ผœ์ ธ ์žˆ๋Š” ์„œ๋ฒ„๊ฐ€ ์•„๋‹ˆ๋ผ, ๊ฐ™์€ Wi-Fi(LAN) ํ™˜๊ฒฝ์—์„œ๋งŒ ์ ‘์†ํ•˜๊ณ  ์‚ฌ์šฉ์ด ๋๋‚˜๋ฉด ๋ฐ”๋กœ ๋Œ ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋ฅผ ์›ํ–ˆ๋‹ค.


2๏ธโƒฃ ๐Ÿ› ๏ธ ์ž‘์—…ํ•œ๊ฑฐ ์ •๋ฆฌํ•œ ํŠœํ† ๋ฆฌ์–ผ


โœ… 1. Termux์— SSH ์„œ๋ฒ„์™€ tmux๋ฅผ ์„ค์น˜ํ•œ๋‹ค

pkg update pkg install openssh tmux

openssh โ†’ SSH ์„œ๋ฒ„(sshd)

tmux โ†’ sshd๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ด€๋ฆฌ ์ฝ˜์†”

์ด ์‹œ์ ๋ถ€ํ„ฐ ์ „์ œ๋Š” ํ•˜๋‚˜๋‹ค.

tmux โ‰  sshd sshd โ‰  tmux

์„œ๋กœ ์ƒ๋ช…์ฃผ๊ธฐ ๊ณต์œ  ์•ˆ ํ•œ๋‹ค. ์ด๊ฑธ ์„ž์–ด์„œ ์ƒ๊ฐํ•˜๋Š” ์ˆœ๊ฐ„๋ถ€ํ„ฐ ํ—ท๊ฐˆ๋ฆผ์ด ์‹œ์ž‘๋œ๋‹ค.


๐Ÿ” 2. SSH ๋น„๋ฐ€๋ฒˆํ˜ธ ์ธ์ฆ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ์„ค์ •ํ•œ๋‹ค

Termux์˜ SSH ์„œ๋ฒ„๋Š” ๊ธฐ๋ณธ ์‚ฌ์šฉ์ž(termux) ๊ธฐ์ค€์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค. ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ•œ ๋ฒˆ๋„ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋กœ๊ทธ์ธ ์ž์ฒด๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

passwd

์ด ๋‹จ๊ณ„๋Š” ์ดˆ๊ธฐ 1ํšŒ ํ•„์ˆ˜๋‹ค.


โš™๏ธ 3. sshd์˜ ์ƒ์กด ์ฃผ๊ธฐ(Lifecycle)๋ฅผ ์ •ํ™•ํžˆ ์ดํ•ดํ•˜๊ธฐ

์ด ๊ตฌ์„ฑ์ด ํ—ท๊ฐˆ๋ฆฌ๋Š” ์ด์œ ์˜ 90%๋Š” sshd์˜ ์ƒ์กด ์ฃผ๊ธฐ๋ฅผ ํ„ฐ๋ฏธ๋„ ํ”„๋กœ๊ทธ๋žจ์ฒ˜๋Ÿผ ์ฐฉ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์—ฌ๊ธฐ์„œ ๊ทธ ์ฐฉ๊ฐ์„ ์™„์ „ํžˆ ๋Š์–ด๋‚ด์•ผ ํ•œ๋‹ค.


๐Ÿ”ฅ sshd๋Š” โ€œ๋ช…๋ น์–ดโ€๊ฐ€ ์•„๋‹ˆ๋ผ โ€œ๋ฐ๋ชฌโ€์ด๋‹ค

sshd

์ด๊ฑธ ์‹คํ–‰ํ•˜๋Š” ์ˆœ๊ฐ„:

sshd๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋ฐ๋ชฌ ํ”„๋กœ์„ธ์Šค๋กœ ์ „ํ™˜๋œ๋‹ค

์‹คํ–‰ํ•œ ํ„ฐ๋ฏธ๋„๊ณผ์˜ ์—ฐ๊ฒฐ์ด ๋Š๊ธด๋‹ค

๋ถ€๋ชจ ์‰˜์ด ์‚ฌ๋ผ์ ธ๋„ ์‚ด์•„๋‚จ๋Š”๋‹ค

์ฆ‰,

์ƒํ™ฉ sshd ์ƒํƒœ

ํ„ฐ๋ฏธ๋„ ์ข…๋ฃŒ โŒ ์•ˆ ๊บผ์ง tmux ์„ธ์…˜ ์ข…๋ฃŒ โŒ ์•ˆ ๊บผ์ง ์•ฑ ํ™”๋ฉด ๋‹ซ๊ธฐ โŒ ์•ˆ ๊บผ์ง ํฐ ํ™”๋ฉด ๊บผ์ง โŒ ์•ˆ ๊บผ์ง

๋ช…์‹œ์ ์œผ๋กœ ์ฃฝ์ด์ง€ ์•Š๋Š” ํ•œ ๊ณ„์† ์‚ด์•„ ์žˆ๋‹ค.


๐ŸงŸ โ€œ๋‚˜ ๋ถ„๋ช… tmux ๋‹ซ์•˜๋Š”๋ฐ SSH ์ ‘์†์ด ๋˜๋„ค?โ€์˜ ์ •์ฒด

์ด ์ƒํ™ฉ์€ ๋ฒ„๊ทธ๋„ ์•„๋‹ˆ๊ณ , Termux ๋ฌธ์ œ๋„ ์•„๋‹ˆ๋‹ค. ์ •์ƒ ๋™์ž‘์ด๋‹ค.

tmux new -s test sshd exit

์ด๋ ‡๊ฒŒ ํ•ด๋„ sshd๋Š”:

pgrep -a sshd

โ†’ ๋ฉ€์ฉกํžˆ ์‚ด์•„ ์žˆ๋‹ค.

๐Ÿ‘‰ ์ด์œ ๋Š” ๊ฐ„๋‹จํ•˜๋‹ค. sshd๋Š” tmux์˜ ์ž์‹ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.


๐Ÿ” sshd์˜ ์ƒํƒœ ํ™•์ธ์€ โ€œํ”„๋กœ์„ธ์Šค ๊ธฐ์ค€โ€์œผ๋กœ๋งŒ ํ•œ๋‹ค

ํ„ฐ๋ฏธ๋„ ์ƒํƒœ โŒ tmux ์„ธ์…˜ ์ƒํƒœ โŒ Shortcut ์‹คํ–‰ ์—ฌ๋ถ€ โŒ

์˜ค์ง ํ”„๋กœ์„ธ์Šค๋งŒ ๋ณธ๋‹ค.

pgrep -a sshd

๊ฒฐ๊ณผ ์žˆ์Œ โ†’ ์„œ๋ฒ„ ์‚ด์•„ ์žˆ์Œ

๊ฒฐ๊ณผ ์—†์Œ โ†’ ์„œ๋ฒ„ ๊บผ์ง

์ด ๊ธฐ์ค€ ํ•˜๋‚˜๋งŒ ๋ฏฟ์œผ๋ฉด ๋œ๋‹ค.


โ˜ ๏ธ sshd ์ข…๋ฃŒ๋Š” ๋ฐ˜๋“œ์‹œ ์ง์ ‘ ํ•œ๋‹ค

pkill sshd

๋˜๋Š” PID ์žก์•„์„œ:

kill

์ด๊ฑธ ์•ˆ ํ•˜๋ฉด:

LAN ์•ˆ์—์„œ ๊ณ„์† ์—ด๋ ค ์žˆ์Œ

ํฌํŠธ ๊ณ„์† ๋ฆฌ์Šจ ์ค‘

โ€œ์ž„์‹œ ์„œ๋ฒ„โ€๋ผ๋Š” ์ „์ œ๊ฐ€ ๋ฌด๋„ˆ์ง

๊ทธ๋ž˜์„œ ์ด ๊ธ€ ์ „์ฒด ๊ตฌ์กฐ๊ฐ€ โ€œ์ž๋™ ์ข…๋ฃŒโ€๊ฐ€ ์•„๋‹ˆ๋ผ โ€œ๋ช…์‹œ์  ์ข…๋ฃŒโ€๋กœ ์„ค๊ณ„๋œ ์ด์œ ๋‹ค.


๐Ÿงฉ 4. tmux์˜ ์—ญํ• ์„ ๋‹ค์‹œ ์ •ํ™•ํžˆ ์ •์˜ํ•œ๋‹ค

tmux๋Š” ๋”ฑ ํ•˜๋‚˜๋‹ค.

sshd๋ฅผ ์ผœ๊ณ  / ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ๊ด€๋ฆฌ์šฉ ํ„ฐ๋ฏธ๋„

๊ทธ ์ด์ƒ๋„ ์ดํ•˜๋„ ์•„๋‹ˆ๋‹ค.


tmux์—์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ

tmux new -s ssh-admin sshd ip addr show

sshd ์‹คํ–‰

IP ํ™•์ธ

๋กœ๊ทธ ํ™•์ธ


tmux์—์„œ ๊ธฐ๋Œ€ํ•˜๋ฉด ์•ˆ ๋˜๋Š” ๊ฒƒ

sshd ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ โŒ

์ž๋™ ์ข…๋ฃŒ โŒ

์ƒํƒœ ํŒ๋‹จ โŒ

Ctrl + b โ†’ d

์ด๊ฑด tmux์—์„œ ๋‚˜๊ฐ€๋Š” ๊ฒƒ์ด์ง€ sshd๋ฅผ ๋„๋Š” ํ–‰์œ„๊ฐ€ ์•„๋‹ˆ๋‹ค.


๐Ÿšซ 5. ์™œ ์ž๋™ ์ข…๋ฃŒ ๊ตฌ์กฐ๋ฅผ ๋ฒ„๋ ธ๋Š”๊ฐ€

tmux hook ๊ฐ™์€ ๊ฑธ ์“ฐ๋ฉด ์ด๋Ÿฐ ์ƒ๊ฐ์ด ๋“ ๋‹ค.

โ€œ์„ธ์…˜ ๋‹ซํžˆ๋ฉด ์•Œ์•„์„œ sshd๋„ ๊บผ์ง€๊ฒŒ ํ•˜๋ฉด ๋˜์ง€ ์•Š๋‚˜?โ€

์ด๋ก ์ƒ์€ ๊ฐ€๋Šฅํ•˜๋‹ค. ํ˜„์‹ค์€ ๋‹ค๋ฅด๋‹ค.


tmux hook์ด ์œ„ํ—˜ํ•œ ์ด์œ 

pane ์ข…๋ฃŒ โ‰  session ์ข…๋ฃŒ

detached ์ƒํƒœ์—์„œ๋Š” ํ›… ์•ˆ ํƒ€๋Š” ๊ฒฝ์šฐ ์žˆ์Œ

SSH ์ ‘์† ์ค‘์ธ ์„ธ์…˜์ด ์žˆ์–ด๋„ ํ›…์ด ๋จผ์ € ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Œ

์–ธ์ œ ๊บผ์งˆ์ง€ ์‚ฌ๋žŒ์ด ์˜ˆ์ธกํ•˜๊ธฐ ์–ด๋ ค์›€

๊ฒฐ๊ตญ ์ด๋Ÿฐ ์ƒํ™ฉ์ด ๋‚˜์˜จ๋‹ค.

โ€œ์™œ ์•ˆ ๊บผ์กŒ์ง€?โ€

โ€œ์™œ ๊ฐ‘์ž๊ธฐ ๋Š๊ฒผ์ง€?โ€

โ€œ์ง€๊ธˆ ์—ด๋ ค ์žˆ๋Š” ๊ฑฐ์•ผ, ์•„๋‹Œ ๊ฑฐ์•ผ?โ€

๐Ÿ‘‰ ์ž„์‹œ ์„œ๋ฒ„์—์„œ ์ด๊ฑด ์น˜๋ช…์ ์ด๋‹ค.


๐Ÿ“ฑ 6. Termux Shortcut ๊ธฐ๋ฐ˜์œผ๋กœ ์—ด๊ธฐ / ๋‹ซ๊ธฐ ์Šคํฌ๋ฆฝํŠธ ๋ถ„๋ฆฌ

๊ทธ๋ž˜์„œ ์ตœ์ข…์ ์œผ๋กœ ์„ ํƒํ•œ ๊ตฌ์กฐ๋Š” ์ด๊ฑฐ๋‹ค.

์‚ฌ๋žŒ์ด ์ง์ ‘ ์—ฐ๋‹ค ์‚ฌ๋žŒ์ด ์ง์ ‘ ๋‹ซ๋Š”๋‹ค ์ž๋™ ํŒ๋‹จ ์—†์Œ


๐Ÿ“‚ ์Šคํฌ๋ฆฝํŠธ ์œ„์น˜

~/.shortcuts/


โ–ถ๏ธ SSH ์„œ๋ฒ„ ์—ด๊ธฐ (ssh-open)

#!/data/data/com.termux/files/usr/bin/sh

SESSION=โ€sshdโ€

create session if not exists

tmux has-session -t โ€œ$SESSIONโ€ 2>/dev/null if [ $? -ne 0 ]; then tmux new-session -d -s โ€œ$SESSIONโ€ fi

run sshd inside that tmux session (no output is normal)

tmux send-keys -t โ€œ$SESSIONโ€ โ€œsshdโ€ C-m tmux send-keys -t โ€œ$SESSIONโ€ โ€œecho โ€˜IP:โ€™; ifconfig | awk โ€˜/inet / && $2 != "127.0.0.1" {print " ", $2}โ€™โ€ C-m

(optional) auto-attach when you run the shortcut

tmux attach -t โ€œ$SESSIONโ€


โน๏ธ SSH ์„œ๋ฒ„ ๋‹ซ๊ธฐ (ssh-close)

#!/data/data/com.termux/files/usr/bin/sh

SESSION=โ€sshdโ€

echo โ€œ๐Ÿ”’ SSHD ์ข…๋ฃŒ ์‹œํ€€์Šค ์‹œ์ž‘โ€

1) tmux ์„ธ์…˜ ์ข…๋ฃŒ (์žˆ์œผ๋ฉด)

if tmux has-session -t โ€œ$SESSIONโ€ 2>/dev/null; then echo โ€œ๐Ÿงจ tmux ์„ธ์…˜ โ€˜$SESSIONโ€™ ์ข…๋ฃŒโ€ tmux kill-session -t โ€œ$SESSIONโ€ else echo โ€œโ„น๏ธ tmux ์„ธ์…˜ โ€˜$SESSIONโ€™ ์—†์Œโ€ fi

2) sshd ์ข…๋ฃŒ (๋‚จ์•„์žˆ์œผ๋ฉด)

if pgrep -f sshd >/dev/null; then echo โ€œ๐Ÿ›‘ sshd ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒโ€ pkill sshd else echo โ€œโ„น๏ธ sshd ์ด๋ฏธ ๊บผ์งโ€ fi

echo โ€œโœ… ์ข…๋ฃŒ ์™„๋ฃŒโ€


๐Ÿ” 7. ์‹ค์ œ ์‚ฌ์šฉ ํ๋ฆ„ (์ƒ์กด ์ฃผ๊ธฐ ๊ธฐ์ค€)

  1. ๐Ÿ“ฑ ssh-open ์‹คํ–‰

  2. sshd ์ƒ์„ฑ๋จ (๋ฐ๋ชฌ)

  3. IP ํ™•์ธ

  4. ๐Ÿ’ป PC์—์„œ ์ ‘์†

ssh termux@192.168.x.x

  1. ์ž‘์—… ์ข…๋ฃŒ

  2. ๐Ÿ“ฑ ssh-close ์‹คํ–‰

  3. pgrep sshd โ†’ ๊ฒฐ๊ณผ ์—†์Œ = ์™„์ „ ์ข…๋ฃŒ


๐Ÿ“ 3๏ธโƒฃ ์ž‘์—… ํ›„๊ธฐ

์ด๋ฒˆ ์ž‘์—…์œผ๋กœ Termux์˜ shortcut์„ ํ†ตํ•ด ๋ฒ„ํŠผ ๋”ธ๊น์œผ๋กœ sshd๋ฅผ ์—ด์–ด ๊ฐ™์€ ๋„คํŠธ์›Œํฌ ์•ˆ์— ๊ธฐ๊ธฐ๋“ค์ด ์ ‘์†ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. ์†”์งํžˆ ์–ธ์  ๊ฐ€๋Š” ์ด๊ฒƒ๋„ cloudflared๊ธฐ๋ฐ˜์œผ๋กœ ์—ด๊ณ  ๋‹ซ๋Š”๊ฒƒ๋„ ๋งŒ๋“ค๊ฒƒ ๊ฐ™๋‹ค.(๊ตฐ๋Œ€๋ผ ๊ฐ™์€ ๋„คํŠธ์›Œํฌ๊ฐ€ ์‰ฝ์ง€์•„๋Š ;;)

This post is licensed under CC BY 4.0 by the author.