1. 서론

WindowsWSL2(Ubuntu) 환경을 같이 사용하다 보니 SSH 설정 파일을 관리하는 것이 불편했다. 주로 WSL2에서 SSH를 사용하지만, 윈도우에서도 가끔 사용해야 하는 일이 있었고 그 때마다 윈도우에 SSH 설정을 추가해서 사용하고는 했다. 두 환경에 SSH 설정 파일이 각각 있기 때문에 관리가 어려웠던 부분을 공통 SSH 설정 파일을 만들고, 각 환경의 설정 파일은 추가 적용할 부분만 설정하는 방식으로 개선했다.


2. SSH 설정 관리 방법

Windows 환경에 공통 SSH 설정 파일을 생성하고, 각 환경은 생성한 공통 SSH 설정 파일을 Include 하는 구조로 작업하였다.

Windows:
  C:\Users\<사용자명>\.ssh\config.common  # 공통 설정 원본
  C:\Users\<사용자명>\.ssh\config         # Windows 설정

WSL2:
  ~/.ssh/config.common                   # rsync로 동기화된 공통 설정 복사본
  ~/.ssh/config                          # WSL2 설정

가. 공통 설정 파일 생성

C:\Users\<사용자명>\.ssh 경로에 config.common 파일을 생성하고 아래와 같이 기존 사용하는 설정을 추가한다.

# 1번 서버
Host SERVER_01
  HostName <IP>
  Port <PORT>
  User <USER>
  IdentityFile <FILE>
  IdentitiesOnly yes
...

# 2번 서버
...

나. Windows의 SSH 설정 파일 수정

기존 C:\Users\<사용자명>\.ssh\config 파일은 아래와 같이 공통 파일을 Include하게 변경한다.

Include ~/.ssh/config.common

다. WSL2(Ubuntu)의 SSH 설정 파일 수정

WSL2(Ubuntu)에서 Windows의 파일을 직접 참조할 경우 아래와 같은 에러가 발생할 수 있다.

Bad owner or permissions on /mnt/c/Users/<사용자명>/.ssh/config.common

에러를 해결하기 위해, Windows의 공통 SSH 설정 파일을 ~/.ssh/config.common로 복사하여 사용했다. 매 번 복사를 하긴 불편하니, ~/.zshrc에 아래 내용을 추가하여 rsync를 통해 파일을 동기화 할 수 있게 했다. ~/.zshrc 내용을 수정한 뒤에는 SHELL을 다시 열거나 source ~/.zshrc 명령을 통해 갱신하면 된다.

 # ~/.zshrc
 rsync -t --chmod=F600 /mnt/c/Users/<사용자명>/.ssh/config.common ~/.ssh/config.common

~/.ssh/config 파일은 아래와 같이 공통 파일을 Include하게 변경한다.

Include ~/.ssh/config.common

3. 결론

WindowsWSL2에서 SSH 설정을 각각 관리할 때는 같은 서버 정보를 중복으로 수정해야 하므로 관리가 어려웠다. 이 구조를 사용하면 SSH 접속 정보는 하나의 원본 파일에서 관리하면서도, Windows와 WSL2의 파일 권한 차이로 인한 문제를 피할 수 있다.