Search

WSL로 Rocky Linux 설치 후 할 것들

요약
systemd 활성화, 환경 변수 변경, nopasswd 설정, 필요한 패키지 설치, 1Password 연동
게시일
2022/07/18
태그
WSL
1 more property
드디어 Rocky Linux 9이 릴리즈된 김에, Rocky Linux with WSL2에 이어… 내 개인 환경 구성에 필요한 것들을 정리해본다.

환경 변수 변경

환경 변수를 변경한다.
1.
명령 히스토리에 명령 실행 시간 정보를 출력할 수 있게 한다.
2.
명령 프롬프트를 내 스타일로 바꾼다.
.bash_profile에 다음 두 줄 추가
HISTTIMEFORMAT="%d/%m/%y %T " PS1="\[\e[36;1m\]\u@\[\e[32;1m\]\h \[\e[31;1m\]\w > \[\e[0m\]"
Shell
복사
/root/.bash_profile도 수정해둔다.
HISTTIMEFORMAT="%d/%m/%y %T " PS1="\[\e[36;1m\]\u@\[\e[32;1m\]\h \[\e[31;1m\]\w # \[\e[0m\]"
Shell
복사

sudoers.d에 NOPASSWD 설정

/etc/sudoers.d 디렉터리 아래에 내 아이디를 파일 이름으로 하여 다음 내용 추가
echo "$USER ALL=NOPASSWD: ALL" | sudo tee /etc/sudoers.d/$USER
Shell
복사
환경변수 $USER를 이용해 suders.d에 NOPASSWORD: ALL 옵션 지정
운영 환경에서 이런 설정은 굉장히 위험하다. 개인용 WSL 환경이니까 쓰는 것이다.

/ect/wsl.conf 옵션 변경

wsl.conf에 필요한 옵션을 지정한다.
[boot] systemd=true [automount] enabled=true options=metadata,uid=1000,gid=1000,umask=0077 [network] generateResolvConf=true generateHosts=true hostname=rocky
Shell
복사

필요한 패키지 설치

sudo dnf install -y bash-completion bind-utils \ epel-release \ iproute \ java-11-openjdk-devel \ procps-ng \ socat \ wget which && sudo dnf install -y htop neofetch neovim && sudo dnf group install -y "Development Tools"
Shell
복사

앨리어스 구성

~/.bashrc.d 디렉터리를 만들고 다음과 같은 파일들을 만들어 넣어둔다.
mkdir ${HOME}/.bashrc.d && \ echo "alias edge='/mnt/c/Program\ Files\ \(x86\)/Microsoft/Edge/Application/msedge.exe'" > ${HOME}/.bashrc.d/edge && \ echo -e "alias ll='ls -ahl'\nalias ls='ls --color=auto'" > ${HOME}/.bashrc.d/ls && \ echo "alias subl='/mnt/c/Program\ Files/Sublime\ Text/subl.exe'" > ${HOME}/.bashrc.d/subl echo -e "alias vi='nvim'\nexport EDITOR=\"vi\"" > ${HOME}/.bashrc.d/vi . ${HOME}/.bashrc
Bash
복사
subl은 Sublime Text를 사용하기 위해서, edge는 Microsoft Edge 웹 브라우저를 이용하기 위한 것이다. Rockylinux 9의.bashrc 파일에 다음과 같은 코드가 있어 .bashrc.d 디렉터리에 있는 스크립트를 읽어 들여 실행하게끔 되어 있다.
# User specific aliases and functions if [ -d ~/.bashrc.d ]; then for rc in ~/.bashrc.d/*; do if [ -f "$rc" ]; then . "$rc" fi done fi unset rc
Bash
복사

Windows에 설치된 1Password 연결하기

사전 조건

1.
Windows에서 npiprelay.exe를 실행 가능한 위치(예: C:\Windows)에 복사해둔다.
npiperelay
jstarks
2.
1Password 설정에 다음과 같이 SSH 에이전트 사용이 체크되어 있어야 한다.
3.
~/.ssh에 사용할 SSH 공개키만 놔둔다. 비밀키는 1Password에서 관리하므로 갖고 있을 필요가 없다.
4.
~/.ssh/config 파일은 다음과 같이 구성되어 있어야 한다.
Host * IdentitiesOnly yes Host github.com HostName github.com IdentityFile ~/.ssh/is_rsa.pub # 이 부분이 중요하다. 보다시피 비밀키가 아니라 "공개키"를 지정해준다. IdentitiesOnly yes PreferredAuthentications publickey User git
Bash
복사
5.
(이유는 모르겠지만) 2022.10.31. 기준으로 Windows 11에 기본 탑재된 OpenSSH로는 1Password와 연동해 사용할 수 없다. Debian WSL에서는 가능한데 Rocky Linux에서는 안 된다… 관리자 권한으로 파워셸을 열고 OpenSSH를 최신 버전으로 업그레이드해서 이 문제를 우회한다.
# Download upstream bins $url = 'https://github.com/PowerShell/Win32-OpenSSH/releases/latest/' $request = [System.Net.WebRequest]::Create($url) $request.AllowAutoRedirect=$false $response=$request.GetResponse() $source = $([String]$response.GetResponseHeader("Location")).Replace('tag','download') + '/OpenSSH-Win64.zip' (New-Object System.Net.WebClient).DownloadFile($source, 'OpenSSH-Win64.zip') # Overwrite windows installed bins $openSshBins = (Get-ChildItem 'C:\WINDOWS\System32\OpenSSH\').Name Expand-Archive -Path .\OpenSSH-Win64.zip -DestinationPath . takeown.exe /a /r /f C:\Windows\System32\OpenSSH\ icacls.exe 'C:\Windows\System32\OpenSSH' /grant 'BUILTIN\Administrators:(OI)(CI)F' icacls.exe 'C:\Windows\System32\OpenSSH' /grant 'BUILTIN\Administrators:F' /t Stop-Service ssh-agent $openSshBins | %{ Copy-Item -Path .\OpenSSH-Win64\$_ -Destination C:\Windows\System32\OpenSSH\ } Start-Service ssh-agent
PowerShell
복사

설정

WSL로 설치한 Rocky Linux에서 ${HOME}/.bash_profile에 다음 행을 추가하고 . ${HOME}/.bash_profile을 실행한다.
export SSH_AUTH_SOCK=$HOME/.ssh/agent.sock ( set -eu piperelay=(setsid socat "UNIX-LISTEN:$SSH_AUTH_SOCK,fork" "EXEC:npiperelay.exe -ei -s //./pipe/openssh-ssh-agent,nofor k") if ! pgrep "-f" "socat.*$SSH_AUTH_SOCK" >/dev/null; then rm -f "$SSH_AUTH_SOCK" ("${piperelay[@]}" &) >/dev/null fi )
Bash
복사