0304 TUE | 링크, RPM, NFS, SSH 연결 실습

iburnius·2025년 3월 29일

AWS

목록 보기
5/6

오늘 수업 계획

ip, nfs(공유스토리지/파일스토리지)

  • 마운트: 물리장치와 논리장치를 연결하는 것, 또는 원격장치를 연결하는 것
  • persistent volume(영구 볼륨)
  • rollingUpdate
  • 공유스토리지
    • file
      • efs(elastic file system)
      • nfs와 거의 비슷하다.
      • 데이터 저장 방식: 트리 형태 → 검색 속도가 현저히 떨어진다.
    • block - ebs(elastic block store. iSCSI(서버에게 디스크를 제공하는 방식))
      • IDE 방식, SATA 방식 vs. SCSI 방식
      • iSCSI: ip를 사용
      • 데이터 저장 방식: 주차장 형태 → 번호가 매겨져 있기 때문에 번호를 검색해서 데이터를 찾을 수 있다. 블럭 사이즈는 작으나 데이터 하나의 사이즈는 클 경우: 여러 번호를 검색해서 찾을 수 있다.
    • object
      • 사용자별로 저장공간을 제공
      • 데이터 저장 방식: 데이터를 key-value 형태(object형태)로 저장한다.

✔️ file, block 방식: 주로 서버에 연결하는 방식.
✔️ object 방식: 사용자에게 저장공간을 제공하여 위치가 중요하지 않다. (S3)


IP

  • IPv4: 32비트, 4개의 옥텟으로 되어있다.

  • IPv6: 128비트

  • 공인 IP

  • 사설 IP

    • 범위: 10.x.x.x, 172.16.x.x ~ 172.31.x.x, 192.168.x.x
  • 정적(static): 직접 입력

  • 동적(dynamic): DHCP 프로토콜

    • server
    • client: PC, end device
  • 1.1.1.1 ← 하나하나를 옥텟이라고 표현

    한 자리를 확대해보면, 00000000(0) ~ 111111111(255)로 표현

  • 서브넷마스크

    • 서브넷팅

명령 프롬프트

arp -a

ping 192.168.3.227 (강사님 ip)

arp -a

→ 강사님 ip를 찾으면 옆에 mac address 확인할 수 있음


서브넷 마스크

N ⬆️ → 네트워크 개수가 늘어난다.

H ⬇️ → 한 네트워크 당 host 수는 줄어든다.

e.g.

172.16.1.0/16 → 172.16.1.0/20

  • 16 → N비트가 16개
    • N-.N-.H-.H-
  • 20 → N비트가 20개
    • N-.N-.NNNNHHHH.H-
    • 00: 0 → 172.16.0.0/20
    • 01: 16 → 172.16.16.0/20
    • 10: 32 → 172.16.32.0/20
    • 11: 48 → 172.16.48.0/20

172.16.1.0/20은 172.16.0.0/20 범위에 포함

➡️ 172.16.0.0(N주소) ~ 172.16.15.255(B주소)

VLSM: 가변 길이 서브넷팅(서브넷마스크)

  • 기존의 동일한 크기의 네트워크를 지정하는 것이 아닌 필요한 크기에 따라 네트워크를 할당하는 것.


p.216

링크

실습

  • stat: 디렉터리나 파일의 상세 정보를 출력
[user1@rocky1 ~]$ cd
[user1@rocky1 ~]$ mkdir lab0304
[user1@rocky1 ~]$ cd lab0304
[user1@rocky1 lab0304]$ touch a.txt
[user1@rocky1 lab0304]$ ls
a.txt
[user1@rocky1 lab0304]$ ls -ll
total 0
-rw-rw-r--. 1 user1 user1 0 Mar  3 21:25 a.txt
[user1@rocky1 lab0304]$ stat a.txt
  File: a.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 50918954    Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/   user1)   Gid: ( 1000/   user1)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2025-03-03 21:25:50.032886382 -0500
Modify: 2025-03-03 21:25:50.032886382 -0500 // 파일 내용 수정
Change: 2025-03-03 21:25:50.032886382 -0500 // 파일의 이름 변경, 소유권 변경, 커미션 변경
 Birth: 2025-03-03 21:25:50.032886382 -0500
[user1@rocky1 lab0304]$ mv a.txt abc.txt // 파일 이름 변경
[user1@rocky1 lab0304]$ stat abc.txt
  File: abc.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 50918954    Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/   user1)   Gid: ( 1000/   user1)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2025-03-03 21:25:50.032886382 -0500
Modify: 2025-03-03 21:25:50.032886382 -0500
Change: 2025-03-03 21:29:00.366689627 -0500
 Birth: 2025-03-03 21:25:50.032886382 -0500
  • ln: 리눅스 파일시스템에서 링크파일을 생성
[user1@rocky1 lab0304]$ ls
abc.txt
[user1@rocky1 lab0304]$ ln abc.txt hardlink # 하드 링크 생성
[user1@rocky1 lab0304]$ ln -s abc.txt softlink # 심볼릭 링크파일 생성
[user1@rocky1 lab0304]$ ls -i # inode 번호 확인
50918954 abc.txt  50918954 hardlink  50918973 softlink
[user1@rocky1 lab0304]$ ls -il # 자세한 파일 정보 확인
total 0
50918954 -rw-rw-r--. 2 user1 user1 0 Mar  3 21:25 abc.txt
50918954 -rw-rw-r--. 2 user1 user1 0 Mar  3 21:25 hardlink
50918973 lrwxrwxrwx. 1 user1 user1 7 Mar  3 21:32 softlink -> abc.txt

# abc.txt와 hardlink는 inode 번호가 동일
# -> 둘 중 하나를 지워도 남은 파일은 유지됨

# softlink는 abc.txt를 가리키는 참조(포인터) 역할을 함 
# -> 원본파일(abc.txt)이 삭제되면 softlink는 깨진 링크가 됨
[user1@rocky1 lab0304]$ mv abc.txt .. # abc.txt를 상위 디렉터리로 이동
[user1@rocky1 lab0304]$ ls -il
total 0
50918954 -rw-rw-r--. 2 user1 user1 0 Mar  3 21:25 hardlink
50918973 lrwxrwxrwx. 1 user1 user1 7 Mar  3 21:32 softlink -> abc.txt # 깨진 링크
[user1@rocky1 lab0304]$ cat hardlink
hello
[user1@rocky1 lab0304]$ cat softlink
cat: softlink: No such file or directory # 심볼릭 링크 읽기 실패
[user1@rocky1 lab0304]$ mv ../abc.txt . # 파일 현재 위치로 되돌리기
  • hardlink를 사용하는 경우보다는 대부분 softlink를 사용하며 이는 별도의 공간에 있는 실행파일을 $PATH 변수의 경로로 링크를 걸어서 사용하고자 하는 경우에 주로 사용한다.
[user1@rocky1 lab0304]$ ls -il
total 0
50918954 -rw-rw-r--. 2 user1 user1 0 Mar  3 21:25 abc.txt
50918954 -rw-rw-r--. 2 user1 user1 0 Mar  3 21:25 hardlink
50918973 lrwxrwxrwx. 1 user1 user1 7 Mar  3 21:32 softlink -> abc.txt
[user1@rocky1 lab0304]$ cat softlink
hello

# abc.txt 내용 수정 및 실행
[user1@rocky1 lab0304]$ vi abc.txt
[user1@rocky1 lab0304]$ chmod +x abc.txt # abc.txt에 실행권한 부여
[user1@rocky1 lab0304]$ cat abc.txt
#!/bin/bash

echo "--- this time ---"
date +%y%m%d

[user1@rocky1 lab0304]$ ./abc.txt
--- this time ---
250303
[user1@rocky1 lab0304]$ ./hardlink
--- this time ---
250303
[user1@rocky1 lab0304]$ ./softlink
--- this time ---
250303

# 다른 디렉터리에서 심볼릭 링크 실행
[user1@rocky1 lab0304]$ cd
[user1@rocky1 ~]$ ./lab0304/softlink
--- this time ---
250303

# 환경 변수 확인
[user1@rocky1 ~]$ echo $PATH
/home/user1/.local/bin:/home/user1/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
[user1@rocky1 ~]$ cd lab0304/
[user1@rocky1 lab0304]$ ls
abc.txt  hardlink  softlink

# 심볼릭 링크 생성
[user1@rocky1 lab0304]$ sudo ln -s /root/lab0304/abc.txt /usr/bin/thistime

# 심볼릭 링크 확인
[user1@rocky1 lab0304]$ sudo ls -l /usr/bin | grep this
lrwxrwxrwx. 1 root root          21 Mar  3 21:43 thistime -> /root/lab0304/abc.txt

# /root 디렉터리에 대한 접근 권한 문제로 명령어 실행 시 오류
[user1@rocky1 lab0304]$ thistime
bash: thistime: command not found...

# 심볼릭 링크 삭제
[user1@rocky1 lab0304]$ sudo rm -rf /usr/bin/thistime
[user1@rocky1 lab0304]$ pwd
/home/user1/lab0304
[user1@rocky1 lab0304]$ ls
abc.txt  hardlink  softlink

# 다시 한번 abc.txt에 실행 권한 부여
[user1@rocky1 lab0304]$ chmod +x abc.txt
[user1@rocky1 lab0304]$ cat abc.txt
#!/bin/bash

echo "--- this time ---"
date +%y%m%d

# 심볼릭 링크 재생성
# /home/user1/lab0304/abc.txt 파일을 /usr/bin/thistime으로 가리키는 심볼릭 링크로 재생성
[user1@rocky1 lab0304]$ sudo ln -s /home/user1/lab0304/abc.txt /usr/bin/thistime

# 심볼릭 링크 실행
[user1@rocky1 lab0304]$ sudo thistime
--- this time ---
250303

# 심볼릭 링크 확인
[user1@rocky1 lab0304]$ sudo ls -l /usr/bin | grep this
lrwxrwxrwx. 1 root root          27 Mar  3 21:47 thistime -> /home/user1/lab0304/abc.txt

p.219 리눅스 관리자를 위한 명령어

RPM(RedHat Package Manager)

  • 초기의 리눅스는 특정 애플리케이션을 설치하고 싶다면 소스코드를 다운로드 한 뒤, 이를 컴파일하여 설치해야 했다.
  • 전문가를 제외한 일반 사용자 입장에서는 이를 설치하는 것이 매우 어려웠다. 이 시기 윈도우는 exe 파일을 이용하여 사용자 친화적으로 소프트웨어를 설치하도록 해 주고 있었다.
  • 윈도우의 exe 와 비슷한 설치파일을 redhat 에서 rpm 이라는 패키지 파일로 출시하게 되었다. 사용자는 간단한 명령만으로 미리 입력되어 있는 옵션을 그대로 사용하며 설치가 가능해지게 되었다.

RPM으로 설치하기 실습

[root@rocky1 ~]# which gedit
/usr/bin/gedit
[root@rocky1 ~]# gedit -v
Unknown option -v
[root@rocky1 ~]# gedit --version
gedit - Version 3.28.1
[root@rocky1 ~]# rpm -qa | grep gedit # qa: 모든 패키지 리스트 출력
gedit-3.28.1-3.el8.x86_64
[root@rocky1 ~]# rpm -e gedit # e: 설치된 패키지 삭제
[root@rocky1 ~]# rpm -qa | grep gedit
[root@rocky1 ~]# gedit
bash: /usr/bin/gedit: No such file or directory

# gedit 패키지 다시 설치
# wget: 웹 상의 파일을 다운로드
[root@rocky1 ~]# wget http://rpmfind.net/linux/centos-stream/9-stream/AppStream/x86_64/os/Packages/gedit-40.0-6.el9.x86_64.rpm

[root@rocky1 ~]# ls
a                Downloads                    lab0227   Public      Videos
anaconda-ks.cfg  gedit-40.0-6.el9.x86_64.rpm  lab1      result.txt  x.txt
c                ifcfg-ens160                 labl      Templates
Desktop          ifcfg-ens160.bak             Music     test2
Documents        initial-setup-ks.cfg         Pictures  test.txt

[root@rocky1 ~]# rpm -Uvh gedit-40.0-6.el9.x86_64.rpm # Uvh: 업그레이드(기존의 것을 삭제하고 설치)하며 그 과정을 자세히 보여준다.
warning: gedit-40.0-6.el9.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY
error: Failed dependencies:
	glib2(x86-64) >= 2.64 is needed by gedit-2:40.0-6.el9.x86_64
	gtksourceview4(x86-64) >= 4.0.2 is needed by gedit-2:40.0-6.el9.x86_64
	libc.so.6(GLIBC_2.34)(64bit) is needed by gedit-2:40.0-6.el9.x86_64
	libgtksourceview-4.so.0()(64bit) is needed by gedit-2:40.0-6.el9.x86_64
	python(abi) = 3.9 is needed by gedit-2:40.0-6.el9.x86_64
	// 의존성 문제 발생
  • rpm -qa: RPM 기반의 Linux 배포판(예: RHEL, CentOS, Fedora)에서 설치된 모든 패키지 목록을 조회하는 명령어

  • mount

# mount: 현재 시스템에서 마운트된 파일 시스템의 상태
[root@rocky1 ~]# mount | grep sr0 // sr0: CD-ROM or DVD-ROM (물리장치)
/dev/sr0 on /run/media/root/Rocky-8-10-x86_64-dvd type iso9660 (ro,nosuid,nodev,relatime,nojoliet,check=s,map=n,blocksize=2048,uid=0,gid=0,dmode=500,fmode=400,uhelper=udisks2)

# /mymount/ 디렉토리에 있는 파일 나열
[root@rocky1 ~]# ls /mymount/
test.txt

# /dev/sr0 장치를 /mymount/ 디렉토리에 다시 마운트
[root@rocky1 ~]# mount /dev/sr0 /mymount
mount: /mymount: WARNING: device write-protected, mounted read-only.
[root@rocky1 ~]# ls /mymount/
AppStream  BaseOS  EFI  images  isolinux  LICENSE  media.repo  TRANS.TBL

# /mymount/AppStream/Packages/g/ 디렉토리에서 gedit과 관련된 .rpm 패키지 찾음
[root@rocky1 ~]# ls /mymount/AppStream/Packages/g/ | grep gedit
gedit-3.28.1-3.el8.x86_64.rpm
gedit-plugin-bookmarks-3.28.1-8.el8.x86_64.rpm
gedit-plugin-bracketcompletion-3.28.1-8.el8.x86_64.rpm
gedit-plugin-codecomment-3.28.1-8.el8.x86_64.rpm
gedit-plugin-colorpicker-3.28.1-8.el8.x86_64.rpm
gedit-plugin-colorschemer-3.28.1-8.el8.x86_64.rpm
gedit-plugin-commander-3.28.1-8.el8.x86_64.rpm
gedit-plugin-drawspaces-3.28.1-8.el8.x86_64.rpm
gedit-plugin-findinfiles-3.28.1-8.el8.x86_64.rpm
gedit-plugin-joinlines-3.28.1-8.el8.x86_64.rpm
gedit-plugin-multiedit-3.28.1-8.el8.x86_64.rpm
gedit-plugins-3.28.1-8.el8.x86_64.rpm
gedit-plugins-data-3.28.1-8.el8.x86_64.rpm
gedit-plugin-smartspaces-3.28.1-8.el8.x86_64.rpm
gedit-plugin-terminal-3.28.1-8.el8.x86_64.rpm
gedit-plugin-textsize-3.28.1-8.el8.x86_64.rpm
gedit-plugin-translate-3.28.1-8.el8.x86_64.rpm
gedit-plugin-wordcompletion-3.28.1-8.el8.x86_64.rpm

# mount, umount 실습

RPM으로 설치하기 정리

  • step1. 인터넷이나 공유된 곳에서 rpm 파일을 다운로드한다.
  • step2. rpm -Uvh **.rpm 명령어로 설치한다.
  • step3. 설치 중 의존성 문제가 발생할 수 있다.

p.711

NFS 서버

  • nfs: 네트워크 상의 다른 컴퓨터와 파일을 공유할 수 있도록 해주는 파일 시스템 프로토콜

NFS 서버 구축

@rocky1 (server side)

# nfs-utils 패키지 설치
[user1@rocky1 lab0304]$ sudo dnf -y install nfs-utils

[user1@rocky1 lab0304]$ sudo chmod 777 /shared // chmod 777: 모든 권한을 다 준다.

# /etc/exposts 파일 편집: 서버에서 공유할 디렉터리 설정
# 211.183.3.* 대역의 클라이언트들이 접근할 수 있도록 설정
[user1@rocky1 lab0304]$ sudo vi /etc/exports

# NFS 서버 재시작
[user1@rocky1 lab0304]$ sudo systemctl status nfs-server
● nfs-server.service - NFS server and services
   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)
   Active: active (exited) since Tue 2025-03-04 00:49:56 EST; 15s ago
  Process: 54568 ExecStart=/bin/sh -c if systemctl -q is-active gssproxy; then systemctl reload gsspro>
  Process: 54554 ExecStart=/usr/sbin/rpc.nfsd (code=exited, status=0/SUCCESS)
  Process: 54552 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
 Main PID: 54568 (code=exited, status=0/SUCCESS)

Mar 04 00:49:56 rocky1 systemd[1]: Starting NFS server and services...
Mar 04 00:49:56 rocky1 systemd[1]: Started NFS server and services.
lines 1-10/10 (END)

@rocky2 (client side)

# showmount: nfs 서버의 마운트 정보를 표시
# 211.183.3.101 == rocky1
[user1@rocky2 ~]$ sudo showmount -e 211.183.3.101
Export list for 211.183.3.101:
/shared 211.183.3.*

# 마운트할 /remote 디렉토리 생성 및 마운트
[user1@rocky2 ~]$ cd
[user1@rocky2 ~]$ sudo mkdir /remote
[user1@rocky2 ~]$ sudo mount -t nfs 211.183.3.101:/shared /remote
mount.nfs: access denied by server while mounting 211.183.3.101:/shared # access denied 에러 발생

→ 오류가 떠서 rocky1의 /etc/exports 수정

[user1@rocky1 lab0304]$ sudo vi /etc/exports
[sudo] password for user1:

# 211.183.3.* 형식이 아닌 211.183.3.0 형식으로 설정해야 됨

[user1@rocky1 lab0304]$ sudo systemctl restart nfs-server

@rocky2

[user1@rocky2 ~]$ sudo mount -t nfs 211.183.3.101:/shared /remote
[user1@rocky2 ~]$ touch /remote/from_rocky2.txt

@rocky1

[user1@rocky1 lab0304]$ sudo echo "hello" > /shared/from_rocky2.txt

@rocky2

[user1@rocky2 ~]$ cat /remote/from_rocky2.txt
hello

→ rocky1과 rocky2 mount 및 파일 공유 성공!


  • Bridge
  • NAT
  • host-only: isolated network(외부(인터넷)와 연결 X)

Rocky1, 2 삭제하고 다시 생성

  • rocky1 IP Address 192.168.0.97/22

Task.

  1. 모든 작업은 user1을 이용하여 진행되어야 하지만 user1이 sudo를 이용하여 패스워드 입력 없이 모든 명령어를 사용할 수 있도록 하기 위한 설정은 root 로 진행합니다.

  2. OS 설치가 마무리되면 두 서버에 접속하여 ping www.google.com -c 3

  3. 두 서버간 211.183.3.X 를 이용하여 ping 연결 가능 여부 확인

  4. 두 서버는 편의상 systemctl stop firewalld && systemctl disable firewalld 를 이용하여 방화벽을 중지 시킨다.

  5. [ssh] 두 서버로 ssh 연결에서 패스워드를 이용한 ssh 연결은 불가해야 한다.

    rocky1 에서 keypair 를 생성하고 public key 를 rocky1, rocky2 에 등록 시킨다. private 키는 윈도우의 노트 패드에 저장 시킨다.

    mobaxterm 에서 .ssh/config 파일에 필요한 설정을 이용하여

    ssh rocky1.test.pri 로 연결 가능해야 하며 rocky2 의 경우에는 proxyCommand 를 한 줄 추가하여 ssh rocky2.test.pri 로 접속시 실제로는 rocky1 을 통해 ssh 연결이 가능해야 한다.

  6. rocky2 는 /shared 라는 디렉토리가 생성되어있을 것이다. 이를 외부에 노출시켜 서버들이 이용사용할 수 있도록 할 계획이다.

    /shared 는 211.183.3.0/24 의 모든 서버들이 공유할 수 있어야 하며 파일 작성,수정,삭제 가 모두 가능해야 한다.

    rocky1 은 로컬 환경에 /test 디렉토리를 생성하고 rocky2 의 /shared 와 마운트 시켜 파일을 작성해 본다. rocky2 의 /shared 에서 이를 확인할 수 있어야 한다.

  7. rocky2:/shared←→ rocky1:/test 마운트를 해제 한다. 이를 rocky1 의 /var/www/html 과 마운트 시킨다. 사전에 rocky1 에 httpd 를 설치해 두어야 한다!!!!

    rocky1:/var/www/html ←→ rocky2:/shared

    이후 rocky1 에서 /var/www/html/index.html 파일을 작성하면 rocky2:/shared  에서 해당 파일을 확인할 수 있어야 하며 외부 사용자들은 주소 창에 http://192.168.X.Y ← rocky1 의 공인IP 로 접속시 index.html 파일의 내용을 확인할 수 있어야 한다!!!

    [교재에서 SELinux 라는 부분을 일부 살펴 보아야 합니다]

💡
  • rocky1, 2 모두 - 인터넷 Ping 확인
[user1@rocky2 ~]$ ping www.google.com -c 3
PING www.google.com (142.250.206.196) 56(84) bytes of data.
64 bytes from kix07s07-in-f4.1e100.net (142.250.206.196): icmp_seq=1 ttl=128 time=57.2 ms
64 bytes from kix07s07-in-f4.1e100.net (142.250.206.196): icmp_seq=2 ttl=128 time=49.1 ms
64 bytes from kix07s07-in-f4.1e100.net (142.250.206.196): icmp_seq=3 ttl=128 time=58.6 ms

--- www.google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 49.068/54.971/58.603/4.210 ms
  • rocky1, 2 모두 - 서로 ping 확인
[user1@rocky ~]$ ping 211.183.3.102 -c 3
PING 211.183.3.102 (211.183.3.102) 56(84) bytes of data.
64 bytes from 211.183.3.102: icmp_seq=1 ttl=64 time=0.778 ms
64 bytes from 211.183.3.102: icmp_seq=2 ttl=64 time=1.08 ms
64 bytes from 211.183.3.102: icmp_seq=3 ttl=64 time=0.584 ms

--- 211.183.3.102 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2005ms
rtt min/avg/max/mdev = 0.584/0.814/1.082/0.207 ms
  • rocky1, 2 모두 - 방화벽 중지
[user1@rocky2 ~]$ systemctl stop firewalld && systemctl disable firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
  • root 사용자로 변경 및 vim 설치 & alias 등록
# rocky1, 2에 root로 접속하여 PasswordAuthentication을 no로 변경한다.

# root 권한으로 변경
[user1@rocky ~]$ su root
Password: 

# vim 패키지 설치
[root@rocky1 user1]# dnf -y install vim
Last metadata expiration check: 0:03:10 ago on Tue 04 Mar 2025 05:56:19 PM KST.
Package vim-enhanced-2:8.0.1763-19.el8_6.4.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!

# 편의상 vim -> vi 로 alias 등록
[root@rocky1 user1]# echo "alias vi='vim'" >> ~/.bashrc
[root@rocky1 user1]# echo "alias vi='vim'" >> /home/user1/.bashrc

# alias 수정 내용 바로 반영
[root@rocky1 user1]# source ~/.bashrc

# /etc/sudoer 파일 수정
[root@rocky1 user1]# vi /etc/sudoers
  • user1 사용자가 모든 명령을 모든 사용자로 실행할 수 있으며, sudo 실행 시 비밀번호를 입력할 필요 없음

  • SSH 로그인 시 비밀번호 인증 비활성화

[root@rocky1 user1]# vi /etc/ssh/sshd_config

[root@rocky1 user1]# systemctl restart sshd
[root@rocky1 user1]# exit
  • rocky2에도 vi 접속하여 적용
  • /.ssh 디렉토리 생성, 권한 부여 & authorized_keys 파일 생성, 권한 부여
[user1@rocky ~]$ mkdir ~/.ssh ; chmod 700 ~/.ssh ; touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys
[user1@rocky ~]$ ls -a
.              .bashrc  Desktop    .ICEauthority  Pictures  Templates
..             .cache   Documents  .local         .pki      Videos
.bash_logout   .config  Downloads  .mozilla       Public    .viminfo
.bash_profile  .dbus    .esd_auth  Music          .ssh      .Xauthority

# 권한 확인
[user1@rocky ~]$ ls -al
total 40
..
drwx------.  2 user1 user1   29 Mar  4 18:31 .ssh
...

[user1@rocky ~]$ ls -al .ssh
total 4
..
-rw-------.  1 user1 user1    0 Mar  4 18:31 authorized_keys
[user1@rocky2 ~]$ mkdir ~/.ssh ; chmod 700 ~/.ssh ; touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys
  • @rocky1 key-pair 생성
[user1@rocky ~]$ ssh-keygen -q -N "" -f lab.pem
l[user1@rocky ~]$ ls
Desktop    Downloads  lab.pem.pub  Pictures  Templates
Documents  lab.pem    Music        Public    Videos

# public key를 authorized_keys에 복사
[user1@rocky ~]$ cat lab.pem.pub >> ~/.ssh/authorized_keys
[user1@rocky ~]$ cat .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDTZIj/4K4n1Iy+dC2MeIXHwZfN7a5/H7xrcPnE4j5zxwBFRHzFgfmARYe5RmLqfC+I/va5FtDZfc5MhcFmFPvEauH6Eh/b+i1sUJX92XW5hSc7jVwDamxx/3uTE+VpH6nB6HsWi8AeQmB1YXWBfpY8m8pazzdVAMlrpiho3POLa0FLVkAvIlFE/IDwagxp4t2qJTo1otx644kvT80qIqeraGX19ruzYyPLvT/ETUS6a69u3qsSWJ6oSgPPGAp4cXA3ekLvMLWsPH1lyTXAMyomzX4CogdLXeyMgzA3BLB9iru46fP/IpoOlL5ILf462gjGSoamI31+buieNKDxz4qK1gf8TUeINH9C2naTGf5lucOp4B231KyNeJxiXu0/zKkc3zqWFkoi++DsbdlOC7CbDgRiUnQyLKqUmzLC4tnjPysxIipEJeWdHmXQtPP/31I3X4+essmw1ne4mjtknsciEtmSr9OfgHnNcR2sEiUg5bgAkFc5ZrhRs3aiSZSqL/k= user1@rocky1.ksi.pri
  • @rocky2에서도 authorized_keys에 public key 복사
[user1@rocky2 ~]$ vi ~/.ssh/authorized_keys
  • @rocky1 private key를 메모장에 복사하여 바탕화면에 저장
[user1@rocky ~]$ ls 
Desktop    Downloads  lab.pem.pub  Pictures  Templates
Documents  lab.pem    Music        Public    Videos
[user1@rocky ~]$ cat lab.pem
-----BEGIN OPENSSH PRIVATE KEY-----
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
-----END OPENSSH PRIVATE KEY-----
  • MobaXterm에서 private key 넣어서 ssh 접속

  • rocky2도 session setting 똑같이 해서 열기
  • 이제 local terminal 에서
[DSO12.DESKTOP-DIRH5RI] mount
C:/Users/DSO12/AppData/Roaming/MobaXterm/slash/mx86_64b/bin on /usr/bin type ntfs (binary,noacl,posix=0,user)
C:/Users/DSO12/AppData/Roaming/MobaXterm/slash/mx86_64b/lib on /usr/lib type ntfs (binary,noacl,posix=0,user)
C:/Users/DSO12/AppData/Roaming/MobaXterm/slash/mx86_64b on / type ntfs (binary,noacl,auto)
C:/Users/DSO12/AppData/Roaming/MOBAXT~1/home on /home/dso12 type ntfs (binary,noacl,posix=0,user)
C:/Users/DSO12/AppData/Roaming/MOBAXT~1/home on /home/mobaxterm type ntfs (binary,noacl,posix=0,user)
C: on /drives/c type ntfs (binary,posix=0,user,noumount,auto)

[DSO12.DESKTOP-DIRH5RI] pwd
/home/mobaxterm
  • 파일 탐색기에 C:/Users/DSO12/AppData/ 검색
[DSO12.DESKTOP-DIRH5RI]ls
Desktop  LauncherFolder  MyDocuments  mykey.pem  mykey.pem.pub

[DSO12.DESKTOP-DIRH5RI]ls Desktop
GNS3.lnk  Notion.lnk  desktop.ini  lab.pem  mykey0228.pem.txt
                                                                                                      ✓
[DSO12.DESKTOP-DIRH5RI]cp Desktop/lab.pem .

[DSO12.DESKTOP-DIRH5RI]ls
Desktop  LauncherFolder  MyDocuments  lab.pem  mykey.pem  mykey.pem.pub
                                                                                                      ✓
[DSO12.DESKTOP-DIRH5RI]chmod 600 lab.pem
                                                                                                      ✓
[DSO12.DESKTOP-DIRH5RI]ls -l
total 2
lrwxrwxrwx 1 DSO12 없음   30 2025-02-27 12:28 Desktop -> /drives/C/Users/DSO12/Desktop/
lrwxrwxrwx 1 DSO12 없음   36 2025-02-27 12:28 LauncherFolder -> /drives/C/PROGRA~2/Mobatek/MOBAXT~1/
lrwxrwxrwx 1 DSO12 없음   31 2025-02-27 12:28 MyDocuments -> /drives/C/Users/DSO12/DOCUME~1/
-rw------- 1 DSO12 없음 2646 2025-03-04 18:56 lab.pem
-rw------- 1 DSO12 없음  411 2025-02-27 14:54 mykey.pem
-rw-r--r-- 1 DSO12 없음  103 2025-02-27 14:54 mykey.pem.pub

[DSO12.DESKTOP-DIRH5RI]vi ~/.ssh/config

rocky1 user1 터미널에서

놓친 듯…

💡

@MobaXterm 로컬터미널

[DSO12.DESKTOP-DIRH5RI]whoami
DSO12

[DSO12.DESKTOP-DIRH5RI]ssh -l root 211.183.3.101
The authenticity of host '211.183.3.101 (211.183.3.101)' can't be established.
ED25519 key fingerprint is SHA256:AaC8x1DAJ+eaASPtBcLpeyJudXJM1vF/3xQgXclMDvA.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '211.183.3.101' (ED25519) to the list of known hosts.
root@211.183.3.101's password:

# rocky1 접속
[root@rocky1 ~]# ls -a
.   anaconda-ks.cfg  .bash_profile  .cache   .cshrc  initial-setup-ks.cfg  .Xauthority
..  .bash_logout     .bashrc        .config  .dbus   .tcshrc
[root@rocky1 ~]# exit
logout

Connection to 211.183.3.101 closed.
                                                                                                      ✓
───────────────────────────────────────────────────────────────────────────────────────────────────────
[2025-03-04 17:28.04]  ~
[DSO12.DESKTOP-DIRH5RI]ls -a
.   .bash_history  .viminfo  LauncherFolder  mykey.pem
..  .ssh           Desktop   MyDocuments     mykey.pem.pub
                                                                                                      ✓
───────────────────────────────────────────────────────────────────────────────────────────────────────
[2025-03-04 17:28.07]  ~
[DSO12.DESKTOP-DIRH5RI]ls .ssh
config  known_hosts  known_hosts.old
                                                                                                      ✓
───────────────────────────────────────────────────────────────────────────────────────────────────────
[2025-03-04 17:28.10]  ~
[DSO12.DESKTOP-DIRH5RI]cat .ssh/known_hosts
211.183.3.11 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBO9nFx7oADIJ30soTZnUn0TvCx1PsQ/E828BcBC1biUENXCWLlLXkPGlOrrjppTl1mNED2WHYH1FUKHTvrRW2fE=
211.183.3.11 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMo7C2tVUVBwwDlLrYxSl9YYBcC5+bSAM8M86dn1i57c
211.183.3.11 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDDKtKu1T7A74TgLbUz+t3J0Qwlx9C7W/L2XlukkXjLcKFpneie0tI6SMV/fH/fcBPKb4ZoJt6ruTEHPma8x9uSRjsBFRZm0AtSBvByLlotebkCOBo9RhHuvKnONV4QFYLpGL3N8i5WhDolpihF/83HYCvRvVeqvPRmVyLkM2EqRhd5nQWuhcTF7W43/vIl1QtajwvHhc/XrNGSpocz0katlqeiCm9eWyZYat1t7g/MuBaJaWnrc8HFxa5jpi/c5by7hizn/foJ9NFrBqvtYe9M5NCvTK37lPk0w2Q3bUR4vjzLIKCwdYRhSpAXbSu+LGIxyvo1eUiJkpi+IqOfOsIQFetg1vV63yej3apqEFxCjeltq17saCTXRPGYk/A8DPEp1PIhz5JyNYXi2MEY55GprfZ+1Gs/n+GjvAs41gOp7iPe43YH6fN6nRZwcWDNc3YCKQdPgqMonBc96XXM2deGm5uqN5b8e8TnaSAnmoDFvF5VGJI34uVkzPSZ+Kfh0cE=
211.183.3.12 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBBf+1rTUfE3fKsJdMpfhSisRTmNfK+MUuTLC1jVpv069JIjQBVYgzEswTcvlbgoZT08S/z/k237O5u5tFhdSW7Q=
211.183.3.12 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMedBaxsEN0/yBY0ncPObE15oeE8uy5xWdAqlEmxzAx4
211.183.3.12 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDi1xfsVB3eN9yZg6f+8BrQQUFqrODKu6iXBgvBvT81WiWS85RBWyuBpJGduBw7pgnu9mchxL0BdegKfpZDv1z3jTdzEW74doP0Jqrm4c0jqRFi6uBPWSxcr8gSVusq+UiW2BRMgN/AxkwoSDFLqx19ijLxakA8Z60QTyzMZy5bK+wBD6i94vC32OzAu554ot8IM8nlWSezrKIP4u4hJhvR9zxdgT8Z/tw3IMj/gIa1TLNNiMUqZf2DE/3zIUgJDgNO0l9qqe8cL6z5VtXqX2UGlXM5ZhvqS6DZX9GEay9tPlkamArNfRC7cFx7CzoYGqFwkGevbU6EiMg4rASm/X3HHEn3dvFdgxVipuwIN1rsGOYLGigu6/zk1Xfg6BdIy5Wuzg2F0VlK+St4bJefylb5vjD3xgv90xI9tULqzk9RxBFLokACGuV23Ru+LFMcMdFmxbYjEYpFKHA+cTfjASA6KJgP6aN2ZV6jlIKsuwyOnPFF37h5lylyvzcaDWZq3cU=
211.183.3.101 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJaeabQ7ZWZ0ksFmnEyJgQZ8sLs3DuBgVNADKfGmJfCb
211.183.3.101 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC8yif0kcidI/PRRw7MPODUS86ligck6dcP7AkldSh0bg/UK+zSg3ZyWtBQnVRB9iMnTqE8UmwpkoFNyr/6EmesejXsOfsybuuzTzJptjTMIlqJORNFoJk2OpcfXYyaMYq9lz6IVCGTK6v8iokNWfjjSu1rV25dH5SESwlRH4f4oKHTDRVBDxzi2NpR7d/XeNx/BL7HjdvbULth+F39i9JLDVppFT/Qfmg1o2DHAkGsqw/EAcM8XV2wGlaR5bqNzhoD2XASlrP7bXPiodOKF/HAIep7y0dDJu6SY7Q2zwspVGOS02s8fAbNCTI0HvAcEQiQCLZxehekz/OKIp+y7gMLFC74GxUne5zrSO1M4C8KdLHpPnXaA/nHFKu1qpDKPXzFaabn31dWTWjpmc/ZPx9ABdA4XxzW5MkaLRwUg8jKb/SkvTDaZ7UAselzvbRvH/XsVnDKj5J/h5F0IQ6zg8GastST7n1kJ4waLlN6c8Zip4IjdRuvZyPNvMk/q8nT/Us=
211.183.3.101 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCcmhkPfdxGkBHmaz9wt1n+CeD4EgJ2iCtw58gENYcfwwqNfC/VauR4+zehaa/0KitEG7yxPs9CFBvi5LkFI3YY=
                                                                                                      ✓                                                                             ✗
───────────────────────────────────────────────────────────────────────────────────────────────────────
[2025-03-04 17:28.51]  ~
[DSO12.DESKTOP-DIRH5RI]ssh -l root 211.183.3.101
root@211.183.3.101's password:
Activate the web console with: systemctl enable --now cockpit.socket

Last login: Tue Mar  4 17:27:41 2025 from 211.183.3.1
[root@rocky1 ~]# exit
logout
Connection to 211.183.3.101 closed.

무슨 내용인지도 모르고 따라하기만 했던 시절이라 정신이 없어서 필기도 다는 못했다 🥹

profile
좋아 가는거야

0개의 댓글