Post

Vultr_windows10

Vultr_windows10

layout: post title: ‘vultr windows 10 구축’ description: ‘windows 10을 vultr 서버에 구축하는 방법’ excerpt: ‘windows 10을 vultr 서버에 구축하는 방법에 대한 가이드’

categories:

  • windows tags:
  • [ windows, vultr ]

toc: true toc_sticky: true

date: 2025-05-25 create_date: 2025-05-25

hide: false comments: true permalink: /wiki/etc/vultr_windows10


목차


virtio windows 10 iso 제작 및 업로드

윈도우 10 iso 파일을 제작하기 위해서는 Microsoft의 공식 웹사이트에서 Windows 10 설치 미디어 도구를 다운로드하여 사용합니다. 이 도구를 사용하면 ISO 파일을 생성할 수 있습니다.
https://www.microsoft.com/ko-kr/software-download/windows10ISO
이 도구를 사용해 iso 파일을 만듭니다.

아래 문서를 참고해 최신 버전의 virtio iso 파일을 다운로드 합니다.
https://github.com/virtio-win/kvm-guest-drivers-windows/wiki/Driver-installation
다운로드한 virtio iso 파일을 압축해제하여 폴더로 만듭니다.

PowerISO (유료), AnyBurn (무료) 등의 프로그램을 사용해 windows ISO 파일을 편집합니다.

저는 무료 AnyBurn 프로그램을 사용했습니다. \

  • AnyBurn 프로그램을 실행하고 Edit image file 메뉴를 선택합니다.
  • windows 10 iso 파일을 선택하고 다음 버튼을 누릅니다.
  • Add 버튼을 통해 압축 해제한 virtio 폴더를 추가합니다.
  • 다읍 버튼을 눌러 편집된 iso 파일을 저장합니다.

구운 iso를 드롭박스나 자신의 웹서버에 올립니다.
저는 웹서버에 test.iso 라는 이름으로 올렸습니다. (이상하게 windows10.iso로 올리니까 Unable to contact remote server 메시지와 함께 vultr에서 인식이 안되더군요.)

이제 vultr에 접속해서 iso 파일을 업로드 합니다.

1
Products > Orchestration > ISOs > + Add ISO

드롭박스나 웹서버에 올린 iso 파일의 URL을 입력하고 업로드를 시작합니다. (URL은 .iso로 끝나야 정상적으로 업로드가 됩니다.)

image)

끝났다면 아래와 같이 Status가 Available 상태인 것을 확인합니다.

vultr 서버 구동

1
Compute > Deploy +

Type: Delicated CPU, 리전: Asia > Seoul, 사양: 1 vCPU, 4GB RAM, 30GB NVMe, Automatic Backups disable

Image: Custom ISO (ISO/iPXE) -> test.iso 선택

개인적으로 1 vCPU, 4GB RAM, 30GB NVMe 사양보다 조금 더 높은 사양으로 구동해야 하는 게 아닌가 싶다.
단순 windows만 실행했는데도 cpu가 튀고, 램 점유율이 상당히 높았다.

서버를 생성하고 view console 버튼을 누르면 아래와 같은 창이 뜰 텐데, 이때는 그냥 기다리면 된다.

image

이후 일반 윈도우 설치하듯이 진행하다가, 디스크 선택 화면에서 진행이 되지 않는다.
이때는 드라이버를 불러와야 하는데 드라이버 로드 버튼을 눌러 드라이버를 불러온다.

CD 드라이브가 E 라고 가정했을 때 E 드라이브에 windows 10 iso를 편집할 때, 수동으로 넣었던 폴더명이 보일 것이다.
폴더명이 virtio-win-0.1.271 이라면, 이 폴더명에서 드라이버를 찾아야 한다.
폴더명 기준 설치해야 하는 드라이버 경로는 아래와 같다.

  • 디스크 드라이버
    • E:\virtio-win-0.1.271\viostor\win10(자신의 os - win11이면 win11을 선택하면 된다.)\amd64
  • 네트워크 드라이버
    • E:\virtio-win-0.1.271\NetKVM\win10(자신의 os - win11이면 win11을 선택하면 된다.)\amd64

이후 일반 윈도우 설치하듯 진행하면 된다. 참고 블로그

윈도우 10 ssh 구성 (OpenSSH Server)

참고 블로그

Windows 검색창 > 선택적 기능 추가 > OpenSSH Server 선택 후 설치

이후 검색창에서 서비스 입력 (또는 Win+R 버튼 누르고 services.msc 입력)

image

이 두 서비스를 찾는다.

우클릭 눌러서 속성 버튼 클릭
시작 유형이 사용 안 함 으로 되어 있을텐데, 이것을 자동 으로 바꾸고 적용 버튼을 누른다.
이러면 시작 버튼이 활성화 될 텐데, 시작 버튼을 눌러서 서비스를 시작한다.

C:\ProgramData\ssh 폴더에서 sshd_config 파일을 열어서 수정한다.

  • Port 부분을 원하는 서비스 포트로 수정
  • ListenAddres 부분을 0.0.0.0
  • PermitRootLogin 부분을 no
  • PubkeyAuthentication 옵션값 yes (필자는 공개키/개인키로 접근할거라서)
  • PasswordAuthentication 옵션값 no 설정
  • ChrootDirectory 부분을 원하는 디렉토리로 수정 (필자는 C:\sftpdir 로 설정했다.)
    • scp, sftp의 편안한 파일 전송을 위해 설정하는 것이 정신건강에 좋다. (윈도우는 리눅스와 달리 드라이브가 있어서 설정 안하면 드라이브 정보를 기입해줘야 하기 때문에 불편하다.)
  • 마지막으로 맨 아래 # Match Group administrators 부분 주석처리 (이 부분을 주석처리하지 않으면 administrators 그룹에 대한 공개키는 C:\ProgramData\ssh\administrators_authorized_keys 파일의 것만 적용된다.)
    1
    2
    
    # Match Group administrators
    #       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
    
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.

Port 12345
#AddressFamily any
ListenAddress 0.0.0.0
#ListenAddress ::

#HostKey __PROGRAMDATA__/ssh/ssh_host_rsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_dsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ecdsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ed25519_key

# Ciphers and keying
#RekeyLimit default none

# Logging
#SyslogFacility AUTH
LogLevel INFO
#LogLevel DEBUG3

# Authentication:

#LoginGraceTime 2m
PermitRootLogin no
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

PubkeyAuthentication yes

# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile	.ssh/authorized_keys

#AuthorizedPrincipalsFile none

# For this to work you will also need host keys in %programData%/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
#PermitEmptyPasswords no

#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
#PermitTTY yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#PermitUserEnvironment no
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS no
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
ChrootDirectory "C:\sftpdir"
#VersionAddendum none

# no default banner path
#Banner none

# override default of no subsystems
Subsystem	sftp	sftp-server.exe

# Example of overriding settings on a per-user basis
#Match User anoncvs
#	AllowTcpForwarding no
#	PermitTTY no
#	ForceCommand cvs server

# Match Group administrators
#        AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

공개키 설정

자신이 접속할 계정의 홈 디렉토리에 .ssh 폴더를 만들고 그 안에 authorized_keys 파일을 만든다.
authorized_keys 파일에 자신의 공개키를 추가한다.

이후 서비스에서 OpenSSH SSH Server 서비스를 우클릭 > 다시 시작 버튼을 눌러 바뀐 sshd_config 파일을 적용한다.

번외: 윈도우 10 ssh에서 백그라운드로 프로그램 실행

powershell을 실행하고 Start-Process 명령어를 사용하면 백그라운드로 프로그램을 실행할 수 있다.

1
powershell "Start-Process python -ArgumentList 'C:\sftpdir\test\hello.py' -WindowStyle Hidden -RedirectStandardOutput 'C:\sftpdir\test\output.log' -RedirectStandardError 'C:\sftpdir\test\error.log'"

백그라운드로 시작된 프로그램의 종료는 아래와 같이 프로세스를 확인해 종료시킬 수 있다.

1
2
3
4
5
6
7
8
9
# 파이썬 프로세스 확인
c:\sftpdir>tasklist | findstr python
python.exe                    4108 Services                   0      9,636 K

# 특정 프로세스 종료
c:\sftpdir>taskkill /f /pid 4108 [PID번호]
성공: 프로세스(PID 4108)가 종료되었습니다.

taskkill /f /im python.exe (명령어로 프로세스명을 통해 종료시킬 수 있다.)

hello.py 파일을 사용해 테스트해보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import os
import time
from sys import exit

SCRIPT_DIR: str = os.path.dirname(os.path.abspath(__file__))

WRITE_FILE: str = SCRIPT_DIR + "/hello.txt"

print(f"WRITE_FILE: {WRITE_FILE}")

# 프로그램 시작 시 hello.txt 파일 완전히 삭제
try:
    if os.path.exists(WRITE_FILE):
        os.remove(WRITE_FILE)
    print("기존 hello.txt 파일이 삭제되었습니다.")
except Exception as e:
    print(f"오류 발생: {e}")
    exit(1)

# 1초마다 숫자 증가하며 "hello world" 메시지를 파일에 추가
counter = 1
try:
    while True:
        message = f"{counter} hello world\n"

        # 파일에 추가 모드로 쓰기
        with open(WRITE_FILE, 'a', encoding='utf-8') as f:
            f.write(message)

        print(f"Written: {message.strip()}")

        counter += 1
        time.sleep(1)

except KeyboardInterrupt:
    print("\n스크립트가 중단되었습니다.")
except Exception as e:
    print(f"오류 발생: {e}")

Start-Process 명령어를 사용해 hello.py 파일을 백그라운드로 실행한다.
만약 프로그램이 정상적으로 실행되었다면 hello.txt 파일이 생성되고 1초마다 n(숫자) hello world 메시지가 추가될 것이다.

윈도우 10 자동 업데이트 비활성화

참고 블로그

시작버튼 > 설정 > 업데이트 및 보안 > 고급 옵션
모두 비활성화

image

시작 검색버튼 > 서비스 (또는 Win+R 버튼 누르고 services.msc 입력)

Windows Update 서비스를 찾아 우클릭 > 속성
시작유형: 사용 안 함 또는 수동 으로 설정
적용 버튼 클릭

image

이후 복구 탭에서
첫째 실패, 둘째 실패, 후속 실패 모두 동작하지 않음 설정
적용 버튼 클릭

image

이후 Win+R 버튼 눌러서 gpedit.msc 입력

1
로컬 컴퓨터 정책 > 컴퓨터 구성 > 관리 템플릿 > Windows 구성 요소 > Windows 업데이트

자동 업데이트 구성 을 찾아 더블클릭

image

사용 안함 설정

image

이후 재부팅

재부팅 후에는 Windows 업데이트를 자동으로 진행하지 않기 때문에
시작버튼 > 설정 > Windows 업데이트 > 업데이트 확인 버튼을 눌러서 손수 Windows 업데이트를 진행해야 한다.

필자는 Windows 10을 자동으로 업데이트 및 재부팅을 하지 않도록 설정했기 때문에 이 옵션을 비활성화 했다.

윈도우 10 실시간 보호 비활성화

참고 블로그

시작버튼 > 설정 > 업데이트 및 보안 > Windows 보안(왼쪽 패널) > 실시간 보호 비활성화 및 기타 옵션 모두 비활성화
이후 앱 및 브라우저 컨트롤 > 모두 비활성화

Win+R 버튼 누르고 regedit 입력

1
HKEY_LOCAL_MACHINE > SOFTWARE > Policies > Microsoft > Windows Defender

새로만들기 DWORD (32-bit) Value 선택 DisableAntiSpyware 이름으로 생성
값 데이터를 1 로 설정 (단위: 16진수)

Win+R 버튼 누르고 gpedit.msc 입력

1
로컬 컴퓨터 정책 > 컴퓨터 구성 > 관리 템플릿 > Windows 구성 요소 > Windows Defender 바이러스 백신

Microsoft Defender 바이러스 백신 끄기 찾아서 더블클릭 > 사용

이후 재부팅

윈도우 10 cron 스케쥴러 등록

미국 장종료가 진행되는 오전 6시 이후, 6시 30분에 매일 재부팅되도록 스케쥴러를 등록한다.

1
2
3
4
5
6
7
8
9
10
:: 스케쥴러 등록
schtasks /create /tn "DailyReboot630AM" /tr "shutdown /r /f /t 30 /c \"Scheduled daily reboot at 6:30AM\"" /sc daily /st 06:30 /ru SYSTEM /rl HIGHEST

:: 스케쥴러 삭제
:: schtasks /delete /tn "DailyReboot630AM" /f

:: 스케쥴러 조회
:: schtasks /query /tn "DailyReboot630AM"
:: 스케쥴러 상세 조회
:: schtasks /query /tn "DailyReboot630AM" /v /fo list

Win+R 버튼 누르고 shell:startup 입력 이후 bat, ps 파일을 생성하거나 파이썬 파일을 바로가기 링크로 두어 재부팅 이후 자동으로 실행되도록 한다.

파이썬 설치

이후 파이썬 공식 홈페이지에서 설치 진행.

- 끝 -

This post is licensed under CC BY 4.0 by the author.