웹사이트 검색

Apache Guacamole을 사용하여 VNC 연결을 생성하는 방법


이 페이지에서

  1. 전제 조건
  2. 1단계 - 서버에 데스크탑 GUI 설치
  3. 2단계 - TigerVNC 서버 설치
  4. 3단계 - VNC 사용자 자격 증명 만들기
  5. 4단계 - VNC Systemd Unit 파일 생성
  6. 5단계 - VNC 서버 시작
  7. 6단계 - 방화벽 구성\n
  8. 7단계 - CentOS/Rocky Linux/AlmaLinux 서버에 대한 VNC 연결 생성\n
    1. VNC를 사용하여 시스템에 액세스\n

    1. SSH 터널 만들기
    2. VNC를 사용하여 시스템에 액세스\n

    최근에 Apache Guacamole을 설치하고 사용하여 Rocky Linux 8 기반 서버에서 SSH 연결을 생성하는 방법을 배웠습니다. Guacamole의 가장 인기 있는 용도 중 하나는 VNC(Virtual Network Computing) 뷰어로 사용하는 것입니다. VNC를 사용하면 타사 클라이언트를 설치하지 않고도 어디서나 데스크탑이나 서버에 액세스할 수 있습니다.

    이 자습서에서는 Linux 서버에 VNC를 설치하고 Guacamole을 사용하여 VNC 연결을 만드는 방법을 배웁니다. 우리는 모든 일반적인 분포를 다루고 필요할 때마다 차이점을 명시할 것입니다.

    전제 조건

    • A server running Rocky Linux, CentOS, AlmaLinux, Ubuntu or Debian.

    • Apache Guacamole should be installed. tutorials for the same.

    • A non-root user with sudo privileges is available on the server you are connecting to.

    • A minimum of 2 CPU cores and 4GB RAM on your remote servers for a smooth VNC connection.

    • Make sure everything is updated.

      CentOS / Rocky Linux / AlmaLinux

      $ sudo dnf update
      

      Ubuntu / Debian

      $ sudo apt update && sudo apt upgrade
      
    • Install basic utility packages. Some of them may already be installed.

      CentOS / Rocky Linux / AlmaLinux

      $ sudo dnf install wget curl nano unzip yum-utils -y
      

      Ubuntu / Debian

      $ sudo apt install wget curl nano unzip -y
      

    1단계 - 서버에 데스크탑 GUI 설치

    자습서에서는 Xfce 그래픽 환경을 설치합니다. 그러나 원하는 환경을 설치하도록 선택할 수 있습니다. GUI를 설치하려면 다음 명령을 실행하십시오.

    CentOS/록키 리눅스/AlmaLinux

    $ sudo dnf install -y epel-release
    $ sudo dnf groupinstall -y "Xfce" "base-x"
    $ sudo systemctl set-default graphical
    $ sudo reboot
    

    Apache Guacamole 튜토리얼을 따라왔다면 첫 번째 명령을 건너뛸 수 있도록 EPEL 리포지토리가 이미 설치되어 있을 것입니다. 두 번째 명령은 실제 그래픽 환경 및 라이브러리를 설치하고 세 번째 명령은 GUI 환경을 기본값으로 설정합니다. 설치를 적용하려면 서버를 재부팅해야 합니다.

    우분투/데비안

    $ sudo apt install xfce4 xfce4-goodies
    $ sudo systemctl set-default graphical
    $ sudo reboot
    

    2단계 - TigerVNC 서버 설치

    시스템에 설치하도록 선택할 수 있는 많은 VNC 서버 응용 프로그램이 있습니다. 자습서에서는 TigerVNC 서버 소프트웨어를 설치합니다.

    다음 명령을 실행하여 TigerVNC 서버를 설치합니다.

    CentOS/록키 리눅스/AlmaLinux

    $ sudo dnf install tigervnc-server
    

    우분투/데비안

    $ sudo apt install tigervnc-standalone-server
    

    3단계 - VNC 사용자 자격 증명 생성

    다음 단계는 연결할 VNC에 대한 시스템 사용자를 생성하는 것입니다.

    CentOS/록키 리눅스/AlmaLinux

    다음 명령을 실행하여 새 사용자를 만들고 암호를 설정합니다. vncuser를 원하는 사용자 이름으로 바꾸십시오.

    $ sudo adduser vncuser
    $ sudo passwd vncuser
    

    다음 단계는 VNC 클라이언트에서 시스템의 서버로 연결하는 데 사용할 액세스 암호를 만드는 것입니다.

    vncuser로 전환합니다.

    $ sudo su - vncuser
    

    VNC 액세스 암호를 설정합니다.

    $ vncpasswd 
    Password:
    Verify:
    Would you like to enter a view-only password (y/n)? y
    Password:
    Verify:
    

    비밀번호를 생성하고 동일하게 확인하라는 메시지가 표시됩니다. 다음으로 보기 전용 비밀번호를 만들 것인지 묻는 메시지가 표시됩니다. 보기 전용 암호는 VNC 액세스를 시스템 보기로만 제한하고 마우스나 키보드를 사용한 모든 상호 작용을 금지하려는 경우에 유용합니다. 이러한 암호를 설정하려면 y를 입력하고 프로세스를 완료하려면 n을 입력하십시오.

    vncuser 셸을 종료합니다.

    $ exit
    

    우분투/데비안

    다음 명령을 실행하여 새 사용자를 만들고 암호를 설정합니다. vncuser를 원하는 사용자 이름으로 바꾸십시오.

    $ sudo adduser vncuser
    Adding user `vncuser' ...
    Adding new group `vncuser' (1001) ...
    Adding new user `vncuser' (1001) with group `vncuser' ...
    Creating home directory `/home/vncuser' ...
    Copying files from `/etc/skel' ...
    New password:
    Retype new password:
    passwd: password updated successfully
    Changing the user information for vncuser
    Enter the new value, or press ENTER for the default
            Full Name []:
            Room Number []:
            Work Phone []:
            Home Phone []:
            Other []:
    Is the information correct? [Y/n] y
    

    vncuser로 전환합니다.

    $ sudo su - vncuser
    

    VNC 액세스 암호를 설정합니다.

    $ vncpasswd 
    Password:
    Verify:
    Would you like to enter a view-only password (y/n)? y
    Password:
    Verify:
    

    Xfce를 사용하려면 TigerVNC의 시작 파일을 구성해야 합니다.

    편집을 위해 ~/.vnc/xstartup 파일을 엽니다.

    $ sudo nano ~/.vnc/xstartup
    

    다음 코드를 붙여넣습니다.

    #!/bin/sh
    unset SESSION_MANAGER
    unset DBUS_SESSION_BUS_ADDRESS
    exec startxfce4 
    

    Ctrl + X를 누르고 저장하라는 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.

    ~/.vnc/config 파일을 통해 VNC에 대한 추가 옵션을 구성할 수 있습니다. 편집할 파일을 만들고 엽니다.

    $ sudo nano ~/.vnc/config
    

    다음 코드를 붙여넣습니다.

    geometry=1024x768
    dpi=96
    depth=24
    

    Ctrl + X를 누르고 저장하라는 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.

    VNC 서버를 테스트합니다.

    $ vncserver
    /usr/bin/xauth:  file /home/vncuser/.Xauthority does not exist
    
    
    New 'vncdesktop:1 (vncuser)' desktop at :1 on machine vncdesktop
    
    Starting applications specified in /home/vncuser/.vnc/xstartup
    Log file is /home/vncuser/.vnc/vncdesktop:1.log
    
    Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/vncuser/.vnc/passwd :1 to connect to the VNC server.
    

    다음 명령을 사용하여 모든 현재 VNC 세션 목록을 가져올 수 있습니다.

    $ vncserver -list
    TigerVNC server sessions:
    
    X DISPLAY #     RFB PORT #      PROCESS ID
    :1              5901            1029
    

    다음 단계에서는 프로세스에 대한 서비스 파일을 생성하므로 프로세스를 종료해야 합니다.

    $ vncserver -kill :1
    Killing Xtigervnc process ID 1029... success!
    

    사용자 셸을 종료합니다.

    $ exit
    

    4단계 - VNC Systemd Unit 파일 생성

    CentOS/록키 리눅스/AlmaLinux

    TigerVNC의 시스템 서비스 단위 파일은 /lib/systemd/system 디렉터리에서 사용할 수 있습니다. 파일을 /etc/systemd/system 디렉터리에 복사합니다.

    $ sudo cp /lib/systemd/system/:1.service
    

    VNC 서버는 기본적으로 포트 5900에서 실행됩니다. 모든 사용자는 별도의 포트에서 VNC 서버 인스턴스를 실행해야 합니다. 명령 끝에 있는 숫자 :1은 VNC가 5900의 하위 포트에서 서비스를 실행하도록 지시합니다. 따라서 :1은 포트로 변환됩니다. 5900, :2는 포트 5902 등으로 변환됩니다.

    VNC는 서비스를 실행할 포트 번호를 알아야 할 뿐만 아니라 어떤 사용자가 어떤 포트 번호로 서버를 실행할지 지정해야 합니다. /etc/tigervnc/vncserver.users 파일을 편집하여 이를 구성할 수 있습니다. 편집을 위해 엽니다.

    $ sudo nano /etc/tigervnc/vncserver.users
    

    # :2=andrew 바로 앞에 :1=vncuser 값을 입력하면 다음과 같이 됩니다.

    # TigerVNC User assignment
    #
    # This file assigns users to specific VNC display numbers.
    # The syntax is <display>=<username>. E.g.:
    #
      :1=vncuser
    # :2=andrew
    # :3=lisa
    

    Ctrl + X를 누르고 저장하라는 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.

    우분투/데비안

    설치 프로그램은 Ubuntu 또는 Debian 시스템에 systemd 서비스 파일을 설치하지 않습니다. 수동으로 생성해야 합니다. TigerVNC용 시스템 단위 파일을 생성하고 엽니다.

    $ sudo nano /etc/systemd/system/
    

    다음 코드를 붙여넣습니다.

    [Unit]
    Description=Remote desktop service (VNC)
    After=syslog.target network.target
    
    [Service]
    Type=simple
    User=vncuser
    PAMName=login
    PIDFile=/home/%u/.vnc/%H%i.pid
    ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill :%i > /dev/null 2>&1 || :'
    ExecStart=/usr/bin/vncserver :%i -geometry 1440x900 -alwaysshared -fg
    ExecStop=/usr/bin/vncserver -kill :%i
    
    [Install]
    WantedBy=multi-user.target
    

    Ctrl + X를 누르고 저장하라는 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.

    다음 단계는 모든 Linux 배포판에 공통입니다.

    systemd 데몬을 다시 로드하여 서비스를 활성화합니다.

    $ sudo systemctl daemon-reload
    

    5단계 - VNC 서버 시작

    CentOS/록키 리눅스/AlmaLinux

    VNC 서버 서비스를 시작합니다.

    $ sudo systemctl start :1
    

    서비스가 시스템 재부팅 후에도 계속 실행되도록 하려면 서비스를 활성화할 수 있습니다.

    $ sudo systemctl enable :1
    

    서비스 상태를 확인합니다.

    $ sudo systemctl status :1
    ? :1.service - Remote desktop service (VNC)
       Loaded: loaded (/etc/systemd/system/:1.service; disabled; vendor preset: disabled)
       Active: active (running) since Wed 2022-03-16 01:16:18 UTC; 6s ago
      Process: 6777 ExecStart=/usr/libexec/vncsession-start :1 (code=exited, status=0/SUCCESS)
     Main PID: 6784 (vncsession)
        Tasks: 0 (limit: 11179)
       Memory: 1.1M
       CGroup: /system.slice/system-vncserver.slice/:1.service
               ? 6784 /usr/sbin/vncsession vncuser :1
    
    Mar 16 01:16:18 guacamole systemd[1]: Starting Remote desktop service (VNC)...
    Mar 16 01:16:18 guacamole systemd[1]: Started Remote desktop service (VNC).
    

    우분투/데비안

    VNC 서버 서비스를 시작합니다.

    $ sudo systemctl start 
    

    VNC 서비스를 활성화합니다.

    $ sudo systemctl enable 
    

    서비스 상태를 확인합니다.

    $ sudo systemctl status 
    ?  - Remote desktop service (VNC)
         Loaded: loaded (/etc/systemd/system/; enabled; vendor preset: enabled)
         Active: active (running) since Sat 2022-03-19 09:42:28 UTC; 6s ago
        Process: 1420 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
       Main PID: 1455 (vncserver)
          Tasks: 0 (limit: 4686)
         Memory: 884.0K
         CGroup: /system.slice/system-vncserver.slice/
                 ? 1455 /usr/bin/perl /usr/bin/vncserver :1 -geometry 1440x900 -alwaysshared -fg
    
    Mar 19 09:42:28 vncdesktop systemd[1]: Starting Remote desktop service (VNC)...
    Mar 19 09:42:28 vncdesktop systemd[1420]: pam_unix(login:session): session opened for user vncuser by (uid=0)
    Mar 19 09:42:28 vncdesktop systemd[1]: Started Remote desktop service (VNC).
    Mar 19 09:42:29 vncdesktop systemd[1455]: pam_unix(login:session): session opened for user vncuser by (uid=0)
    

    6단계 - 방화벽 구성

    네트워크를 통해 VNC에 액세스할 수 있도록 하려면 해당 포트를 열어야 합니다.

    CentOS/록키 리눅스/AlmaLinux

    다음 명령을 실행하여 VNC 포트를 열고 방화벽을 다시 로드합니다.

    $ sudo firewall-cmd --permanent --add-service=vnc-server
    $ sudo firewall-cmd --reload
    

    우분투/데비안

    $ sudo ufw allow 5901:5910/tcp
    $ sudo ufw reload
    

    7단계 - CentOS/Rocky Linux/AlmaLinux 서버에 대한 VNC 연결 생성

    Guacamole URL을 열고 자격 증명을 입력하여 로그인하십시오.

    Guacamole 설정에서 연결 탭을 방문하십시오. 새 연결 버튼을 클릭합니다.

    연결 이름을 선택하고 드롭다운 메뉴에서 VNC를 선택합니다.

    매개변수 섹션에서 호스트 이름으로 서버 IP 주소(이 경우 167.172.46.187)를 입력하고 포트로 5901을 입력합니다. 인증 섹션에서 VNC 시스템 사용자 이름과 비밀번호를 입력합니다.

    추가 설정을 활성화하려면 그렇게 하십시오. 저장을 클릭하여 연결 추가를 마칩니다.

    VNC를 사용하여 컴퓨터에 액세스

    Guacamole 대시보드를 방문하고 모든 연결 섹션에서 VNC 연결을 클릭합니다.

    서버의 잠금 화면이 표시됩니다.

    그것을 닫고 VNC 사용자 자격 증명을 입력하십시오.

    잠금 해제 버튼을 눌러 서버/데스크톱 홈 화면으로 이동합니다.

    기계에서 작업을 시작할 수 있습니다.

    8단계 - 원격 Ubuntu/Debian 서버에 대한 VNC 연결 생성

    Guacamole 설치와 데스크톱 환경이 동일한 서버에 있는 경우 위의 단계를 사용하여 서버 VNC에 액세스할 수 있습니다. Rocky Linux 설치는 동일한 서버에 있었지만 Ubuntu 환경은 다른 서버에 있었습니다. 이 경우 보다 안전한 방법이므로 SSH 터널링을 사용하여 서버에 대한 VNC 연결을 생성합니다.

    Guacamole URL을 열고 자격 증명을 입력하여 로그인하십시오.

    Guacamole 설정에서 연결 탭을 방문하십시오. 새 연결 버튼을 클릭합니다.

    연결 이름을 선택하고 드롭다운 메뉴에서 VNC를 선택합니다.

    매개변수 섹션에서 호스트 이름으로 localhost 주소를 입력하고 포트로 5001을 입력합니다. 인증 섹션은 다음 단계에서 사용할 것이므로 비워 둡니다. 잠시 후에 localhost를 호스트로 사용한 이유에 대해서도 이야기하겠습니다.

    추가 설정을 활성화하려면 그렇게 하십시오. 저장을 클릭하여 연결 추가를 마칩니다.

    SSH 터널 생성

    Guacamole을 호스팅하는 서버의 터미널에서 다음 명령을 실행합니다.

    $ ssh -L 5001:localhost:5901 
    

    여기서 무슨 일이 일어나고 있는지 살펴보겠습니다. 위의 명령은 로컬 포트 전달을 사용하여 시스템 SSH 연결을 원격 서버로 전달합니다.

    • -L 플래그는 로컬 포트 포워딩을 지정합니다.\n
    • 5001 포트는 원격 서버에 액세스할 수 있는 Guacamole 시스템의 포트입니다. 원하는 경우 다른 포트를 선택할 수 있습니다.\n
    • localhost:5901은 연결할 원격 VNC 서버 및 디스플레이 번호(및 해당 포트 번호)입니다. 로컬 포트 전달을 수행하고 있으므로 원격 서버 주소는 localhost로 변환됩니다.\n
    • [email 는 우리가 액세스하는 원격 Ubuntu/Debian 서버의 SSH 사용자 및 IP 주소입니다.\n

    명령이 실행되는 동안 SSH 터널은 열린 상태로 유지됩니다. 터미널에서 exit를 입력하여 터널을 종료하고 VNC 연결을 닫습니다.

    VNC를 사용하여 컴퓨터에 액세스

    Guacamole 대시보드를 방문하고 모든 연결 섹션에서 VNC 연결을 클릭합니다.

    vncpasswd 명령을 사용하여 설정한 VNC 비밀번호를 묻는 비밀번호 프롬프트가 나타납니다. 비밀번호를 입력하고 계속을 눌러 진행합니다.

    성공적으로 확인되면 시스템 바탕 화면으로 이동합니다.

    기계에서 작업을 시작할 수 있습니다.

    결론

    이것으로 Apache Guacamole을 사용하여 Linux 서버와 VNC 연결을 만드는 방법에 대한 자습서를 마칩니다. 질문이 있으시면 아래 의견에 게시하십시오.