반응형
작성일: 2024년 3월 28일

 

Oracle Cloud Infra(OCI)에서 VM instance를 생성하는 것은 Web Console에서 권고값을 따라

"다음", "OK" 같은 버튼만 누르면 쉽게 처리할 수 있다.

 

그런데 이렇게 생성한 VM instance에 SSH 접속하려고 하면, Oracle 매뉴얼처럼 수행했을 때 잘 안 된다.

SSH 접속이 안 되는 원인이 OS Image 마다 조금 달랐다.

 

참고: VM instance에 기본 로그인 계정 설정하기

    Oracle OCI Web Console에서 VM instance에 console 화면에 접근하려면,
    VM instance를 생성하는 시점에 cloud-init 스크립트에 Login 계정을 설정해야 한다. (ID, Password 등)
    아래 블로그에 자세한 방법과 예제가 있다. 예제를 보고 따라하면 된다.

    https://andrewpage.tistory.com/171

 

 

Case: "Oracle Linux 8 Image"를 이용하여 VM Instance를 만든 경우

 방화벽이 활성화되어 있어서 Source IP address가 동일 Subnet이 아닌 경우 SSH 접속이 막고 있다.

아래 명령을 수행해서 방화벽을 끄면 된다.

$ systemctl stop firewalld

$ systemctl disable firwalld

 

초기 작업을 위해 위와 같이 방화벽을 우선 끄고 SSH 접속하고, 어느 정도 Network과 관련한 설정을 변경하고 나면 

다시 firewalld 서비스를 활성화해야 한다. (보안을 위해서 꼭 잊지 말고 해야 한다)

 

 

Case: "Ubuntu 22.04 Image"를 이용하여 VM Instance를 만든 경우

Ubuntu 22.04 VM instance는 다행히 Ubuntu Firewall 서비스가 꺼져 있다.

그런데 Netfilter가 특정 몇개 Port를 제외하고 모두 Reject 하도록 설정되어 있다.

그러므로 Netfilter의 Rule을 조정할 필요가 있다. (아래 명령을 참고)

$ iptables -F

 

그리고 아래와 같이 iptables rule을 다시 구성했다. 

아래 스크립트 중에서 "FIXME" 라고 코멘트 추가한 부분을 참고하면 된다.

$ cat /etc/iptables/rules.v4

# CLOUD_IMG: This file was created/modified by the Cloud Image build process
# iptables configuration for Oracle Cloud Infrastructure

# See the Oracle-Provided Images section in the Oracle Cloud Infrastructure
# documentation for security impact of modifying or removing these rule

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [463:49013]
:InstanceServices - [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p udp --sport 123 -j ACCEPT

## FIXME: Domain Name Server 접근을 허용하는 Rule 추가
-I INPUT -p udp -m udp --dport 53 -j ACCEPT

## FIXME: SSH 접속할 포트를 변경
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2022 -j ACCEPT 

-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

... 이하 생략 ...

 

위와 같이 /etc/iptables/rules.v4 를 수정하고, 깔끔하게 VM instance를 Restart하고 SSH를 접속해보자~

잘 접속될 것이다. ^^

 


 

반응형

 

작성일: 2024년 2월 21일

 

PPTP, L2TP 같은 터널링을 사용할 수 없는 상황에서

방화벽 건너편의 네트워크에 접속할 일이 발생하면, SSH Port Forwarding을 임시방편으로 사용하는 것도 좋다.

물론 전제 조건이 있다.

  - SSH 접속할 수 있도록 방화벽 허용 규칙
     또는
  - DNAT Rule
     또는
  - 공유기의 Port Forward Rule이 미리 설정되어 있어야 한다.

 

즉, 원격 Network에 SSH 접속 만큼은 가능한 환경이라는 가정하에 아래 설명을 봐야 한다.

간단하게 한번 훑어보고 실습 환경으로 가보자.

 

SSH Tunneling에는 3가지가 있다.

  - Local Port Forwarding (Local Tunneling)

  - Remote Port Forwarding

  - Dynamic Port Forwarding

 

각 Tunneling 방식에 대해서는 아래 구체적으로 설명하기로 한다.

 

우선 접속할 대상 Network의 SSH 서버의 설정을 수정해야 한다.

SSH Server Config 설정

$ sudo -s

$ vim /etc/ssh/sshd_config

... 중간 생략 ...
AllowTcpForwarding yes     # <-- yes로 변경
GatewayPorts yes           # <-- yes로 변경
... 중간 생략 ...

$ systemctl restart sshd

 

 

준비 작업 끝 !

예시를 들어서, Local Tunneling에 관해서 설명해보면 이렇다.

 

SSH Local Port Forwarding (Local Tunneling)

아래 그림과 같이 집에 있는 내 맥북 PC에서 회사에 있는 VNC 서버에 접근해보겠다.

 

SSH 터널링 (Local Port Forwarding 방식)

 

위 네트워크 구성도를 참고하여 내 PC(맥북)에서 아래의 명령을 수행한다.

(위 구성도와 아래 명령에 있는 IP Address 값을 매핑해서 보면, 아래 명령의 의미를 이해할 수 있다)

$  ssh  -L 5900:10.1.1.3:5900  root@10.1.1.2

 

그리고 내 PC(맥북)에서 RealVNC Viewer 또는 TigerVNC Viewer에 새 연결 정보를 설정해야 하는데,

주소를 localhost (또는 127.0.0.1)으로 입력해야 한다. (아래 화면을 참고)

 

 

위와 같이 VNC Server의 주소를 설정하고, 접속 버튼을 누르면 

VNC 접속 요청 트래픽은 아래 순서로 흘러간다.

 

  1)  내 맥북 PC VNC Client

  2)  localhost의 ssh client (192.168.1.5:5900)

  3)  사무실의 ssh server (10.1.1.2)

  4)  VNC Server (10.1.1.3:5900)

 

원하는 VNC 접속 성공 !!

 

 


 

 

SSH Remote Port Forwarding

이번에는 완전 반대의 경우를 생각해보자.

사무실 쪽에서 SSH 서버 접속을 허용하지 않아서 Local Tunneling이 안 되는 경우라면, 

사무실에 있는 누군가(나의 친한 동료)가 내 집에 있는 내 맥북에 SSH Tunneling을 요청해주어야 한다.

물론 내 맥북이 Public network에 노출되어야 한다.

이런 방식을 Remote Tunneling이라고 한다. 

 

SSH 터널링 (Remote Port Forwarding 방식)

 

사무실에서 나의 동료가 회사 Linux 서버에서 아래와 명령을 실행해준다.

$  ssh  -R  34343:10.1.1.2:5900  sejong@192.168.1.5 -p 20022

 

그러면 위 명령 때문에 내 맥북 PC에는 TCP Listening port 34343가 생성된다.

## 집에 있는 내 맥북 PC에서 명령을 실행한 결과

$  netstat -anp | grep LISTEN
... 중간 생략 ...
tcp    0    0 0.0.0.0:34343       0.0.0.0:*         LISTEN      -
... 중간 생략 ...

 

이제 내 맥북에서 VNC Viewer를 이용해서 아래 화면과 같이 설정하고 회사 Network로 접속해보자.

VNC Server 주소는 localhost 또는 127.0.0.1 으로 설정하면 된다.

 

위와 같이 VNC Server의 주소를 설정하고, 접속 버튼을 누르면

VNC 접속 요청 트래픽은 아래 순서로 흘러간다.

 

  1)  내 맥북 PC VNC Client

  2)  localhost의 ssh client (192.168.1.5:5900)

  3)  사무실의 ssh server (10.1.1.2)

  4)  VNC Server (10.1.1.3:5900)

 

원하는 VNC 접속 성공 !!

 

 


 

반응형

 


작성일: 2024년 2월 15일

 

$ kubectl get node -o wide
NAME          STATUS   ROLES   AGE    VERSION   INTERNAL-IP   EXTERNAL-IP       ... 생략 ...
10.0.10.111   Ready    node    11d    v1.25.4   10.0.10.111   130.162.111.222   ...
10.0.10.112   Ready    node    11d    v1.25.4   10.0.10.112   146.156.111.110   ...


##
## 위 worker node 정보 중에서 "EXTERNAL-IP"를 이용하여 SSH 접속
## (Oracle OS를 사용했다면, opc가 기존 계정이다)
##

$ ssh opc@130.162.111.222
(암호 없이 private key를 통해 인증 완료)

##
## 주의: OKE Cluster 구축할 때 사용한 node의 private key, public key 쌍 중에서 private key를
##      내 Client PC에 가지고 있어야 위와 같이 접속된다.
##      그러므로, 꼭 private key 관리를 잘 해야 한다.
##

 


 

반응형

 

Ubuntu, CentOS  등  Linux OS를 기본 설정으로 설치하면, Root 계정의 SSH login이 금지(Prohibit)된다.

따라서 아래 /etc/ssh/sshd_config 설정 파일의 예제처럼 변경하고 sshd(ssh 서버 데몬)을 restart해줘야 한다.

 

$ cd /root/ssh
$ cat sshd_config

... 중간 생략 ...

PermitRootLogin yes   ## <- 이 설정 부분을 'yes'로 변경한다.

... 중간 생략 ...

$ systemctl restart sshd

$ systemctl status sshd
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-12-28 10:16:34 KST; 1min 33s ago

... 중간 생략 ...
      
$

 

'Ubuntu' 카테고리의 다른 글

rc.local 활성 설정 (Ubuntu, CentOS)  (0) 2021.12.28
추가 장착한 Disk Mount  (0) 2021.12.28
Install BIND for name server(DNS) on Ubuntu 22.04  (0) 2021.11.05
openssl command example  (0) 2021.11.04
.bashrc 또는 .bash_profile 설정  (0) 2021.07.22

+ Recent posts