[개발 환경] SSH (Secure Shell)
SSH (Secure Shell)란?
SSH는 네트워크를 통해 다른 컴퓨터에 안전하게 접속하기 위해 사용하는 통신 규약이다.
쉽게 말해서 멀리 떨어져 있는 서버를 내 노트북에서 원격으로 조종할 수 있게 해주는 보안 연결 통로라고 생각하면 된다.
SSH를 통해 원격으로 접속할 때, 접속을 시도하는 쪽을 SSH 클라이언트, 접속을 받아주는 쪽을 SSH 서버라고 한다.
SSH 접속 방법
SSH로 서버에 접속하는 방법은 크게 두 가지가 있다.
- 비밀번호 인증: 서버의 사용자 계정과 비밀번호를 입력해 접속하는 방식으로, 편리하지만 비밀번호가 노출될 수 있다.
- 키 기반 인증: 비밀번호 대신 key를 사용하는 방식으로, 보안이 더 강력하고 한 번 설정해두면 비밀번호 입력 없이도 안전하게 자동 로그인을 할 수 있다.
Key 기반 인증
Key에는 Public Key와 Private Key가 있다.
Public Key는 말 그대로 누구에게나 공개되어도 상관없는 key이며, 내가 접속하려는 원격 서버에 미리 저장해 둔다.
Private Key는 다른 사람에게 보여주어서는 안 되는 key이며, 내 로컬 컴퓨터에만 보관해야 한다.
SSH 접속 과정은 간단히 표현하면 아래와 같다.
- 내 컴퓨터에서 서버의 특정 포트로 접속을 시도함
- 서버가 내 Public Key를 이용해 암호화된 문제를 만들어 내 컴퓨터로 전송함
- 내 컴퓨터는 Private Key를 이용해 그 문제를 풀어서 서버로 다시 전송함
- 정답이 맞다면, 암호화된 보안 통로가 연결됨
즉, Public Key는 전용 열쇠가 필요한 자물쇠이고, Private Key는 특정 자물쇠를 열 수 있는 하나뿐인 진짜 열쇠이다.
따라서 Public Key는 누구나 가질 수 있지만, 이를 통해 잠긴 데이터를 풀 수 있는 것은 Private Key를 가진 사람뿐이다.
SSH Key 생성 및 서버 연결
SSH Key 생성
ssh-keygen -t ed25519위 명령어를 실행 후 엔터를 치면,
~/.ssh/폴더 안에id_ed25519(Private Key)와id_ed25519.pub(Public Key)가 생성된다.서버에 Public Key 등록 (윈도우 Powershell에서는 불가능)
ssh-copy-id {사용자이름@서버주소}위 명령어를 실행 후 서버 비밀번호를 입력하면, 내 Public Key가 서버에 저장된다.
따라서 서버에 접속할 때 더 이상 서버의 계정 비밀번호를 입력할 필요가 없게 된다.서버 접속
ssh {사용자이름@서버주소}등록이 완료되면, 이제 해당 SSH 서버에 바로 접속할 수 있다.
