systemd
시스템 전반에 대한 처리를 위해서 시작되는 프로세스
서비스를 구현할 때 이 systemd로 변경해서 사용하기 시작했다
시스템 부팅 프로세스
Service Management
cgroup을 이용한 프로세스 자원 관리
서비스 프로세스 관리
흔히 말하는 Daemon 프로그램들을 위한 로깅, 자원 할당, 부팅 관리 등 systemd로
모두 할 수 있다
systemctl(*)
systemd -anlyze
systemd -cgls
systemd -cgtop
systemd -loginctl
systemctl
현재 작동하고 있는 서비스들 목록 확인
(관리자 권한으로 실행)
모든 서비스들을 보고싶은 경우(현재 동작 여부와 상관없이 모두 불러옴)
ex) telnet
# systemctl enable telnet.socket => 서비스 등록
# systemctl disable telnet.socket => 서비스 비활성화
# systemctl stop telnet.socket => 서비스 중지(정지)
# systemctl start telnet.socket => 서비스 시작
# systemctl restart telnet.socket => 서비스 재시작
# systemctl status telnet.socket => 상태 정보 확인
# systemctl is-enabled telnet.socket => enable 활성화 여부 확인
# systemctl is-active telnet.socket => 실행 중인지 확인
Telnet Service
Application 계층에서 원격 시스템에 접속하여 관리하는 서비스
서버와 클라이언트 사이에 문자 혹은 줄 단위의 정보를 송/수신
NVT(Network Virtual Terminal)을 지원함
TCP 23을 사용하고 있음 (=Port 23번)
데이터 전송 시 암호화 지원 안함(미지원)
Telnet 설치
dnf[또는 yum] list installed telnet
rpm -qd | grep telnet
둘 중 한 가지 방법으로 사용
등록
systemctl enable telnet.socket
서비스 시작(재시작)
systemctl start[restart] telnet.socket
실행중인 서비스(Telnet 연결)
로컬 쉘 새로 열기
AWS - EC2 - Public IPv4 주소 확인
아래로 내려가면 보안 탭에 인바운드 규칙을 추가하여 현재 내 아이피에서
접근이 가능하도록 방화벽 추가 설정을 한다
로컬 쉘에서 telnet "Public IPv4 Address(퍼블릭 IP 주소)" 입력 후 엔터
연결 확인
Telnet 삭제
dnf[yum] remove telnet-server 명령어로 삭제
접근 시 수정했던 인바운드 규칙을 삭제해준다 !!
SSH(Secure Shell) - 포트 번호 22번
Application 계층에서 원격 시스템에 접속하여 관리하는 서비스
Telnet과 다르게 데이터를 암호화해서 전송한다
포트 번호 22번 사용
인증서와 암호를 통해서 인증처리를 진행
SSH 세팅하기
또는
rpm -qa | grep sshd
설치
dnf[yum] install sshd
서비스 등록 및 시작
systemctl enable sshd[.service] (.service는 생략 가능)
systemctl start[restart] sshd
ssh = Client
sshd = Server
#Port 22
서비스 포트 번호
#ListenAddress
특정 IP로만 접근을 허용
#LoginGraceTime
로그인 시 자연스러운 화면 전환을 위한 시간 설정
#AuthorizedKeysFile
공개 키로 인증을 허용
PasswordAuthentication no
SSH를 통해 서버 접속 시 비밀번호를 사용하지 않음
PermitEmptyPasswword no
암호가 없는 계정에 대해서는 허용하지 않음
Subsystem sftp /usr/libexec/openssh/sftp-server
활성화 시 FTP 서버의 하나인 것처럼 동작할 수 있게 함
SSH 인증서를 이용한 로그온(Linux)
공개키 기반 인증(RSA 암호화 방식 - 비대칭형 암호화)
공개키, 개인키(private)를 이용하여 암호화 통신
암호화 시 데이터의 사이즈 변화가 없다
가장 오래된 형태의 암호화 방식
통신 데이터에 최적화 되어있다
중요 포인트(issue) => 어떻게 암호화 키를 전달할 것인가?
암호화 통신 시 공개키와 복호화 키를 사용하여 전달하는 방식
공개키는 암호화 통신 시 상대방에게 전달하는 키
개인키 또는 비밀키로 통신 시 전달하지 않는 키
암호화 통신 시에 키값을 데이터에 같이 전달
(데이터의 사이즈 변화가 존재함)
데이터 통신용으로 사용하지 않고, 인증에 많이 사용됨
대칭형 암호화 통신을 위한 키 교환에 사용됨
중요 포인트(issue) => 암호화 통신을 위해 전달받은 공개키가 정말 상대방이 맞는가? (PKI 도입)
SSH로 접근 시 ID, PW를 입력하여 인증하는 방식이 아닌, 인증서를 기반으로
암호화 통신, 공개키 기반 인증은 ID, PW(입력x)하지 않고 접근
RSA 키 생성하기
[testuser1@ip-172-31-9-66 ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/testuser1/.ssh/id_rsa):
Created directory '/home/testuser1/.ssh'.
Enter passphrase (empty for no passphrase): (엔터)
Enter same passphrase again: (엔터)
Your identification has been saved in /home/testuser1/.ssh/id_rsa
Your public key has been saved in /home/testuser1/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:3HG6DbWAG2aPitRWLxD8Z65Gf04pbR09VBBQMR6BFBw testuser1@ip-172-31-9-66.ap-northeast-2.compute.internal
The key's randomart image is:
+---[RSA 3072]----+
| .. oE*O=.|
| .. . o. o.|
| ..* o o .. |
| . *.Bo* ... |
| . o S+* . ...|
| . o ....= o ..|
| . .. oo * . |
| o .+. |
| . o. |
+----[SHA256]-----+
cd ~/.ssh
ls -l
total 8
-rw-------. 1 testuser1 testuser1 2655 Jul 24 12:43 id_rsa
-rw-r--r--. 1 testuser1 testuser1 610 Jul 24 12:43 id_rsa.pub
(Host PC에서 접속)
authorized_keys가 아닌 다른 이름으로 변경할 경우 설정에서도 같이 변경해주어야 함
(이전 vim 편집기로 /etc/ssh/sshd_config 안에 AuthorizedKetyFile 설정을 의미)
mv id_rsa.pub authorized_keys
(authorized_keys는 SSH에서 인증을 위해 사용할 키를 지정(공개 키)
비대칭형 암호화를 사용하기 때문에 접속 상대방은 개인키를 이용하여 접속
Host PC(windows 10)에 WinSCP를 이용하여 ip_rsa(개인 키)를 전달
Xshell을 이용하여 인증 방식을 public key로 변환한 후에 전달 받은 id_rsa 키를
사용하여 연결
상속 관련 설정
VS Code 원격 탐색기 - SSH 설정 - C:\Users.ssh\config - IdentityFile을
해당 키 경로로 설정
키 파일 우클릭 -> 속성 -> 보안 탭 -> 고급 -> 상속 제거 -> 변경-고급 -> 지금 찾기
-> 검색 결과 중 주체를 찾아 설정 -> 저장
다시 SSH로 돌아가서 비밀번호를 입력하지 않고도 접근이 가능하게 바뀌었는지 확인
JAVA 설치 후 환경변수 설정
sudo yum install java-17-amazon-corretto
echo $JAVA_HOME
java -version
which java 또는 whereis java
ls -l /usr/bin/java
ls -l /etc/alternatives/java
ls -l /usr/lib/jvm/java-17-amazon-corretto.x86_64/bin/java
source .bashrc
echo $JAVA_HOME
=> /usr/lib/jvm/java-17-amazon-corretto.x86_64가 출력되면 성공 !!