
개요
OpenStack 환경에서 배포나 테스트 작업을 위해 local 환경에서 패키징한 WAR 파일을 VM으로 옮겨야 했습니다. 보통은 scp 명령을 떠올리지만, 실제로는 SSH 공개키 인증 문제, 키페어 불일치, Security Group 설정 문제 등이 겹치면 생각보다 번거롭습니다.
기존에는 pem key를 이용해서 로컬 서버에서 원격 서버로 파일을 전송하려고 했지만, 권한 문제로 인해 파일 전송에 실패하였습니다.
PS C:\> scp -i .\br2_rocky9_zt_1104.pem .\project.war rocky@192.168.239.190:/project
Bad permissions. Try removing permissions for user: BUILTIN\\Users (S-1-5-32-545) on file C:/br2_rocky9_zt_1104.pem.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for './br2_rocky9_zt_1104.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "./br2_rocky9_zt_1104.pem": bad permissions
rocky@192.168.239.190: Permission denied (publickey).
사실 war 파일만 로컬 서버에서 가져오면 되는 상황이였기에, 복잡한 SSH 키 권한 설정을 맞추며 SCP를 사용하는 대신 더 간단한 방식인 wget으로 직접 파일을 다운로드하는 방법을 선택했습니다.
이번 글에서는 이러한 이유로 SCP 대신 wget을 활용해 손쉽게 파일을 전송하는 과정을 정리해 보려고 합니다.
사전 세팅
- 로컬 PC에서 파일을 제공하는 HTTP 웹 서버를 8000 포트로 실행합니다.
- 8000 포트를 통해 Openstack VM에서 wget 명령어로 파일을 다운로드하기 위해 HTTP server를 열어주었습니다.
python -m http.server 8000
Openstack VM 서버에서 wget 명령어를 이용한 파일 다운로드 (vm → windows)
VM
- HTTP 웹서버를 통해 local 시스템에 존재하는 war 파일을 다운로드할 수 있습니다.
- local system에 HTTP Request를 보냅니다.
[rocky@rocky9-3 target]$ sudo wget http://192.168.229.182:8000/project.war
--2025-11-17 17:08:51-- http://192.168.229.182:8000/project.war
Connecting to 192.168.229.182:8000... connected.
HTTP request sent, awaiting response... 200 OK
Length: 260118025 (248M) [application/octet-stream]
Saving to: ‘project.war’
project.war 100%[=====================================================================================================>] 248.07M 111MB/s in 2.2s
Windows
- Windows에서는 python -m http.server 8000 으로 실행한 HTTP 서버가 VM에서 들어오는 HTTP 요청을 받고, 해당 파일을 HTTP Response로 반환합니다.
- 즉, VM의 HTTP Request에 대한 응답(Response)로 해당 war파일을 전송하게 됩니다.
PS C:\> python -m http.server 8000
Serving HTTP on :: port 8000 (http://[::]:8000/) ...
::ffff:192.168.239.190 - - [17/Nov/2025 17:08:40] "GET /project.war HTTP/1.1" 200 -
----------------------------------------
Exception occurred during processing of request from ('::ffff:192.168.239.190', 41750, 0, 0)
Traceback (most recent call last):
File "C:\Python312\Lib\socketserver.py", line 692, in process_request_thread
self.finish_request(request, client_address)
File "C:\Python312\Lib\http\server.py", line 1311, in finish_request
self.RequestHandlerClass(request, client_address, self,
File "C:\Python312\Lib\http\server.py", line 672, in __init__
super().__init__(*args, **kwargs)
File "C:\Python312\Lib\socketserver.py", line 761, in __init__
self.handle()
File "C:\Python312\Lib\http\server.py", line 436, in handle
self.handle_one_request()
File "C:\Python312\Lib\http\server.py", line 424, in handle_one_request
method()
File "C:\Python312\Lib\http\server.py", line 679, in do_GET
self.copyfile(f, self.wfile)
File "C:\Python312\Lib\http\server.py", line 878, in copyfile
shutil.copyfileobj(source, outputfile)
File "C:\Python312\Lib\shutil.py", line 204, in copyfileobj
fdst_write(buf)
File "C:\Python312\Lib\socketserver.py", line 840, in write
이상으로 VM에서 간단하게 로컬 서버의 war 파일을 가져오는 과정에 대해 알아보았습니다.
'Linux' 카테고리의 다른 글
| [Linux] ssh 원격 접속 실패 시 해결책 (WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!) (0) | 2025.05.14 |
|---|---|
| [Linux] Curl(Client url) 명령어에 대해 알아보자 (1) | 2024.06.04 |