페이지

2013년 5월 31일 금요일

Cygwin에서 홈 디렉토리의 위치

이상한 일이다. 어제 내 PC의 Cygwin bash shell에서 개발서버에 좀 더 편하게 접속하기 위하여 암호를 입력하지 않는 방식으로 ssh를 사용하여 서버에 로그인할 수 있도록 설정하였다. 그런데 오늘 출근해서 다시 서버에 로그인하려고 하니 암호를 입력하라고 묻는다. 그래서 혹시 서버에서 public key를 저장해 놓는 authorized_keys 파일에 어떤 변경이 가해졌는지 살펴 보았더니 이상이 없다. 이번에는 내 PC에 저장해 놓은 key pair가 정상인지 확인해 보기 위하여 아래와 같은 명령을 실행해 보았다.

  $ cd .ssh
  $ ls -l

어라! 어제 ssh-keygen으로 생성해 놓았던 key pair가 보이지 않는다. 이게 어찌된 일인가? 정상이라면 다음 두 개의 파일이 있어야 한다.

  id_rsa
  id_rsa.pub

나중에 발견하게 된 일이지만, 특이하게도 Cygwin bash shell을 실행할 때 사용자의 홈 디렉토리 위치가 일정하지 않았다. 이를 확인해 보기 위하여 다음과 같은 순서로 bash shell을 실행해 보자. 참고로 내 PC의 환경은 아래와 같다.

  Cygwin 설치 디렉토리 - C:\Apps\cygwin
  Windows 사용자 홈 디렉토리 - D:\Profiles\myid

1) 시스템에서 첫번째 bash 프로세스가 실행될 때에는 아래 위치를 사용자의 홈 디렉토리로 사용한다.

  C:\Apps\cygwin\home\myid

2) 이번에는 다른 DOS창을 열어서 bash shell을 실행해 보았다. 이것은 두 번째의 bash 프로세스를 생성하는 것이다. 이 bash shell은 아래 디렉토리를 홈 디렉토리로 사용한다.

  D:\Profiles\myid

3) 계속해서 bash shell을 실행하고 홈 디렉토리를 확인해 보면 2)번의 결과와 같음을 알 수 있다.

4) 현재 실행중인 모든 bash shell을 닫고 1) ~ 3)의 과정을 실행하면 동일한 현상이 발생한다.

결국 내가 생성해 놓았던 key pair는 Windows 사용자 홈 디렉토리 아래의 .ssh 디렉토리에 있었던 것이다. 당연하게도 첫번째로 실행된 bash shell을 제외한 다른 bash shell에서는 암호 입력 과정 없이 서버에 로그인할 수 있었다.

Cygwin에서 왜 첫번째 bash shell의 홈 디렉토리가 이후에 실행된 bash shell의 홈 디렉토리와 다른지에 대해서는 관련 내용을 찾을 수 없었지만 이 문제를 간단하게 해결할 수 있는 방법으로 아래 두 가지가 있다.

1. /etc/fstab 파일을 열고 아래와 같이 한 줄을 추가하여 Windows 사용자 홈 디렉토리의 상위 디렉토리를 /home으로 마운트한다. 이렇게 하면 Cygwin bash shell 입장에서는 Windows 경로 C:\Apps\cygwin\home/myid이 D:\Profiles/myid를 가리키는 것이 된다.

  D:/Profiles /home ntfs binary 0 0

2. /etc/passwd 파일에서 사용자의 홈 디렉토리를 Windows 사용자 홈 디렉토리로 지정한다.

    ....:/cygdrive/d/Profiles/myid:...


댓글 없음:

댓글 쓰기

Llama 3.2로 문장 생성 및 챗팅 완성 실습

Llama 3.2로 문장 생성 및 챗팅 완성 실습 Running Meta Llama on Linux 문서의 내용을 참고하여 Llama 3.2 1B 모델로 다음 두 가지 기능을 실습합니다. 문장 완성 챗팅 ...