SSH(Short for Secure Shell), 서버 접속을 위해 프로그램 설치하려다가 babun+tmux 설치

2015. 10. 6. 11:45OS/Windows

구글링을 하면 역시 줄줄히 나온다..
일반적으로 라이센스 걱정없는 Putty를 가장 많이 사용하고 있으며, 여기에 확장 버전을 주로 쓰고 있다.
이전에는 SecureCRT를 사용했었으나, 혹시 모르는 이유로 문제 발생요인을 없애기 위해, 그냥 KiTTY를 써야 겠다.

약간의 해석!! 시작 
-------------------------------------------------------------------
SSH, "short for Secure Shell",은 네트워크에 걸쳐진 Linux와 Unix 서버들에 연결하는데 사용되는 네트워크 프로토콜 입니다. 
Max, Linux, Unix과는 다른 windows는 native SSH Client를 포함하고 있지 않습니다.
windows workstation상에서 Linux 서버로 접속할 예정이라면, SSH 클라이언트를 선택할 필요가 있답니다.

여기서는 세가지 그룹으로 분류한 SSH 클라이언트들을 소개합니다.

- 무료 그리고 오픈소스 Windows SSH Clients
- PuTTY Alternatives, Clone, Derivatives and Extenstions . (Putty에서 파생,복제,확장한 것들)
- 상업용 Windows Clients 

SSH 설치후에 명령어에 대해 좀 더 알고 싶다면...
-------------------------------------------------------------------

자세한 내용은 읽어 보시고... 우선 putty를 다운로드 받아서 써봤습니다.
매번 사용하던거라.. 뭐 특이사항은 없었습니다. 설치가 아니라 바로 쓸수 있는 거라는 것...
하지만 여러 대의 서버를 관리하는 상황에서, 서버 주소를 저장해 놓고 살고 싶어서, Kitty를 다운받아서 써봤습니다.
Session별로 주소 정리는 다 했는데.. 이거 계정하고 비번을 들어갈 때 마다 입력하려니.. 귀찮습니다.
어떤 건 로그인 정보까지 다 저장해주던데.. 또 찾아봐야지..

위의 기능을 보완한 SuperPutty(https://code.google.com/p/superputty/wiki/Downloads?tm=2)를 내려 받아서 ,
기존에 받아 놓은 putty를 연결해서 사용하려는데..
서버들을 저장하려고 하니, Runtime Error 가 빨간색 창으로 뜨네요.... 내가 무얼 잘못한건지 모른체.. 아 귀찮아!!! 
좀 더 검색을 해보니, putty + mRemoteNG(http://www.mremoteng.org/)를 쓰는 곳이 여럿 보이더군요.
언넝 가서 다운 받아야지 했는데..
트위터에 putty + mRemoteNG 조합으로 쓰는데 불편했다.... 대신 babun 과 tmux 조합으로 사용하니 좋다고 함.
그래서 한번 해보기로... 계속 새로운 것을 찾으러 고고

를 보면서 차근차근 해보도록 합니다. 

Step 1.  http://babun.github.io/  에서 babun을 다운 받아, 설치함.
          { ~ }  >>  이렇게 화면에 나옵니다. 

Step 2. 가상 스크린들과 패널을 가지고 작업하도록 하는 tmux 를 설치합니다. 
           babun 아래 명령어를 사용합니다.
          { ~ }  >> pact install tmux

Step 3. 마우스를 사용할 수 있고, panes 생성을 위한 shortcuts을 갖을 수 있고,
            명령 동기화(command synchronization)를 위한 tmux 구성을 하도록 합니다. 

          아래 구성파일은 이 설정만으로 완성할 수 있는 예제를 줍니다.
          Configurar tmux. 이 파일(.tmux.conf)은 반드시 여러분의 ~ 디렉토리안에 놓여져야 합니다.
          (이것 때문에 약간의 삽질..)

# Use C-a as prefix and free C-b
set -g prefix C-a
unbind C-b

# Send C-a to application by pressing it twice
bind C-a send-prefix

# Reload configuration file
unbind r
bind r source-file ~/.tmux.conf \; display "Configration file .tmux reloaded!"

# Redefine splitting shortcuts
bind | split-window -h \; display "Splitting Vertical"
bind - split-window -v \; display "Splitting Horizontal"

# Enable mouse mode and pane selection
setw -g mode-mouse on
set -g mouse-select-pane on
set -g mouse-resize-pane on
set -g mouse-select-window on

# Toggle mouse on
bind m \
    set -g mode-mouse on \;\
    set -g mouse-resize-pane on \;\
    set -g mouse-select-pane on \;\
    set -g mouse-select-window on \;\
    display 'Mouse: ON'

# Toggle mouse off
bind M \
    set -g mode-mouse off \;\
    set -g mouse-resize-pane off \;\
    set -g mouse-select-pane off \;\
    set -g mouse-select-window off \;\
    display 'Mouse: OFF'

# Titles (window number, program name, active (or not)
set-option -g set-titles on
set-option -g set-titles-string '#H:#S.#I.#P #W #T'

# Pane Selection
bind -n C-left select-pane -L
bind -n C-down select-pane -D
bind -n C-up select-pane -U
bind -n C-right select-pane -R

# Sync tmux panes (replicates input from one pane to the others)
bind p setw synchronize-panes
 Step 4. tmux 설정한뒤에, 설정파일을 넣고, , "tmux" 라고 타이핑 하면, 시작됩니다.
          { ~ } >> tmux

How to use tmux

그럼 이제 어떻게 tmux를 사용하는지 알아보자.
앞선 설정파일은 tmux 명령들을 Ctrl+a 키 결합에 바인드합니다. (물론 .tmux.conf 파일에서 C-a 에서 다른것으로 변경 가능)
그래서 명령을 구동하기 위해서는, 여러분은 Ctrl+a(prefix)를 누른 후에,
command letter를 타이핑 하면 아래와 같은 다양한 기능을 사용할수 있도록 위해서 설정했다는 것을 알게 됩니다. 

prefix(Ctrl+a 누른 후)
 + | : 수직 pane 나누기
 + -  : 수평 pane 나누기
 +  p :  동시 명령 실행 토글 
 + x : 현재 패널 죽이기
 + ^ : 현재 윈도우 죽이기
 + ? : 모든 바인된 키 보기

 + r : .tmux.conf 설정파일 리로드
 + c : 새로운 창 생성
 + ,  : 윈도우 이름 변경
 + m : 마우스 사용 가능
 + M : 마우스 사용 불가

prefix + →     Move focus to pane on the right
prefix + ←     Move focus to pane on the left
prefix + ↑     Move focus to pane on the top
prefix + ↓     Move focus to pane on the bottom

뭐 이 밖에 다른 기능 들은 차근차근 알아 봅시다. 


The Mouse

위 설정에서 마우스를 사용가능하게 해서 패널별 클릭이 가능하다.
아래 바닥 탭들을 클릭해서 윈도우를 선택하는 것도 가능합니다.
팬을 리사이징하는 것도 가능하네요

tmux 윈도를 상단에 있는 닫기 버튼을 이용해서 닫지 말아주세요.
pane/window를 죽이거나, exit 명령어를 통해 세션을 닫아주세요.
만약 이 절차대로 하지 않으면, 백그라운드에서 계속 프로세스가 동작할꺼고, 이것을 종료하기 위해 수동으로 죽여야 할것 입니다.

클립보드에 놓여 있는 문자를 복사한 것을 붙여넣기 하기 위해서는 Ctrl + Shit + Insert 해주면 됩니다.

Windows Shortcut
윈도우즈상에 tmux 열기를 바로 하기 Shortcut를 생성하기 위해는

c:\babun\.babun\cygwin\bin\mintty.exe -e ' /cygdrive/c/babun/cygwin/bin/tmux.exe'
이건 내가 설치한 경로랑 상이 하옵니다. 아래와 같이 경로 변경
C:\Users\USER\.babun\cygwin\bin\mintty.exe -e '/cygdrive/c/Users/USER/.babun/cygwin/bin/tmux.exe'

/usr/local/etc/babun/source/babun-core/tools/plugins.sh: line 105: bash: command not found
Could not start plugin [git]
/usr/local/etc/babun/source/babun-core/tools/plugins.sh: line 105: bash: command not found
Could not start plugin [core]
/usr/local/etc/babun/source/babun-core/tools/plugins.sh: line 105: bash: command not found
Could not start plugin [cygdrive]
위와 같은 에러가 동일하게 발생중... 짜증 (https://github.com/babun/babun/issues/205


Tmux Scripting

우리가 개발 레이아웃을 설정하기 위해 항상 같은 윈도우와 팬들을 열어 놓고 있다면, 우리는 윈도우들,팬들 그리고 여러분이 원하는 명령어들의 실행 조차도 로드 할수 있는 스크립트를 생성할수 있습니다.

아래 예제 스크립트는 두개의 윈도우 Screen 1 과 Screen1을 수직으로 나눈  Screen 2 그리고 왼쪽 팬상에 서버안에 ssh 를 생성할것입니다.

neww -n Screen1             #Screen1 이라는 이름의 screen을 생성합니다.
splitw -h -p 50             #이전 생성한 screen를 수직으로 나눕니다.
selectp -t 0                #스크린의 첫번째 팬(왼쪽)을 선택합니다.
send-keys "ssh d-a-r" C-m   #선택된 팬에 ssh 명령을 실행합니다.
neww -n Screen2             #Screen2라는 이름의 screen를 생성합니다.
selectw -t 1                #첫번째 생성한 윈도우를 선택합니다. 
이렇게 생성한 콘솔은 아래와 같이 보여야 합니다.

스크립팅을 가지고 여러분은 여러분의 tmux 세션들을 여러분에게 가장 잘 맞게 개인화 할수 있습니다.
이 레퍼런스 섹션은 좀 더 많은 정보를 갖는 링크들이 있습니다.

여러분이 여러분의 환경을 설정하는 스크립트를 가지고 있다면, 여러분은 그것을 윈도우 shortcut으로 실행할수 있습니다.
아래와 같이 말이죠.

C:\babun\.babun\cygwin\bin\mintty.exe /bin/zsh -l -e '/cygdrive/c/babun/.babun/cygwin/home/user/bin/dev-tmux.sh'
C:\Users\USER\.babun\cygwin\bin\mintty.exe /bin/zsh -l -e '/cygdrive/c/Users/USER/.babun/cygwin/home/user/bin/dev-tmux.sh'

tmux 세션들을 죽이기 위해서는 : tmux kill -session 이라고 명령 라인 또는 <prefix> + :  the type kill-session 하면 됩니다. 



점점 다양하게 여러가지를 해보도록 해야지


detach 기능 ( prefix + d )

여러 세션 생성, 서버가 종료 되지 않는 이상 이를 유지 시키는 것임.
즉 서버에 다시 접속하여 이전 작업 했던 워크 스페이스를 그대로 유지 하는 것임.

detach 하면  [detached] 라고 나온다, 다시 말해 [exited]가 아닌것이다.

세션 소환 

tmux list-session  혹은 tmux ls 하면 리스트가 나옴

0: 1 windows (created Tue Oct  6 10:00:59 2015) [100x34]
2: 1 windows (created Tue Oct  6 10:29:37 2015) [100x34]

난 이렇게 나왔다.

tmux attach -t  0
(이렇게 하면 0 의 세션 이름을 가진 넘으로 이동하는 것이다.)

1. 우선 작업할 서버군들에 대해 정리 한다.
   > tmux new -s sessionname
2. prefix + d 로 detach 
3. 접속할 서버 세션 리스트 보자
   > tmux ls
4. 들어가자!!! (attach)
   > tmux attach -t sessionname
5. 항상 나올 때는 prefix + d 하고

반복!!! 이게 핵심이다....