본문 바로가기
기타/툴 관련(윈도우)

CygWin + SSHD + 한글 입/출력

by WebHack 2009. 8. 18.
Windows 7 64bit 에서 CygWin + SSHD를 설치했음

1. 일단 www.cygwin.com 에서 cygwin 을 다운로드 받는다. Setup.exe 가 다운로드 될 텐데 적당한데 저장하자. 이것을 다운로드만 받아 둔다. 그리고 마우스 오른쪽 버튼을 눌러 관리자 권한으로 실행 을 눌러 관리자 권한으로 실행 되도록 한다. net 카테고리에 openssh 를 선택해서 설치를 마친다.

2. Cygwin / Bash Shell을 관리자 권한으로 실행 시킨다. 이게 중요하다. 오른쪽 마우스 버튼을 눌러서 관리자 권한으로 실행 을 꼭 선택해서 실행 시켜야 한다. 안그러면, 권한 문제로 sshd 관련 계정과 설정 파일들이 생성 되지 않는다.

3. 윈도우 시스템 환경 변수(제어판>시스템>고급 시스템 설정>환경변수)에 CYGWIN=ntsec 를 넣어준다.
P.S 혹시 몰라서 PATH에 ;C:\cygwin\bin 를 추가해 줬음

4. chmod +r /etc/passwd ; chmod +r /etc/group ; chmod +x /var ; ssh-host-config -y

위 처럼 ssh-host-config -y로 하고 cygrunsrv -S sshd를 했을 때 에러가 나면
cygrunsrv -R sshd 로 sshd 서비스 삭제 후에
밑에 처럼 수동으로 하면 됨(Do you want to use a different name 이분을 no로 하는게 중요)

$ ssh-host-config
*** Query: Overwrite existing /etc/ssh_config file? (yes/no) yes
*** Info: Creating default /etc/ssh_config file
*** Query: Overwrite existing /etc/sshd_config file? (yes/no) yes
*** Info: Creating default /etc/sshd_config file
*** Info: Privilege separation is set to yes by default since OpenSSH 3.3.
*** Info: However, this requires a non-privileged account called 'sshd'.
*** Info: For more info on privilege separation read /usr/share/doc/openssh/READ
ME.privsep.
*** Query: Should privilege separation be used? (yes/no) yes
*** Info: Updating /etc/sshd_config file
mv: try to overwrite `/etc/sshd_config', overriding mode 0550 (r-xr-x---)?


*** Warning: The following functions require administrator privileges!

*** Query: Do you want to install sshd as a service?
*** Query: (Say "no" if it is already installed as a service) (yes/no) yes
*** Info: Note that the CYGWIN variable must contain at least "ntsec"
*** Info: for sshd to be able to change user context without password.
*** Query: Enter the value of CYGWIN for the daemon: [ntsec]
*** Info: On Windows Server 2003, Windows Vista, and above, the
*** Info: SYSTEM account cannot setuid to other users -- a capability
*** Info: sshd requires.  You need to have or to create a privileged
*** Info: account.  This script will help you do so.

*** Info: You appear to be running Windows 2003 Server or later.  On 2003
*** Info: and later systems, it's not possible to use the LocalSystem
*** Info: account for services that can change the user id without an
*** Info: explicit password (such as passwordless logins [e.g. public key
*** Info: authentication] via sshd).

*** Info: If you want to enable that functionality, it's required to create
*** Info: a new account with special privileges (unless a similar account
*** Info: already exists). This account is then used to run these special
*** Info: servers.

*** Info: Note that creating a new user requires that the current account
*** Info: have Administrator privileges itself.

*** Info: No privileged account could be found.

*** Info: This script plans to use 'cyg_server'.
*** Info: 'cyg_server' will only be used by registered services.
*** Query: Do you want to use a different name? (yes/no) no
*** Query: Create new privileged user account 'cyg_server'? (yes/no) yes
*** Info: Please enter a password for new user cyg_server.  Please be sure
*** Info: that this password matches the password rules given on your system.
*** Info: Entering no password will exit the configuration.
*** Query: Please enter the password:
*** Query: Reenter:

*** Info: User 'cyg_server' has been created with password 'dlghwo'.
*** Info: If you change the password, please remember also to change the
*** Info: password for the installed services which use (or will soon use)
*** Info: the 'cyg_server' account.

*** Info: Also keep in mind that the user 'cyg_server' needs read permissions
*** Info: on all users' relevant files for the services running as 'cyg_server'.

*** Info: In particular, for the sshd server all users' .ssh/authorized_keys
*** Info: files must have appropriate permissions to allow public key
*** Info: authentication. (Re-)running ssh-user-config for each user will set
*** Info: these permissions corrently. [Similary restrictions apply, for
*** Info: instance, for .rhosts files if the rshd server is running, etc].


*** Info: The sshd service has been installed under the 'cyg_server'
*** Info: account.  To start the service now, call `net start sshd' or
*** Info: `cygrunsrv -S sshd'.  Otherwise, it will start automatically
*** Info: after the next reboot.

*** Info: Host configuration finished. Have fun!

cygrunsrv 관련
cygrunsrv -S sshd 를 서비스 실행
cygrunsrv -E sshd 는 서비스 중지
서비스 완전 제거 -R, 설치 -I

패키지 추가 및 삭제는 Setup.exe 을 다시 실행해서 고르면 됨

한글 입/출력

Cygwin 기본설정 상태에서는 한글입출력이 불가능 합니다.
몇가지 환경설정을 해줘야 한글 입출력이 가능해 집니다.

자신의 홈 디렉토리의
.inputrc 파일을 생성하여 다음의 내용을 추가하여 줍니다.

set meta-flag on
set convert-meta off
set output-meta on


마찬가지로 홈 디렉토리의
.bashrc 파일을 생성하여 다음의 내용을 추가하여 줍니다.

alias ls='ls -F --color=auto --show-control-char'
alias l.='ls -dl .[a-zA-Z]*'
alias ll='ls -al'
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'


마지막으로 .bash_profile 맨 마지막에


if [ -f /etc/bash.bashrc ] ; then
source /etc/bash.bashrc
fi

if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then
INPUTRC=/etc/inputrc
fi

를 추가해줍니다.

PS. 리눅스 프롬프트로 변경
vi ~/.bash_profile
에서
PS1='[\u@\h \W]\$'
추가

완전 제거는 밑에 처럼

경우에 따라 Cygwin을 자신의 시스템에서 완전히 제거해야 할 경우가 있을 수 있다. 이제부터 이미 설치되어 있는 Cygwin을 제거하는 방법에 대해서 알아보겠다.

Cygwin 제거 방법은 매우 쉽지만, 일반적인 Windows 응용 프로그램과는 달리 Cygwin은 별도의 Uninstall 프로그램을 지원하지 않기 때문에 다음과 같이 수동으로 삭제해야 한다.

  1. 프로세스 및 서비스 제거

    OpenSSH 나 Inetd 와 같은 서비스를 설치한 경우에는 Windows Service에 등록되므로 Cygwin을 제거하기에 앞서 이를 내려 주어야 한다. 서비스를 제거하는 방법은 아주 간단하다. Cygwin상에서 cygrunsrv (cygrunsrv -R <service-name>) 툴을 이용하거나 Windows NT/2000 리소스 킷중 srvinstw.exe 나 instsrv.exe 를 이용할 수 있다.

  2. 파일 허가권 및 소유권 확인

    NTFS 파일시스템에서 NTSEC을 사용하고 있다면 Cygwin상의 chmod (cd / ; chmod -R 644) 명령어를 통해 원래대로 돌려야 한다. 즉, 관리자(Administrators)가 모든 권한을 갖도록 설정한다. 이 작업은 Windows 상에서도 가능하나 경험상 불가능한 경우도 있다.

  3. Windows 환경설정(변수) 수정

    위의 경우와 같이 Cygwin에서 특정 서비스를 설치하거나 사용자가 직접 Windows 시스템의 환경설정(변수)를 변경한 경우 Cygwin이 설치되기 이전의 상태로 돌려야 한다.

  4. 설치 디렉토리 삭제

    설치 위치가 "C:\cygwin" 이라면 탐색기와 같은 파일 관리자를 통해 해당 디렉토리를 통채로 지운다. 명령 프롬프트에서는 "rmdir /s /q C:\Cygwin"

  5. 레지스트리 삭제

    레지스트리 편집기(시작→실행→regedit.exe)를 실행시켜 다음 3개의 키(key)를 삭제한다.
    "HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions"
    "HKEY_CURRENT_USER\Software\Cygnus Solutions"
    "HKEY_USERS\.Default\Software\Cygnus Solutions "

    위 2개의 키만 삭제하더라도 별 문제는 없지만 자신의 시스템에서 Cygwin의 흔적을 완전히 제거하고 싶다면 레지스트리 편집기에서 'cygwin'으로 검색하여 검색된 모든 키(key)를 삭제하면 된다.

  6. 바로가기 아이콘 삭제

    "C:\Documents and Settings\All Users\시작 메뉴\프로그램\Cygwin"
    "C:\Documents and Settings\All Users\바탕 화면\Cygwin"