barrier를 사용하여 Linux·macOS 간에 키보드·마우스·키보드 공유

Windows MacOS, Linux 사이에서 모우스, 키보드, 클립보드를 공유하고 싶다면 barrier를 추천합니다.barrier는 Symless 개방원으로 개발하고 2진법을 유상으로 배포하는synergy1이다.9의 포크.barrier와synergy1을 비교하면 전자는 무료로 사용할 수 있습니다. 덕분에 deploy도 간단해졌습니다. 여기서 barrier를 소개합니다.
다음 필자의 환경[1]에 따라 설명하자면 맥OS 이외의 호스트를 사용하는 경우,Arch Linux 이외의 리눅스를 사용하는 경우도 마찬가지다.
graph 
Keyboard -->|USB| MacBookPro
TrackPad -->|USB| MacBookPro
MacBookPro["MacBookPro (a.local)"] -->|DisplayPort on USB-C| ディスプレイ
LinuxPC["Arch Linux PC (b.local)"] -->|DisplayPort| ディスプレイ
MacBookPro -->|barrier| LinuxPC

以下、SERVER側のhostnameをa.local, clientのhostnameをb.localと仮定するので、適宜読み替えてください

Arch Linux의 설정

ここでは、startxで直接Xを立ち上げるようにします。display managerを使う場合は、greeterでもbarrierが立ち上がるようにすれば良いのですが、sshでloginできるサーバーを操作するのにgreeterを操作しなければいけないの面倒なので、私はやっていません。

  1. Avahiを使ってa.localで名前解決ができるようにしておく:[2] https://wiki.archlinux.org/title/avahi#Hostname_resolution

  2. barrierをインストールする

    sudo pacman -S barrier
    

  3. ~/.xinitrc가 없으면 템플릿은/etc/X11/xinit/xinitrc에 복사해서 가져옵니다
    cp /etc/X11/xinit/xinitrc ~/.xinitrc
    

  4. ~/.xinitrc의 마지막 편집
    twm &
    xclock -geometry 50x50-1+1 &
    xterm -geometry 80x50+494+51 &
    xterm -geometry 80x20+494-0 &
    exec xterm -geometry 80x66+0+0 -name login
    
    다음으로 바꾸기:.
    /usr/bin/barrierc --enable-crypto --name b.local --no-daemon a.local 2>&1 >>~/.local/share/barrier/barrier.log &
    exec i3
    

  5. Client 인증서 및 Finger Print 설정
    mkdir -p .local/share/barrier/SSL/Fingerprints/
    openssl req -x509 -nodes -days 365 -subj /CN=Barrier -newkey rsa:4096 -keyout ~/.local/share/barrier/SSL/Barrier.pem -out ~/.local/share/barrier/SSL/Barrier.pem
    echo "v2:sha256:$(openssl x509 -fingerprint -sha256 -noout -in ~/.local/share/barrier/SSL/Barrier.pem | cut -d= -f2)" > ~/.local/share/barrier/SSL/Fingerprints/Local.txt
    

  6. 시작 X [3]
    sudo systemd-run --unit=x-$USER --property PAMName=login --property User=$USER --property StandardInput=tty --property TTYPath=/dev/tty8 /bin/bash -c 'chvt 8 && exec startx'
    
  7. macOS에서 설정


  8. hostname 확인
    $ hostname
    a.local
    

  9. barrier 설치
    brew install --cask barrier
    
    또는 수동https://github.com/debauchee/barrier/releases/에서 다운로드 및 설치

  10. Barrier.응용 프로그램을 시작합니다.

  11. “Barrier” would like to control computer using accessibility features. 대화상자가 나타나면 Open System Preference가 승인합니다.

  12. Do you want the application “Barrier.app” to accept incoming network connections?그렇게 물어보면 허락해.

  13. Barrier를 서버로 설정합니다.

  14. Barrier의 GUI가 SSL Fingerprint:Diables인 경우 다음과 같습니다[4].
    openssl req -x509 -nodes -days 365 -subj /CN=Barrier -newkey rsa:4096 -keyout ~/Library/Application\ Support/barrier/SSL/Barrier.pem -out ~/Library/Application\ Support/barrier/SSL/Barrier.pem
    

  15. Configure Server... > Screens and links 왼쪽 상단에 있는 screen 아이콘 drug and drop을 사용하여 Unnnamed screen을 만듭니다.이 버튼을 두 번 클릭하여 Screen name을 b.local로 변경합니다.

  16. 애플리케이션 메뉴의 Barrier & Change Settings (F4)에서 Require client certificate를 ON으로 설정

  17. Start 키를 누릅니다.

  18. 클라이언트 및 서버의 FingerPrint 교체
    CLIENT=b.local
    rsync ~/Library/Application\ Support/barrier/SSL/Fingerprints/Local.txt $CLIENT:~/.local/share/barrier/SSL/Fingerprints/TrustedServers.txt
    rsync $CLIENT:~/.local/share/barrier/SSL/Fingerprints/Local.txt ~/Library/Application\ Support/barrier/SSL/Fingerprints/TrustedClients.txt
    

  19. Reload 키를 누릅니다.
  20. 이렇게 하면 MacOS 모니터 가장자리로 커서를 이동하면 Linux 옆으로 커서가 이동하여 Linux를 조작할 수 있습니다.

    마운트 해제 시


    macOS에서 barrier를 제거하려면:
    rm -rf /Applications/Barrier.app
    rm ~/Library/Preferences/com.github.Barrier.plist
    rm -rf ~/Library/Application\ Support/barrier
    
    Arch Linux에서 barrier를 제거합니다.
    pacman -R barrier
    rm -rf ~/.local/share/barrier/
    
    각주
    정확히 말하면 EV3895의 USB 허브 기능을 사용하여 물리적으로 모두 모니터에 직접 연결되며 여기에 논리적인 연결이라고 쓰여 있다.↩︎
    Avahi를 사용하지 않고 IP를 직접 쳐도 괜찮습니다↩︎
    systemd를 사용하지 않거나 오래된 Xserver를 사용하지 않았을 때/etc/X11/Xwrapper입니다.config 설정:
    allowed_users = anybody
    needs_root_rights = yes
    
    다음과 같이 수행할 수 있습니다.단, 이것은 X 서버가 루트에서 이동하는 것이기 때문에 가능한 한 피합니다.
    startx
    
    ↩︎
    이것은 2.40입니다. 현재 자동으로 생성되어야 할 SSL 인증서가 생성되지 않았기 때문에workaround입니다.c.f. https://github.com/debauchee/barrier/issues/231#issuecomment-958800595 ↩︎

좋은 웹페이지 즐겨찾기