////
Search
Duplicate

ssh

프로토콜
컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계
SSH란 Secure Shell Protocol, 즉 네트워크 프로토콜 중 하나로 컴퓨터와 컴퓨터가 인터넷과 같은 Public Network를 통해 서로 통신을 할 때 보안적으로 안전하게 통신을 하기 위해 사용하는 프로토콜입니다. 대표적인 사용의 예는 다음과 같습니다.
1.
데이터 전송
a.
깃허브에 푸시할 때, ec2에 파일을 보낼 때
- name: Deploy to EC2 if: github.event_name == 'pull_request' uses: appleboy/scp-action@master with: host: ${{ secrets.MPT_HOST }} username: ${{ secrets.MPT_USERNAME }} key: ${{ secrets.MPT_PRIVATE_KEY }} source: "dist/*" target: "/home/ubuntu/mptfront/my-paldo-trip-fe"
JavaScript
복사
프론트엔드 main.yml
2.
원격 제어
a.
aws ec2 서버 설정을 할 때
git bash를 통해 ec2에 접속할 때
- name: Pull Docker Image and Compose up env: TIMESTAMP: ${{ steps.timestamp.outputs.timestamp }} uses: appleboy/ssh-action@master with: host: ${{ secrets.MPT_HOST }} username: ${{ secrets.MPT_USERNAME }} key: ${{ secrets.MPT_PRIVATE_KEY }} script: | sudo docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} sudo docker pull ${{ secrets.DOCKER_USERNAME }}/mpt:$TIMESTAMP sudo docker stop $(sudo docker ps -q) sudo docker rm $(sudo docker ps -aq) export TIMESTAMP=${{ steps.timestamp.outputs.timestamp }}; sudo -E docker-compose up -d sudo docker system prune -a -f --volumes
JavaScript
복사
백엔드 main-flow.yml

왜 굳이 ssh?

FTP (File Transfer Protocol)
TCP/IP 를 통해 파일을 송수신하기 위해 고안된 프로토콜
대량의 파일을 처리할 때 사용, 웹 개발 시 유용, 폐쇄형 시스템 내에서 대량의 서버 배치 파일을 간단하게 전송
빠른 파일 송수신이 목적이므로 보안이 취약
SFTP (SSH File Transfer Protocol)
SSH 데이터 스트림을 통해 보안 등급이 높은 파일 전송을 실현하는 별도의 프로토콜
ssh와 같은 방식을 사용하고 ssh포트인 22번 포트 사용
텔넷(Telnet)
원격 접속 서비스로서 특정 사용자가 네트워크를 통해 다른 컴퓨터에 연결하여 그 컴퓨터에서 제공하는 서비스를 받을 수 있도록 하는 인터넷 표준 프로토콜
네트워크에 있는 컴퓨터를 자신의 컴퓨터처럼 파일 전송, 파일 생성, 디렉토리 생성 등을 자유롭게 할 수 있다
사용자가 쓰기에는 텔넷과 SSH는 차이점이 없음
텔넷은 정보를 byte스트림형식으로 주고 받고, ssh는 DES, RSA 등 고급 암호화를 통해 통신
SSH는 암호화 뿐만 아니라 압축 기술도 사용하는데, 암호화 때문에 트래픽이 텔넷보다 크게 늘어나지 않습니다. 단지 약간의 부하가 더 생길수도 있음

SSH 암호화 방식

public key : 공개키, 암호화 할 때 사용
private key : 개인키, 복호화 할 때 사용
대칭키 비대칭키를 혼합한 암호화 방식 ( https와 비슷)
비대칭키 방식은 대칭키 방식에 비해 자원을 많이 소모하고 속도가 느리기 때문
SSH 접속은 해당 개인 키를 사용하여 인증, 개인 키를 사용하여 서버에 접속하면 해당 키에 대한 공개 키가 서버의 ~/.ssh/authorized_keys 파일에 등록되어 있는지 확인해야 한다.
개인 키와 서버에 등록된 공개 키가 일치해야만 접속이 성공
개인 키와 서버에 등록된 공개 키가 일치하지 않는다면, SSH 연결은 실패하고 "Permission denied"와 같은 오류 메시지가 표시

pem 파일

Privacy Enhanced Mail
보안 웹 사이트를 인증하는데 사용되는 인증서를 Base64 인코딩 된 파일
각자의 공개키, 개인키 세트를 키페어(key pair) 라고 부름
보통 공개키의 경우 .pub, 개인키의 경우 .pem 의 파일 형식

SCP(secure copy) 와 SFTP의 차이

참고자료