본문 바로가기
AI프로그래밍 리뷰/프로그래밍

딥러닝을 위한 리눅스(Ubuntu) GPU 서버 구축하기 - 1. Server setting

by 펄서까투리 2023. 4. 1.

# 세줄 요약 #

1. Server Setting: 고정 IP 설정, ssh 포트 변경 및 포트 포워딩 설정, ssh 연결 자동화

2. GPU 설정: Nvidia Driver 설치 (* CUDA & Anaconda는 "Docker" 사용할 것이므로 제외!)

3. 추가 설정: Docker 설치(+Nvidia container toolkit 설치), NFS 설치 및 세팅

 

# 상세 리뷰 #

* GPU 서버 환경: Linux(Ubuntu) base, Nvidia GPU

* 로컬 컴퓨터 환경: Linux or MAC

 

1. Server Setting

- Ubuntu update: 설치 시작 전에 우분투 업데이트 (가능하면 정기적으로 가끔씩 해주자!)

sudo apt update && sudo apt upgrade

 

1-1. 고정 IP 설정

 - IP 변경 (Server IP 신청 시에 고정 IP로 변경해야한다. 일반적으로는 동적 IP 할당 상태일 것이다)

sudo vi /etc/netplan/01-network-manager-all.yaml

 

################
# YAML 파일 편집 #
################

# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager # NetworkManger or networkd
ethernets:
	enp4s0: # ifconfig에서 검색
		dhcp4: no
		dhcp6: no
		addresses: [111.222.333.123/24] # IP주소/넷마스크(가능하면 24로)
		gateway4: 111.222.333.1 # 게이트웨이 주소
		nameservers:
			addresses: [111.22.33.1, 111.22.33.2] # DNS 주소 1, 2

 

 - IP 업데이트

sudo netplan apply

 

 

1-2. ssh 포트 변경 및 외부접속 허용된 포트 포워딩

 - ssh 포트 변경

  • 기본은 22로 되어있으나 이는 모두가 사용가능하므로 바꿔주면 좋다.
  • 일반적으로 0~1000까지는 고정적으로 사용되는 포트가 많으므로 그 이상의 숫자로 바꿔주자 (예. 2222)
  • sshd config 파일에서 포트 변경 (경로: /etc/ssh/sshd_config)
sudo vi /etc/ssh/sshd_config

 

#######################
# sshd config 파일 편집 #
#######################

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin

# 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 2222 # (주석처리 "#"을 지우고, 원하는 숫자로 변경)
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

 

- ssh 재시작

sudo systemctl restart ssh

 

 - 포트포워딩 

 

- 포트 현황 조회

sudo iptables -t nat -L --line-numbers

 

- 포트 포워딩 등록

sudo iptables -t nat -A PREROUTING -p tcp --dport 1234 -j REDIRECT --to-port 2222
# 1234: 출발 포트 번호 (외부접속 허용된 포트 번호)
# 2222: 내가 새로 설정한 ssh 포트 번호

 

##########################
# iptalbes 조회시 나오는 항목 #
##########################

Chain PREROUTING (policy ACCEPT)
num  target     prot opt source               destination         
1    REDIRECT   tcp  --  anywhere             anywhere             tcp dpt:1234 redir ports 2222

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
num  target     prot opt source               destination

 

 - 포트포워딩 삭제

sudo iptables -t nat -D PREROUTING 1
# 1: 앞서 조회한 PREROUNTING 항목에서 번호를 찾아서 삭제
  • 참고로 서버를 재부팅 시에는 포트포워딩도 초기화되므로 다시 설정해주어야 한다!

 

1-3. 서버 연결 자동화

(* 아래 과정은 로컬 컴퓨터에서 진행해야 한다!)

 - ssh 접속 자동화?

  • 일반적으로 ssh 접속 시에는 매번 비밀번호를 입력해야한다...
  • 따라서 ssh 접속 키를 생성하여, 접속할 서버에 복사해서 두면, 해당 컴퓨터에서는 비밀번호없이 바로 접속할 수 있다.
  • (마치 인증된 컴퓨터를 등록하는 개념!)

 

 - ssh 접속용 퍼블릭 키 생성 (keygen generate)

# 로컬 컴퓨터에서!
ssh-keygen -t ecdsa -b 521

 

 - 생성된 퍼블릭 키 확인 (public key)

  • 키 경로: ~/.ssh
# 로컬 컴퓨터에서!
cd ~/.ssh # 키 경로로 접근, "~"는 홈 경로를 의미
ls # 파일 목록 조회

 

########################
# 목록 조회 시 아래처럼 보임 #
########################
config       id_ecdsa     id_ecdsa.pub known_hosts

# id_ecdsa : private key
# id_ecdsa.pub : public key -> 접속할 서버로 보낼 키

 

 - 퍼블릭 키를 접속할 서버로 복사

  • 이제 더이상 ssh 접속 시 매번 비밀번호를 칠 필요가 없다!
  • (* 아래의 ssh-copy-id는 리눅스, 맥에서만 가능하다..., 윈도우의 경우 다음의 링크 참고: https://chrisjhart.com/Windows-10-ssh-copy-id/)
# 로컬 컴퓨터에서!
ssh-copy-id -i [PUBLIIC_KEY_PATH] [USER]@[SERVER_IP]

# [PUBLIC_KEY_PATH]: 퍼블릭 키 경로 (예. /home/user/.ssh/id_ecdsa.pub)
# [USER]: 접속할 서버의 유저 ID
# [SERVER_IP]: 접속할 서버의 IP 주소 (예. 111.222.333.123)

 

# Window의 경우 CMD 또는 Powershell에서 실행!
type C:\Users\[user]\.ssh\id_ecdsa.pub | ssh [server_tag] "cat >> .ssh/authorized_keys"

# [user]: window user 이름
# [server_tag]: 아래의 서버 접속 자동화에서 config 파일에 설정한 tag

 

 

 - ssh 접속 자동화 설정

  • ssh config 파일을 등록 시, ssh tag로 쉽게 접속할 수 있다!
  • 일반적으로는 [>>> ssh user@111.222.333.123 -p 1234] 처럼 터미널에서 command를 쳐야 한다.
  • 아래처럼 config 파일을  작성하면, [>>> ssh Server_tag]와 같이 매우 쉽게 접속 가능!
  • ssh config 파일 생성 (이미 config 파일 생성이 되어있다면 이후부터는 편집만 하면 된다)
# 로컬 컴퓨터에서!
sudo vi ~/.ssh/config

 

######################
# ssh config 파일 편집 #
######################

Host [Server tag]
	HostName [Server IP]
	User [ID]
	Port [Port Number]

# [Server tag]: 원하는 서버 태그 (본인 편한 태그로 결정)
# [Server IP]: 카테고리는 호스트 네임이라고 하지만 IP 주소를 적으면 된다(예. 111.222.333.123).
# [ID]: 접속할 서버의 사용자 ID
# [Port Number]: 외부 접속 허용 포트 번호 (예. 1234)

 

 

# 참고 문헌

https://vitux.com/how-to-configure-networking-with-netplan-on-ubuntu/

 

How to Configure Networking on Ubuntu with Netplan

Netplan is the Ubuntu network configuration tool in all recent Ubuntu versions. Netplan is based on a YAML-based configuration system that makes the configuration process very simple.

vitux.com

https://velog.io/@shawnhansh/Ubuntu-%ED%8F%AC%ED%8A%B8%ED%8F%AC%EC%9B%8C%EB%94%A9Portforwarding

 

Ubuntu 포트포워딩(Portforwarding)으로 포트번호 없이 접근하기

포트번호 없이 내 서비스 접근하기!

velog.io

https://chrisjhart.com/Windows-10-ssh-copy-id/

 

Windows 10 OpenSSH Equivalent of ssh-copy-id

At the moment, Windows 10’s implementation of the OpenSSH client does not have the ssh-copy-id command available. However, a PowerShell one-line command can mimic the ssh-copy-id command and allow you to copy an SSH public key generated by the ssh-keygen

chrisjhart.com

 

# 딥러닝을 위한 리눅스(Ubuntu) GPU 서버 구축하기

 

2023.04.02 - [지식 리뷰/프로그래밍] - 딥러닝을 위한 리눅스(Ubuntu) GPU 서버 구축하기 - 2. GPU Setting

 

딥러닝을 위한 리눅스(Ubuntu) GPU 서버 구축하기 - 2. GPU Setting

# 세줄 요약 # 1. Server Setting: 고정 IP 설정, ssh 포트 변경 및 포트 포워딩 설정, ssh 연결 자동화 2. GPU 설정: Nvidia Driver 설치 (* CUDA & Anaconda는 "Docker" 사용할 것이므로 제외!) 3. 추가 설정: Docker 설치(+N

pulsar-kkaturi.tistory.com

2023.04.02 - [지식 리뷰/프로그래밍] - 딥러닝을 위한 리눅스(Ubuntu) GPU 서버 구축하기 - 3. 추가 설정(도커, NFS)

 

딥러닝을 위한 리눅스(Ubuntu) GPU 서버 구축하기 - 3. 추가 설정(도커, NFS)

# 세줄 요약 # 1. Server Setting: 고정 IP 설정, ssh 포트 변경 및 포트 포워딩 설정, ssh 연결 자동화 2. GPU 설정: Nvidia Driver 설치 (* CUDA & Anaconda는 "Docker" 사용할 것이므로 제외!) 3. 추가 설정: Docker 설치(+N

pulsar-kkaturi.tistory.com

 

728x90
728x90

댓글