일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- webpack
- CI/CD
- tailwind
- 타입 좁히기
- SSR
- 투포인터
- Cypress
- React
- 호이스팅
- CORS
- 이분 검색
- useAppDispatch
- 반공변성
- async/await
- 무한 스크롤
- Promise
- 결정 알고리즘
- Jest
- map
- 인터섹션
- 리터럴 타입
- dfs
- RTK Query
- ESlint
- app router
- 태그된 유니온
- TS
- autosize
- recoil
- 공변성
- Today
- Total
짧은코딩
미니 PC 우분투 SSH 접속기 본문
저번 글에서 미니 PC(이하 우분투 서버)의 윈도우를 밀고 우분투를 설치했다.
이번 글에서는 SSH로 접속하기 위해서 설정한 것들을 정리해보려고 한다.
우선 준비물이 필요하다.
- 와이파이 공유기
- 다들 아이피 타임 공유기를 사용한다고 한다.
- 하지만 나는 집에 있던 디링크 공유기를 사용했다
공유기에서 고정 DHCP, 포트포워딩, DDNS 설정 등을 해야 하기 때문에 우선 우분투와 와이파이 공유기 연결이 필요하다.
와이파이 연결
sudo apt install network-manager
nmcli dev wifi list # 이 명령어를 입력하면 연결 가능한 와이파이 목록이 나옴
nmcli dev wifi connect {SSID} password {PASSWORD}
nmcli는 NetworkManager 패키지의 일부이다.
고정 DHCP 설정
각 와이파이 공유기마다 설정 파일이 다르다.
보통 와이파이 접속 후 192.168.0.1로 접속하면 공유기 설정 페이지가 나온다.
고정 DHCP를 해야 하는 이유
-DHCP
- 네트워크에서 자동으로 IP 주소를 할당하는 프로토콜
- 기기가 접속하면 사용 가능한 IP를 임시로 할당
- 임대 시간이 지나면 IP 회수하여 재사용
-고정 DHCP
- MAC 주소와 IP를 미리 매칭하여 항상 같은 IP 할당
- 서버/프린터 등 고정 IP가 필요한 장비에 사용
DHCP 설정 페이지에서 내 우분투 서버를 고정 IP가 연결되도록 설정했다.
DHCP에서 자동으로 기기가 와이파이에 연결되었을 때 DHCP 시작 IP와 끝 IP 범위 내에서 자동으로 연결해 준다는 것이다.
따라서 192.168.0.11부터 192.168.0.254까지는 기기마다 자동으로 사설 IP를 할당해 준다는 의미이다.
192.168.0.2부터 192.168.0.10은 고정 DHCP를 할 수 있다. 따라서 저 범위(192.168.0.2부터 192.168.0.10) 내에서 내 우분투 서버를 고정 DHCP로 할당해 줬다.
포트포워딩
이제 위에서 고정 DHCP로 고정한 우분투 IP의 Port를 열어줘야 외부에서 SSH로 내 우분투 서버에 접속할 수 있다.
내 와이파이 설정 페이지에서는 이 페이지에서 설정이 가능했다.
공인 포트: 22가 아니라 다른 port로 입력해 줘야 보안상 안전하다.
사설 IP: 위에서 고정 DHCP에 등록한 주소를 입력하면 된다.
잘 등록하면 이렇게 나온다.
포트포워딩은 보안에 해커에게 "내 서버 들어와서 털어주세요~"할 수 있는 거라 정말 필요한 것들만 열어주는 게 중요하다.
-NAT 루프백
NAT 루프백은 같은 내부 네트워크에서 공인 IP를 통해 자신의 서버(사설 IP)에 접속할 때 필요한 설정이다.
이 설정이 없으면 내부 네트워크(사설 IP)에서 외부 공인 IP로 우회해서 다시 내부로 들어오는 접속이 차단된다.
그렇기에 허용해줘야 한다.
-NAT란?
사설 IP 주소를 공인 IP 주소로 변환하여 내부 네트워크의 여러 장치가 하나의 공인 IP를 공유할 수 있게 해준다.
ssh 설정
내 우분투 서버에 SSH 설치와 설정을 해줘야 한다.
sudo apt install openssh-server
sudo systemctl status ssh
sudo systemctl enable ssh #미니 pc가 재부팅 되어도 다시 재시작
ssh를 설정하고 상태 체크와 서버가 재부팅되어도 ssh가 재시작되도록 했다.
sudo apt install ufw
sudo ufw status
sudo ufw enable
sudo ufw allow 22
ufw로 port를 열어줘야 외부에서 ssh로 접속이 가능하다.
ssh 접속
패스워드 방식
위 설정을 마친다면 이제 내 맥북에서 접속이 가능하다.
// 내부망
ssh ohhyun@{공인IP}
// 외부망
ssh -p {포트포워딩에서 지정한 ssh port} ohhyun@{공인IP}
내부망에서는 port를 따로 지정하지 않아도 안전하다.(여기서 내부망은 같은 우분투 서버와 맥북이 와이파이에 있는 경우)
외부망에서는 지정한 port를 적어줘야 접속이 가능하다.
하지만 이 방식은 큰 문제점이 있다.
우분투 비밀번호만 입력하면 누구든 접속할 수 있다는 것이다.
해커의 브루트포스 공격에 치명적이다. 그렇기에 나는 키 인증 방식으로 바꿨다.
키 인증 방식으로 변경
맥북
# 클라이언트
ssh-keygen -t rsa
#이 과정에서 기본 주소를 사용하고 비밀번호를 입력하면 우분투에 접속 할 때
#key와 비밀번호를 둘 다 입력해야 해서 보안이 더욱 강화된다.
# 리눅스, 맥 클라이언트
ssh-copy-id -p 22 ohhyun@{사설 우분투 서버 IP}
우선 맥북과 우분투 서버가 같은 내부망에 있어야 한다.
맥북에서 ssh-keygen으로 공개키와 암호키를 발급받는다.
그리고 발급받은 ssh 공개키를 전송한다.
미니 PC
# 서버
chmod 600 ~/.ssh/authorized_keys
sudo vi /etc/ssh/sshd_config
#파일에 추가
PermitRootLogin no #루트 로그인 금지
PasswordAuthentication no #패스워드로 로그인 금지
# SSH 재시작
sudo service ssh restart
우분투 서버에서는 맥북에서 받은 암호키에 대해 사용 권한을 준다.
그리고 루트 권한으로 로그인, 패스워드로 로그인하는 것을 금지한다.
ssh를 재시작한다.
맥북
vi ~/.ssh/config
#내부망
Host internal-ip
HostName {내 공인 IP}
User ohhyun
Port 22
IdentityFile ~/.ssh/id_rsa
#외부망
Host external-ip
HostName {내 공인 IP}
User ohhyun
Port {고정 DHCP에 지정한 PORT}
IdentityFile ~/.ssh/id_rsa
이렇게 ssh/config 파일에 저장하면
#내부망 접속
ssh internal-ip
#외부망 접속
ssh external-ip
위 명령어로 우분투 서버 접속이 가능하다.
하지만 집 IP는
유동 IP라서 IP가 바뀔 수도 있다.
이런 문제점을 해결하기 위해서 DDNS를 활용해야 한다.
DDNS 설정
- DDNS는 고정 IP 주소 대신 동적으로 변경되는 IP 주소를 도메인 이름에 연결하는 기술입니다.
- 이를 통해 사용자가 자신의 IP 주소가 변경되어도 계속해서 동일한 도메인 이름을 사용할 수 있습니다.
- DDNS는 주로 홈 네트워크나 소규모 서버에서 사용되며, 웹 서버, FTP 서버, 원격 액세스 등에 활용됩니다.
- DDNS 서비스 제공업체를 통해 DDNS를 설정하고 관리할 수 있습니다.
- DDNS는 IP 주소 변경에 따른 불편함을 해결하고 쉽고 편리한 원격 접근을 가능하게 해줍니다.
-no-ip
- no-ip에서 DDNS를 설정할 수 있다.
- 다른 사이트도 있지만 no-ip가 무료였다.
- 단점은 30일마다 가입한 이메일로 메일이 오면 연장을 해야지만 DDNS를 계속 유지할 수 있다.
- 그리고 와이파이 공유기 설정 페이지에 아이디, 비밀번호를 입력해야 하기 때문에 구글 계정으로 가입하지 않는 것이 좋다.
우선 내 정보를 먼저 기입해 준다.
그리고 Hostname에 자신이 원하는 이름과, IPv4 Address에 내 공인 IP 주소를 넣어줬다.
와이파이 설정 페이지의 DDNS로 갔다
- 전체 호스트 이름: no-ip에서 설정한 {hostname}.ddns.net
- 사용자 이름: no-ip 아이디
- 사용자 비밀번호: no-ip 비밀번호
이렇게 값을 넣어줬다.
그러면 이렇게 등록이 완료된 것을 확인할 수 있다.
-맥북
vi ~/.ssh/config
#내부망-ip
Host internal-ip
HostName {내 공인 IP}
User ohhyun
Port 22
IdentityFile ~/.ssh/id_rsa
#내부망-ddns
Host internal-ddns
HostName {hostname}.ddns.net
User ohhyun
Port 22
IdentityFile ~/.ssh/id_rsa
#외부망-ip
Host external-ip
HostName {내 공인 IP}
User ohhyun
Port {고정 DHCP에 지정한 PORT}
IdentityFile ~/.ssh/id_rsa
#외부망-ddns
Host external-ddns
HostName {hostname}.ddns.net
User ohhyun
Port {고정 DHCP에 지정한 PORT}
이렇게 ddns를 추가하고
ssh internal-ddns
ssh external-ddns
이 명령어들을 쳐도 이제 접속할 수 있다.
구현 소감
AWS나 구글, 카카오 클라우드 같은 플랫폼을 이용하는 것이 아니라, 내가 직접 집에 우분투 서버를 구현했기에 이제 전기세만 내면 마음껏 서버를 사용할 수 있다. 요즘 같이 달러가 많이 오른 시기에 자유롭게 서버를 자유롭게 이용할 수 있는 것은 큰 장점인 것 같다. 또 윈도우 미니 PC를 밀고 직접 우분투를 깔고 설정을 하는 과정에서 네트워크 공부가 특히 많이 된 것 같다. 이론으로만 알고 있던 지식들과 몰랐던 지식들을 배울 수 있어서 좋았다. 이런 것을 보면 아무리 책으로 이론만 공부하는 것보다 직접 겪으면서 배우는 게 너무 큰 것 같다. 앞으로 다른 공부를 할 때도 이론은 적당히 보고 실제로 구현을 해보면서 열심히 삽질(?)하면 실력이 많이 늘 수 있을 것 같다. 드디어 나에게도 서버가 생긴 게 너무 뿌듯하고 만족스럽다!
출처
https://dongle94.github.io/ubuntu/ubuntu-wifi-connect-cli/
'미니PC' 카테고리의 다른 글
미니PC 우분투 CLI 설치하기 (0) | 2024.11.21 |
---|