Skip to content

tot0rokr/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

212 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Integrated Bash Eenvironment

Quick Start

์„ธ ๊ฐ€์ง€ ์‚ฌ์šฉ ๋ฐฉ์‹์ด ์žˆ๋‹ค.

A. ํ™ˆ์— ์˜๊ตฌ ์ ์šฉ (์ผ๋ฐ˜ ๋ฐ์Šคํฌํ†ฑ/์„œ๋ฒ„)

repo๋ฅผ ๋ณ„๋„ ์œ„์น˜์— ๋‘๊ณ  dotfiles๋ฅผ $HOME์œผ๋กœ ๋ณต์‚ฌํ•œ๋‹ค.

git clone https://github.com/tot0rokr/dotfiles ~/.dotfiles
~/.dotfiles/install.sh      # dotfiles๋ฅผ $HOME์œผ๋กœ ๋ณต์‚ฌ (install.sh/enter.sh/README์€ ์ œ์™ธ)
exec bash                    # ์ƒˆ ์…ธ์—์„œ ์ ์šฉ

B. ํœด๋Œ€์šฉ HOME (๊ณต์œ  ๊ณ„์ •ยท์ž„์‹œ ์„œ๋ฒ„ โ€” ๊ณ„์ • ์•ˆ ๊ฑด๋“œ๋ฆผ)

์•„๋ฌด๊ฒƒ๋„ ๋ณต์‚ฌํ•˜์ง€ ์•Š๊ณ  $HOME(+XDG_*)๋งŒ ์ด ์ฒดํฌ์•„์›ƒ์œผ๋กœ ๋Œ๋ฆฐ๋‹ค. ๋˜๋Œ๋ฆฌ๊ธฐ๋Š” rm -rf ํ•˜๋‚˜.

git clone https://github.com/tot0rokr/dotfiles ~/.myhome
~/.myhome/enter.sh                 # ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ์ง„์ž… (exit๋กœ ์›๋ž˜ ์…ธ ๋ณต๊ท€)
~/.myhome/enter.sh tmux            # tmux๋กœ ๋ฐ”๋กœ (์ „์šฉ ์†Œ์ผ“)
ssh host -t '~/.myhome/enter.sh'   # SSH ์ ‘์† ์ฆ‰์‹œ ๋‚ด ํ™˜๊ฒฝ

๋„๊ตฌ ์„ค์น˜ (bootstrap)

์„ค์น˜ ํ›„ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ์…ธ์—์„œ ์ˆœ์„œ๋Œ€๋กœ. ํ•จ์ˆ˜๋Š” .bashrc.common์ด ์ •์˜ํ•œ๋‹ค.

bootstrap_system_tools   # sudo apt: build-essential/git/python3/ctags/wezterm... (root ํ•„์š”, Ubuntu/Debian)
bootstrap_user_tools     # ~/.local: nvim/fzf/rg/bat/eza/starship/lazygit/tmux/bell/noti... (root ๋ถˆํ•„์š”, cargo ๋นŒ๋“œ๋กœ ๋А๋ฆผ)
bootstrap_agents         # ~/agents: Claude/Codex/OpenCode/Gemini ํ•˜๋„ค์Šค (~/.claude ๋“ฑ ์‹ฌ๋งํฌ)

๊ฒ€์ฆ (Docker)

ํด๋ฆฐ ์ปจํ…Œ์ด๋„ˆ์—์„œ cloneโ†’installโ†’bootstrap ์ „ ๊ณผ์ •์„ ์ž๋™ ์‹คํ–‰ยท๊ฒ€์ฆํ•œ๋‹ค. exit 0์ด๋ฉด ํ†ต๊ณผ.

test/run.sh            # smoke (install/system/agents, ๋น ๋ฆ„)
test/run.sh --full     # ์ „์ฒด (+ bootstrap_user_tools, cargo ๋นŒ๋“œ๊นŒ์ง€)
test/run.sh --local    # ๋กœ์ปฌ ์›Œํ‚นํŠธ๋ฆฌ๋กœ ๊ฒ€์ฆ (push ์ „)

์—…๋ฐ์ดํŠธ

cd ~/.dotfiles && git pull
./install.sh --dry-run     # ๋ฐ”๋€” ๋‚ด์šฉ ๋ฏธ๋ฆฌ๋ณด๊ธฐ (์ง„์ž…์ ์€ ๋งˆ์ปค ์œ„์ชฝ๋งŒ ๋ณ€๊ฒฝ์œผ๋กœ ํ‘œ์‹œ)
./install.sh               # ์ ์šฉ (B ๋ฐฉ์‹์ด๋ฉด git pull๋งŒ์œผ๋กœ ์ถฉ๋ถ„)

install.sh๋Š” ๋จธ์‹  ๊ณ ์œ  ํŒŒ์ผ์„ ๋ฎ์–ด์“ฐ์ง€ ์•Š๋„๋ก ๋ณดํ˜ธํ•œ๋‹ค.

  • .bashrcยท.tmux.conf โ€” # Machine-specific settings below ๋งˆ์ปค ์•„๋ž˜(๋„ค ๊ฐœ์ธ ์„ค์ •ยท์‹œํฌ๋ฆฟ)๋Š” ๊ทธ๋Œ€๋กœ ๋ณด์กดํ•˜๊ณ  ์œ„์ชฝ ํ…œํ”Œ๋ฆฟ + ~/.*.common ๋กœ๋“œ๋ถ€๋งŒ ๊ฐฑ์‹ ํ•œ๋‹ค (๋ณ€๊ฒฝ ์‹œ <file>.bak.<ts> ๋ฐฑ์—…).
  • .wezterm.lua โ€” ํŒŒ์ผ ์ „์ฒด๊ฐ€ ๋จธ์‹  ์ „์šฉ SSH ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ผ ์ด๋ฏธ ์žˆ์œผ๋ฉด ์•ˆ ๋ฎ๊ณ  ๊ทธ๋Œ€๋กœ ๋‘”๋‹ค(์ฒซ ์„ค์น˜ ๋•Œ๋งŒ ์Šค์ผˆ๋ ˆํ†ค ๋ฐฐ์น˜).

๊ทธ ์™ธ dotfile(.bashrc.commonยท.wezterm.common.luaยท.fzf.bashยท.gitconfig ๋“ฑ)์€ repo๊ฐ€ ์†Œ์Šค๋ผ repo ๋ฒ„์ „์œผ๋กœ ๋ฎ์œผ๋‹ˆ --dry-run์œผ๋กœ ๋จผ์ € ํ™•์ธํ•˜๋Š” ๊ฑธ ๊ถŒ์žฅ.

๋จธ์‹  ๊ณ ์œ  ์„ค์ • / ์‹œํฌ๋ฆฟ

  • ์ด ๋จธ์‹  ์ „์šฉ ์„ค์ •์€ ~/.bashrcยท~/.tmux.conf์˜ "Machine-specific" ๊ตฌ์—ญ์— ์ ๊ณ  repo๋กœ ์ปค๋ฐ‹ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ์…ธ ์‹œํฌ๋ฆฟ์€ ~/.config/secrets.env(chmod 600)์— ๋‘๋ฉด .bashrc.common์ด ์ž๋™ ๋กœ๋“œํ•œ๋‹ค.
  • noti webhook์€ ~/.config/noti/webhook(chmod 600).

Step

Install fonts

Download Nerd Fonts

Install & Run

sudo apt update \
&& sudo apt install -y git \
&& \rm -f ~/.* \
; git clone https://github.com/tot0rokr/dotfiles.git ~ \
&& bash

์…ธ / tmux ์„ค์ • ๊ตฌ์กฐ

์ด์‹ ๊ฐ€๋Šฅํ•œ ๊ณตํ†ต๋ถ€์™€ ๋จธ์‹  ๊ณ ์œ ๋ถ€๋ฅผ ๋ถ„๋ฆฌํ•œ๋‹ค. .bashrc์™€ .tmux.conf๊ฐ€ ๊ฐ™์€ ํŒจํ„ด์„ ์“ด๋‹ค.

  • .bashrc / .tmux.conf โ€” ์ง„์ž…์ (์ถ”์ ๋จ). clone/install ์‹œ ~/๋กœ ๋ฐฐ์น˜๋˜๋Š” ๊ธฐ๋ณธ ํ…œํ”Œ๋ฆฟ์ด๋‹ค. ๊ฐ๊ฐ ~/.bashrc.common / ~/.tmux.common.conf๋ฅผ ๋ถˆ๋Ÿฌ์˜จ ๋’ค, ์ด ๋จธ์‹  ์ „์šฉ ์„ค์ •์„ ๊ทธ ์•„๋ž˜์— ์ง์ ‘ ์ ์–ด ์“ด๋‹ค.
  • .bashrc.common โ€” ์ด์‹ ๊ฐ€๋Šฅํ•œ ๊ณตํ†ต ์…ธ ์„ค์ •: history/PATH/prompt/git/completion, bootstrap_user_toolsยทbootstrap_system_toolsยทbootstrap_agents ๋“ฑ ์„ค์น˜ ํ•จ์ˆ˜, starship/zoxide init. ์‹œํฌ๋ฆฟ ์—†์Œ.
  • .tmux.common.conf โ€” ์ด์‹ ๊ฐ€๋Šฅํ•œ ๊ณตํ†ต tmux ์„ค์ •: ํ”Œ๋Ÿฌ๊ทธ์ธ(TPM)ยทํ‚ค๋ฐ”์ธ๋”ฉยทstatusยทํ…Œ๋งˆยทtruecolor. bell-bash ๊ฐ™์€ ๋„๊ตฌ ์—ฐ๋™์€ ~/.tmux.conf์— ๋จธ์‹  ๊ณ ์œ ๋กœ ๋‘”๋‹ค.

์ง„์ž…์  ํŒŒ์ผ(~/.bashrcยท~/.tmux.conf)์— ์ถ”๊ฐ€ํ•œ ๋จธ์‹  ๊ณ ์œ  ์„ค์ •์€ repo๋กœ ์ปค๋ฐ‹ํ•˜์ง€ ์•Š๋Š”๋‹ค(repo์˜ ์ง„์ž…์ ์€ ๊ธฐ๋ณธ ํ…œํ”Œ๋ฆฟ ์ƒํƒœ ์œ ์ง€). ์…ธ ์‹œํฌ๋ฆฟ์€ ~/.config/secrets.env(chmod 600)์— ๋‘๋ฉด .bashrc.common์ด ์ž๋™ ๋กœ๋“œํ•œ๋‹ค.

ํœด๋Œ€์šฉ HOME ์ง„์ž… (๋‚จ์˜ ๊ณ„์ • ์•ˆ ๊ฑด๋“œ๋ฆฌ๊ธฐ)

install.sh๋Š” ์ด ์„ค์ •์„ ๊ณ„์ •์— ์˜๊ตฌ ์ ์šฉํ•œ๋‹ค(ํ™ˆ์œผ๋กœ ๋ณต์‚ฌ). ๋ฐ˜๋ฉด ๊ณต์œ  ๊ณ„์ •์ด๋‚˜ ์ž„์‹œ ์„œ๋ฒ„์ฒ˜๋Ÿผ ๊ทธ ๊ณ„์ • ํ™˜๊ฒฝ์„ ๊ฑด๋“œ๋ฆฌ๊ณ  ์‹ถ์ง€ ์•Š์„ ๋•Œ๋Š” enter.sh๋ฅผ ์“ด๋‹ค.

enter.sh๋Š” ์•„๋ฌด๊ฒƒ๋„ ๋ณต์‚ฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋Œ€์‹  $HOME(๊ณผ XDG_*)์„ ์ด ์ฒดํฌ์•„์›ƒ์œผ๋กœ ๋Œ๋ฆฐ ๋’ค ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ์…ธ์„ ๋„์šด๋‹ค. bash์˜ ~ยทstartup ํŒŒ์ผยทgit --globalยทsshยทvimยทfzfยทstarshipยทzoxide ๋“ฑ์ด ์ „๋ถ€ $HOME ๊ธฐ์ค€์œผ๋กœ ํ™ˆ์„ ์ฐพ์œผ๋ฏ€๋กœ, ์ด dotfiles๋กœ ๋กœ๊ทธ์ธํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์“ฐ์ธ๋‹ค. ๊ณ„์ • ๋ณธ๋ž˜์˜ ~/.bashrc ๋“ฑ์€ ์•„์˜ˆ ์ฝ์ง€ ์•Š๋Š”๋‹ค.

# ๋Œ€์ƒ ํ˜ธ์ŠคํŠธ์— ๋ณ„๋„ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ clone โ†’ ์ด ์ฒดํฌ์•„์›ƒ์ด ๊ณง ํœด๋Œ€์šฉ HOME
git clone https://github.com/tot0rokr/dotfiles.git ~/.myhome

~/.myhome/enter.sh                 # ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ์ง„์ž…
~/.myhome/enter.sh tmux            # ์ „์šฉ ์†Œ์ผ“์œผ๋กœ tmux ์ง„์ž…
ssh host -t '~/.myhome/enter.sh'   # SSH ์ ‘์† ์ฆ‰์‹œ ๋‚ด ํ™˜๊ฒฝ์œผ๋กœ

๋˜๋Œ๋ฆฌ๊ธฐ๋Š” rm -rf ~/.myhome ํ•˜๋‚˜๋ฉด ๋(๊ณ„์ •์€ ์†๋Œ„ ์  ์—†์Œ). ๋Ÿฐํƒ€์ž„ ์‚ฐ์ถœ๋ฌผ(ํˆด ์„ค์น˜ยท์บ์‹œยท.tmux/plugins)์€ ์ „๋ถ€ ์ด dir ์•ˆ์— ๋“ค์–ด๊ฐ€๊ณ  .gitignore๊ฐ€ ์ž๋™์œผ๋กœ ๋ฌด์‹œํ•œ๋‹ค.

ํ•œ๊ณ„: $USER/whoami/id, ~๋‹ค๋ฅธ์œ ์ € ํ™•์žฅ, sudo(HOME ๋ฆฌ์…‹)๋Š” ์—ฌ์ „ํžˆ ์‹ค์ œ ๊ณ„์ •์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค. HOME์€ "ํ™ˆ์„ ์–ด๋””์„œ ์ฐพ์„์ง€" ํ™”์‚ดํ‘œ๋งŒ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด์ง€ chroot๊ฐ€ ์•„๋‹ˆ๋‹ค. ๋˜ํ•œ repo-local .git/config์ฒ˜๋Ÿผ ๋” ๊ตฌ์ฒด์ ์ธ ์„ค์ •์›์€ ์ „์—ญ(~/.gitconfig)์„ ์ด๊ธฐ๋ฏ€๋กœ HOME๊ณผ ๋ฌด๊ด€ํ•˜๊ฒŒ ๊ทธ๋Œ€๋กœ ์ ์šฉ๋œ๋‹ค.

Desktop ์‚ฌ์šฉ

  • mpv ์„ค์น˜
    • sudo apt install mpv
  • ffmpeg ์„ค์น˜
    • sudo apt install ffmpeg
  • yt-dlp ์„ค์น˜
  • img2sixel ์„ค์น˜
    • sudo apt install libsixel-bin
  • timg ์„ค์น˜
    • sudo apt install timg
  • ranger ์„ค์น˜
    • sudo apt install ranger

Windows Xming from X11 on ssh

  1. โœ… 1. Windows์—์„œ Xming ์‹คํ–‰
    Xming์„ ์‹คํ–‰ํ•  ๋•Œ ๋ฐ˜๋“œ์‹œ XLaunch๋ฅผ ์ด์šฉํ•ด์„œ ๋‹ค์Œ์ฒ˜๋Ÿผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค: Multiple windows Start no client Clipboard: ์ฒดํฌ (optional) No access control โ† ์ด๊ฑฐ ๊ผญ ์ฒดํฌํ•˜์„ธ์š” (๊ทธ๋ž˜์•ผ ์™ธ๋ถ€ ์ ‘์† ํ—ˆ์šฉ๋จ)
    - Xming ๋ฐ”๋กœ๊ฐ€๊ธฐ ํŒŒ์ผ ์†์„ฑ์— -ac ์ถ”๊ฐ€
    
  2. SSH ์ ‘์† ์‹œ -X ๋˜๋Š” -Y ์˜ต์…˜ ์‚ฌ์šฉ
    ssh -X <id>@<ubuntu-ip>
    ssh -Y <id>@<ubuntu-ip>
    
  3. Server SSH ์„ค์ •(/etc/ssh/sshd_config)
    X11Forwarding yes
    X11DisplayOffset 10
    X11UseLocalhost no
    
    sudo systemctl restart ssh
  4. $DISPLAY ์„ค์ •(.bashrc์— ํ•ด๋†จ์Œ)

If Linux Desktop

Keyboard mapping

https://github.com/jtroo/kanata/releases ์—์„œ kanata ์„ค์น˜ -> $HOME/.bin/kanata ๋กœ ์ €์žฅ

[Unit]
Description=Kanata keyboard remapper
Documentation=https://github.com/jtroo/kanata

[Service]
Type=simple
ExecStart=/home/{USERNAME}/.local/bin/kanata --cfg /home/{USERNAME}/.config/kanata/tenkeyless.key
Restart=never

[Install]
WantedBy=default.target

.xprofile์— kime ์‚ฌ์šฉ ๋“ฑ๋ก

export GTK_IM_MODULE=kime
export QT_IM_MODULE=kime
export XMODIFIERS=@im=kime

๊ทธ ๋‹ค์Œ systemctl daemon-reload / start / enable

Kime (Korean input)

์ฐธ๊ณ : https://osg.kr/archives/3109

  1. ์„ค์น˜

    sudo apt install kime
  2. IM ๋“ฑ๋ก (im-config๋กœ kime ์„ ํƒ ๋˜๋Š” ~/.xinputrc์— run_im kime)

    im-config -n kime

    .xprofile / .profile ํ™˜๊ฒฝ๋ณ€์ˆ˜ (dotfiles์— ํฌํ•จ):

    export GTK_IM_MODULE=kime
    export QT_IM_MODULE=kime
    export XMODIFIERS=@im=kime
  3. GNOME ์ž…๋ ฅ์†Œ์Šค์—์„œ ibus ์ œ๊ฑฐ (์•ˆ ํ•˜๋ฉด ํ•œ/์˜ ํ† ๊ธ€์ด ibus-hangul๋กœ ๊ฐ€์„œ kime ๋ ˆ์ด์•„์›ƒ์ด ์•ˆ ๋จน์Œ)

    gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us')]"
    pkill -f 'ibus-(daemon|engine|x11|portal|dconf|extension)'
  4. ์„ค์ • ํŒŒ์ผ ๋ฐฐ์น˜ (dotfiles์— ํฌํ•จ๋˜์–ด ์žˆ์Œ)

    • ~/.config/kime/config.yaml โ€” ์‹ ์„ธ๋ฒŒ์‹ P2 (sebeolsik-3sin-p2), ComposeChoseongSsang + ComposeJongseongSsang (์„ธ๋ฒŒ์‹ ํ•œ์ •)
    • ํ•œ/์˜ ํ† ๊ธ€ ํ‚ค: ์šฐ์ธก Alt, Hangul, Muhenkan, Super+Space, Shift+Space
  5. ๋ฐ๋ชฌ ๊ธฐ๋™

    pkill -x kime; pkill -x kime-indicator; pkill -x kime-xim
    nohup kime >/dev/null 2>&1 & disown

Gnome-shell-extensions

sudo apt install gnome-shell-extensions sudo apt install gnome-tweaks https://support.system76.com/articles/pop-keyboard-shortcuts/ https://github.com/pop-os/shell

Audio

sudo apt install pavucontrol # audio manager

Bluetooth

sudo apt install blueman # bluetooth manager

TMUX

# 1. ํ•„์š” ํŒจํ‚ค์ง€ ์„ค์น˜
sudo apt update
sudo apt install -y git build-essential libevent-dev libncurses-dev bison pkg-config autotools-dev automake

# 2. ์ตœ์‹  tmux ์†Œ์Šค ํด๋ก 
git clone https://github.com/tmux/tmux.git
cd tmux

# 3. ์ตœ์‹  ์•ˆ์ • ๋ฒ„์ „์œผ๋กœ ์ฒดํฌ์•„์›ƒ (์˜ˆ: 3.3a)
git checkout 3.3a

# 4. ๋นŒ๋“œ
sh autogen.sh
./configure
make

# 5. ์„ค์น˜ (์˜ต์…˜)
sudo make install

Kitty

~/.config/kitty/kitty.conf

# Truecolor ํ™œ์„ฑํ™”
enable_true_color yes

# ์™ธ๋ถ€ ์•ฑ์ด kitty ๊ธฐ๋Šฅ ์ œ์–ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ—ˆ์šฉ
allow_remote_control yes

# (์„ ํƒ) ๊ธฐ๋ณธ TERM
term xterm-kitty

.tmux.conf

set -ga terminal-overrides ',xterm-kitty:Tc:sitm=\E[3m' # kitty

# 256 color
set -g default-terminal "xterm-kitty" # kitty

# true color
set -as terminal-features ',xterm-kitty:RGB' # kitty

# ํ„ฐ๋ฏธ๋„ ์—๋ฎฌ๋ ˆ์ดํ„ฐ ๊ณ ์œ  ๊ธฐ๋Šฅ ์‚ฌ์šฉ์„ ์œ„ํ•ด escape sequences tmux๊ฐ€ ๊ฐ€๋กœ์ฑ„์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ธฐ๋Šฅ
set -g allow-passthrough on # kitty

WezTerm (Windows) โ€” SSH ๋Ÿฐ์ฒ˜

Windows ํด๋ผ์ด์–ธํŠธ์˜ WezTerm ์„ค์ •์€ ๋‘ ํŒŒ์ผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

  • ~/.wezterm.lua โ€” ์ด ๋จธ์‹  ์ „์šฉ ์ง„์ž…์ . SSH ์„œ๋ฒ„ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ(ํ˜ธ์ŠคํŠธ/IP)๋ฅผ ์—ฌ๊ธฐ์—๋งŒ ์ ์Šต๋‹ˆ๋‹ค. ๋‚ด๋ถ€ IP๊ฐ€ ๋“ค์–ด๊ฐ€๋ฏ€๋กœ ๋ ˆํฌ์— ์ปค๋ฐ‹ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ~/.wezterm.common.lua โ€” ํฌํ„ฐ๋ธ”(dotfiles ์ถ”์ ). ํ‚ค๋งตยท์™ธ๊ด€ยทํ…Œ๋งˆ ํ† ๊ธ€๊ณผ SSH ๋Ÿฐ์ฒ˜ ๋นŒ๋”๊ฐ€ ๋“ค์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

~/.wezterm.lua์˜ servers ๋ชฉ๋ก์— ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋Ÿฐ์ฒ˜(Ctrl+Shift+Alt+L)์— SSH <name> / BTOP on <name> ๋ฉ”๋‰ด๊ฐ€ ์ž๋™ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

local servers = {
  { name = "Dev", host = "192.168.0.42", user = "you",
    enter = "tmux attach || tmux new-session", autossh = true },
}
ํ•„๋“œ ์„ค๋ช…
name ๋Ÿฐ์ฒ˜์— ํ‘œ์‹œ๋  ๋ผ๋ฒจ
host IPยทํ˜ธ์ŠคํŠธ๋ช…ยท~/.ssh/config ๋ณ„์นญ
user (์„ ํƒ) SSH ์‚ฌ์šฉ์ž๋ช…
key (์„ ํƒ) ๊ฐœ์ธํ‚ค ํŒŒ์ผ๋ช…($HOME ๊ธฐ์ค€). ์ƒ๋žต ์‹œ ๊ธฐ๋ณธ ํ‚ค(~/.ssh/id_ed25519) ์‚ฌ์šฉ
cwd (์„ ํƒ) ๋Ÿฐ์ฒ˜ ํ”„๋กœ์„ธ์Šค์˜ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ
enter (์„ ํƒ) ์ ‘์† ์‹œ ์‹คํ–‰ํ•  ์›๊ฒฉ ๋ช…๋ น. ์˜ˆ: tmux attach || tmux new-session
autossh (์„ ํƒ) true๋ฉด ๋Š๊ฒจ๋„ ์ž๋™ ์žฌ์ ‘์†(PS ์žฌ์‹œ๋„ ๋ฃจํ”„ + ServerAlive ํ‚คํ”„์–ผ๋ผ์ด๋ธŒ)

Windows๋Š” SSH ํ‚ค ์ธ์ฆ๋งŒ โ€” ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž๋™์ž…๋ ฅ์„ ์“ฐ์ง€ ์•Š๋Š” ์ด์œ 

๋Ÿฐ์ฒ˜๋Š” Windows์—์„œ ๋„ค์ดํ‹ฐ๋ธŒ OpenSSH(C:\Windows\System32\OpenSSH\ssh.exe)๋งŒ ์‚ฌ์šฉํ•˜๊ณ  ์ธ์ฆ์€ SSH ํ‚ค๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž๋™์ž…๋ ฅ์„ ๋‘ ๋ฐฉ์‹์œผ๋กœ ์‹œ๋„ํ–ˆ์œผ๋‚˜ ๋ชจ๋‘ ์‹คํŒจํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

  • sshpass + MSYS2 ssh โ€” sshpass๋Š” ๊ฐ™์€ MSYS2 ๋Ÿฐํƒ€์ž„์œผ๋กœ ๋นŒ๋“œ๋œ ssh์˜ ํ”„๋กฌํ”„ํŠธ๋งŒ ๊ฐ€๋กœ์ฑŒ ์ˆ˜ ์žˆ์–ด C:\msys64\usr\bin\ssh.exe๋ฅผ ์จ์•ผ ํ•˜๋Š”๋ฐ, ์ด Cygwin PTY ๊ณ„์ธต์ด WezTerm์˜ ConPTY ์œ„์—์„œ tty ์ถœ๋ ฅ์„ ๋ฐ”์ดํŠธ ๋‹จ์œ„ ์ €์† ๊ฒฝ๋กœ๋กœ ๋–จ๊ถˆ ์Šคํฌ๋กคยท์ถœ๋ ฅ์ด ๊ธฐ์–ด๊ฐ‘๋‹ˆ๋‹ค. (๋„คํŠธ์›ŒํฌยทGPU ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ ๋กœ์ปฌ PTY ๋ณ€ํ™˜ ์˜ค๋ฒ„ํ—ค๋“œ โ€” ๋กœ์ปฌ VM๊นŒ์ง€ ๋™์ผํ•˜๊ฒŒ ๋А๋ ค์ง.)
  • plink (PuTTY) โ€” charset์„ ์ง€์ •ํ•˜๋Š” CLI ์˜ต์…˜์ด ์—†์–ด ์›๊ฒฉ UTF-8์„ ์‹œ์Šคํ…œ ์ฝ”๋“œํŽ˜์ด์ง€(CP949)๋กœ ์˜ค๋…ํ•ด ํ•œ๊ธ€ mojibake๊ฐ€ ๋‚˜๊ณ , ๊ธฐ๋ณธ -sanitise-stdout์ด ์ œ์–ด๋ฌธ์ž(ESC)๋ฅผ ?๋กœ ๋ญ‰๊ฐœ tmuxยทnvimยทpowerline์ด ๊นจ์ง‘๋‹ˆ๋‹ค.

๋„ค์ดํ‹ฐ๋ธŒ ssh๋Š” ๋ฐ”์ดํŠธ๋ฅผ ๊ทธ๋Œ€๋กœ ํ˜๋ ค๋ณด๋‚ด UTF-8ยทANSI๊ฐ€ ์™„๋ฒฝํ•˜๊ณ  ๋น ๋ฆ…๋‹ˆ๋‹ค. (Unix ์ชฝ์€ Cygwin ํŽ˜๋„ํ‹ฐ๊ฐ€ ์—†์–ด server.password + sshpass ์˜ต์…˜์ด ๊ทธ๋Œ€๋กœ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค.)

ํ‚ค ๋“ฑ๋ก (์ผํšŒ์„ฑ, PowerShell)

# 1) ํ‚ค ์ƒ์„ฑ (๋ฌดpassphrase โ€” ๋ฌด์ธ ์žฌ์ ‘์†์šฉ)
ssh-keygen -t ed25519 -f $env:USERPROFILE\.ssh\id_ed25519 -C "me@wezterm"

# 2) ์„œ๋ฒ„์— ๊ณต๊ฐœํ‚ค ๋“ฑ๋ก โ€” ๋น„๋ฒˆ 1ํšŒ ์ž…๋ ฅ
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub | ssh you@192.168.0.42 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"

# 3) ํ™•์ธ โ€” ๋น„๋ฒˆ ์—†์ด hostname์ด ๋œจ๋ฉด ์„ฑ๊ณต
ssh you@192.168.0.42 hostname

PowerShell 5.1 ํ•จ์ •: ์›๊ฒฉ ๋ช…๋ น ๋ฌธ์ž์—ด ์•ˆ์— "$VAR" ์ฒ˜๋Ÿผ ๋”ฐ์˜ดํ‘œ+๋ณ€์ˆ˜๋ฅผ ๋„ฃ์œผ๋ฉด PS๊ฐ€ ssh๋กœ ๋„˜๊ธฐ๋ฉฐ ๋”ฐ์˜ดํ‘œ๋ฅผ ๋ญ‰๊ฐœ(native ์ธ์ž ํŒŒ์‹ฑ ๋ฒ„๊ทธ), ์›๊ฒฉ ์…ธ์—์„œ ๋‹จ์–ด ๋ถ„ํ• ์ด ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค. ์œ„์ฒ˜๋Ÿผ ๊ณต๊ฐœํ‚ค๋Š” stdin์œผ๋กœ๋งŒ ํ˜๋ฆฌ๊ณ (Get-Content | ssh โ€ฆ "cat >> โ€ฆ") ์›๊ฒฉ ๋ช…๋ น์—๋Š” ๋”ฐ์˜ดํ‘œยท$๋ฅผ ์“ฐ์ง€ ๋งˆ์„ธ์š”.

๋“ฑ๋ก ํ›„ WezTerm์„ ์žฌ์‹œ์ž‘ํ•˜๊ณ  ๋Ÿฐ์ฒ˜๋กœ ์ ‘์†ํ•˜๋ฉด ๋น„๋ฒˆ ์—†์ด ๋ถ™๊ณ  tty๋„ ๋น ๋ฆ…๋‹ˆ๋‹ค.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors