네트워크

[VM웨어] 내 컴퓨터에서 VM웨어 내 리눅스로 파일 전송하기(SSH,SCP프로토콜)

삼록이 2025. 8. 21. 22:59

내 컴퓨터(호스트)에서 VM웨어 안의 리눅스 서버(게스트)에 파일을 전송하기 위해서 사용하는 프로토콜이 있다.

SCP 프로토콜이다.

 

SCP 프로토콜

SSH 프로토콜 위에서 동작하는 파일 복사 전송용 프로토콜

즉, SSH를 이용해 파일을 안전하게 주고받는 프로토콜이다.

 

SSH 프로토콜

네트워크 상에서 원격 컴퓨터에 안전하게 접속하기 위한 프로토콜.

TCP 22번 포트 사용하는 것이 특징이다.

암호화된 통신을 쓰기 때문에, 해커가 네트워크를 훔쳐봐도 안전하다.

 

그러면 자바파일(jar파일)을 한번 리눅스에 전송해보려한다.


 

컴퓨터의 cmd나 powershell에 들어가 아래와 같은 명령어를 치면된다.

*scp   "내 컴퓨터의 파일경로"    리눅스 계정@리눅스IP:리눅스에서 저장할 경로

 

내 컴퓨터의 파일 경로는 해당 아이콘에다 우클릭 해서 경로로 복사를 하면 쉽게 알 수 있다.

그러고나서는  VM웨어 내의 리눅스 서버의 IP를 확인해보아야한다.

이때 쓰는 명령어가 ip addr show.

아래보면 lo와 ens33부분이 있는데 lo는 VM 자신만 쓸 수 있는 주소라 외부(VM웨어를 실행시키고 있는 PC, 브라우저 등)에서는 쓸 수 없다. ens33 부분이 VM의 실제 네트워크 인터페이스다. 여기에 나와있는 192.168.50.128 이 부분이 VM의 IP주소다.

 

ens33 인터페이스는 VM웨어에서 만든 가상 네트워크 카드의 이름이다.

실제 네트워크와 연결되는 진짜 통신 통로이며, 나의 PC(호스트) -> VM(게스트) <->외부 네트워크 

이 통신은 전부 이 인터페이스를 통해 동작한다.

 

 

그런데 보면 연결이 거절되었다고 뜬다.

 

리눅스 서버에 SSH 서버가 설치가 안되었기 때문이다.

SSH서버는 리눅스 서버 안에서 SSH프로토콜을 받아주는 소프트웨어이다.

처음에 언급했듯이 SCP는 SSH프로토콜을 기반으로 하고 윈도우에서 SCP프로토콜로 전송해도 VM웨어 내의 리눅스도 이 SSH프로토콜을 받아주는 프로그램이 있어야하는 것이다.

설치
sudo apt install openssh-server

부팅 시 자동실행
sudo systemctl enable ssh

ssh 즉시 실행
sudo systemctl start ssh 

상태확인
sudo systemctl status ssh

상태확인을 해보면 아래 active가 뜨면 성공이다.

 

그런다음 다시 scp전송을 하면  이렇게 리눅스 서버에 파일이 들어온 것을 알 수가 있다.


 

그런데 혹 아래와 같은 경고가 뜨며 전송이 실패될 수도 있다.

 

내 PC(윈도우)가 리눅스의 IP에 대해 SSH 서버의 호스트 키를 이미 저장해놨는데 지금 연결하려는 서버의 키가 다른 것이다.

그러면 사용자 폴더에가서  .ssh 폴더 안에 아래와 같은 파일들이 있는데 이걸 삭제하고 다시 하면 성공이 된다.

 

내 PC(윈도우or 리눅스 or 맥)는  처음으로 어떤 서버에 SSH/SCP 프로토콜로 접속하면 그 서버는 클라이언트(내 PC)에게 자신의 공개 키를 보내준다. 그러면 내 PC는 그걸 .ssh폴더 안에 known_host라는 파일로 저장해둔다.

이후에 PC가 그 서버에 접속할 때마다 이전에 보내줬던 공개키(known_host에 저장된 기존 )랑 현재 보내주는 공개키가 같은지 혹 변조는 안 됐는지 검증한다.

이 검증을 통해 다른 PC가 내 IP로 서버에 접속하여 내 PC인척하는 공격을 막는 검증인 것이다.

그런데 내가 VM웨어를 여러번 재설치를 하면서 이 공개키가 바뀐 상황이었고 그래서 옛날 기록을 지워버려 초기화 함으로써 정상작동한 것이다.