SW Concept

wldbs._.·2024년 11월 25일
1

SW

목록 보기
2/8
post-thumbnail

DGIST 차세대반도체융합연구소: SSH
리눅스 scp 명령어 사용법
UTF-8과 인코딩의 이해: 프로그래밍에서의 변환 과정
유니코드와 UTF 이해하기
What is Port 22?
Linux-SFTP로 파일 전송하기

업무를 진행하는 도중, 모르는 개념들이 많아 가볍게라도 훑어보며 아래에 정리해두고자 한다.
지금부터라도 조금씩 알아가면서 정리해두면, 괜찮지 않을까,,,,


1. SSH

SSH(Secure SHell)

SSH란 Secure SHell의 약자로써,
네트워크상의 다른 컴퓨터에 로그인하여 명령을 실행하고 정보를 보고 받을수 있도록 해 주는 통신 프로토콜을 의미한다.

  • 이 때 사용자가 접속에 사용하는 컴퓨터를 클라이언트,
  • 접속하고자 하는 목적지 컴퓨터를 서버라고 부른다.
  • "A shell is a program that lets you perform operating system commands on a device, typically through a command-line interface (CLI)."

SSH는 다음 기능들을 수행한다.

  • 네트워크상의 다른 컴퓨터에 접속하여 로그인을 한다.
  • 로그인 뒤, 원격지의 컴퓨터에서 명령어를 실행하고 결과를 돌려받는다.
  • 통신 과정중 오고 가는 모든 데이터를 암호화하여 중간에서 가로챌 수 없도록 한다.

추가

  • 원격지의 컴퓨터에 로그인하여 명령을 하달하기 위해서는, 접속자가 로그인 권한이 있는 사용자임을 증명해야 한다.
  • 리눅스 상에서 ssh를 사용해 서버를 접속하기 위해 사용하는 명령어는 아래와 같다.
ssh ID@접속 서버

2. scp

SCP(Secure CoPy)

ssh 원격 접속 프로토콜을 기반으로 한 SecureCopy(scp)의 약자로서,
원격지에 있는 파일과 디렉터리를 보내거나 가져올 때 사용하는 프로토콜이다.

네트워크가 연결되어 있는 환경에서 ssh와 동일한 22번 포트와 identity file을 사용해서 파일을 송수신하기에, 보안적으로도 안정된 프로토콜이라 할 수 있다.

  • port 22는 ssh의 기본 포트
  • "Port 22 is dedicated to Secure Shell (SSH), which allows you to securely connect to a remote device and issue commands as if you were in front of it."

1. 단일 파일을 로컬에서 원격지로 보낼 때

scp 파일명 원격지id@원격지ip:받는위치

2. 복수의 파일을 로컬에서 원격지로 보낼 때
: 단일로 보내건 복수로 보내건 보내는 구문에는 크게 차이없이 파일명 뒤에 한 칸 공백 띄우고 파일명 넣어두기

scp 파일명1 파일명2 원격지id@원격지ip:받는위치

3. 여러 파일을 포함하고 있는 디렉터리를 로컬에서 원격지로 보낼 때

scp -r 디렉터리명 원격지id@원격지ip:보낼경로

4. 단일 파일을 원격지에서 로컬로 보낼 때

scp 원격지id@원격지ip:원본위치 받는위치

5. 복수의 파일을 원격지에서 로컬로 가져올 때

scp 원격지id@원격지ip:"원본위치파일1 원본위치파일2" 받는위치

6. 여러 개의 파일을 포함하는 디렉터리를 원격지에서 로컬로 가져올 때

scp -r 원격지id@원격지ip:디렉터리위치 받을경로

3. sftp


SFTP(SSH File Transfer Protocol)

파일을 다운로드하거나, 인터넷에 업로드할 때 일반적으로 사용된다.
SFTP를 사용하면 암호화를 통해 데이터를 안전하게 전송할 수 있다.
일반 텍스트 파일은 전송되지 않는다.

  • FTP(File Transfer Protocol): 파일을 전송할 때 사용하는 통신 규약.
    • 계정을 제공하는 서버와 클라이언트가 파일을 주고받을 때 사용한 인터넷 통신 규약.
    • 보안적인 문제로 잘 사용되지 X

SFTP는 보안을 강화한 FTP라고 생각하면 된다.
SFTP는 FTP와 달리, 서버 간의 데이터 전송 시 암호화하기 때문에 보안상의 문제점을 방지한다.
즉, SSH를 적용한 파일 전송 프로토콜이다.

  • 여기서 SSH란,. 원격 PC에 안전하게 액세스하기 위한 유닉스 기반의 명령 인터페이스 및 프로토콜에 암호화 기능을 구현해 모든 데이터가 암호화되어 높은 보안을 지원하는 인증 메커니즘이다.

<SFTP를 통한 파일 전송>

1. 서버 - 클라이언트 연결

원격 서버에 대한 SFTP를 연결하려면 아래의 명령어를 사용하면 된다.

$ sftp [remote_username]@[remote_ip]

2. 서버 pc 경로 설정

연결이 되었으면 아래의 명령어를 통해 파일을 위치시킬 서버PC의 경로를 설정하자.

sftp> pwd       # 경로확인
sftp> ls        # 파일 디렉터리 나열
sftp> cd [PATH] # 해당 [PATH]로 이동

3. 파일 전송

파일을 위치시킬 경로로 이동했다면, 모든 준비가 끝났다. 아래의 명령어로 원하는 파일을 전송하면 된다.

sftp> put [filename]     # [filename]을 원격서버로 전송

sftp> put -r [dirname]   # [dirname](디렉터리)을 원격서버로 전송

4. 연결 종료

ls 등 명령어를 통해 파일이 제대로 전송되었는지 확인하고, 작업이 끝났으면 연결을 종료하면 된다.

sftp> bye

<SFTP를 통한 파일 다운로드>

1. 서버 - 클라이언트 연결
원격 서버에 대한 SFTP를 연결하려면 아래의 명령어를 사용하면 된다.

$ sftp [remote_username]@[remote_ip]

2. 서버 pc 경로 설정
연결이 되었으면 아래의 명령어를 다운로드 할 파일이 위치한 서버PC의 경로를 설정하자.

sftp> pwd        # 경로확인
sftp> ls         # 파일 디렉터리 나열
sftp> cd [PATH]  # 해당 [PATH]로 이동

3. 파일 전송
파일을 위치시킬 경로로 이동했다면, 모든 준비가 끝났다. 아래의 명령어로 원하는 파일을 전송하면 된다.

sftp> get [filename]                         # [filename]을 다운로드
sftp> get [host_filename] [local_filename]   # [host_filename]을 다운로드 할 때  [local_filename]으로 변경해서 저장
sftp> get -r [dirname]                       # [dirname](디렉터리)을 다운로드
sftp> get -r [host_dirname] [local_dirame]   # [host_dirname](디렉터리)을 다운로드 할 때 [local_dirname]으로 변경해서 저장

4. 연결 종료
ls 등 명령어를 통해 파일이 제대로 전송되었는지 확인하고, 작업이 끝났으면 연결을 종료하면 된다.

sftp> bye

4. utf-8 encoding

UTF-8은 "Universal Character Set Transformation Fromat - 8 bit"의 약자로,
유니코드 문자를 표현하는 가변 길이 문자 인코딩 방식이다.

  • UTF-8은 8bit(1byte) 단위로 인코딩

  • UTF-8은 1byte부터 4byte까지 가변 바이트를 활용하여 유니코드 인코딩

    • 유니코드 : 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준 (= 글자와 코드가 1:1로 매핑되어있는 표준화된 테이블)
    • 참고로, 한글 ‘가’는 유니코드로 ‘U+AC00’

Encoding은 단순히 '변환'을 의미한다.
프로그래밍에서는 주로 "문자를 0과 1의 형태로 변환한다."는 의미로 사용한다.
이것이 의미하는 바는, 문자를 컴퓨터가 이해할 수 있는 이진 데이터로 변환한다는 것이다.
이 과정에서 문자를 다양한 방식으로 표현할 수 있으며, UTF-8은 이러한 변환 과정 중 하나이다.

UTF-8의 동작 방식을 간단히 보자면,

  • 기본적으로 ASCII 문자는 1바이트로 표현되고,
  • 다른 유니코드 문자는 2바이트 이상의 가변 길이로 표현된다.
  • 한글은 3바이트 길이로 표현된다.

이진 숫자로 변환된 각각의 바이트는 해당 문자를 컴퓨터가 이해할 수 있는 현태로 표현한 것이다.


해당 글은 추후 수정될 수 있습니다.
왜냐고? 모르는 게 너무 많아서 이거로는 안돼,,,

profile
공부 기록용 24.08.05~ #LLM #RAG

0개의 댓글