Secure Shell, SSH
SSH는 Secure Shell의 약자로 비보안 네트워크를 통해 다른 컴퓨터에 안전하게 접속하고 원격에서 명령을 실행하거나 파일을 전송할 수 있습니다. 데이터를 전송하는 경우 이를 암호화하여 안전하게 보호합니다.
SSH는 클라이언트-서버 모델을 따릅니다. 클라이언트는 접속하고자 하는 사용자의 컴퓨터이며, 서버는 접속 대상이 되는 원격 컴퓨터입니다. 클라이언트와 서버 간의 통신은 암호화된 채널을 통해 잠재적인 도청이나 데이터 변조를 방지합니다.
SSH의 원리
SSH는 주로 공개 키 암호화를 사용하여 클라이언트와 서버 간의 안전한 연결을 설정합니다. SSH 접속 시 사용하는 두 가지 주요 인증 방식이 있습니다.
- 비밀번호 기반 인증: 사용자가 서버에 접속할 때마다 비밀번호를 입력합니다.
- 키 기반 인증: 사용자의 SSH 키 페어를 사용하여 인증합니다.
SSH 키 기반 인증으로 비밀번호를 입력하는 과정을 생략하고 서버에 접속할 것입니다.
SSH 키 기반 인증
- SSH 키 생성
클라이언트에서 공개 키와 비밀 키로 구성된 SSH 키 페어를 생성합니다. - 공개 키 배포
생성한 공개 키를 서버에 복사하여 저장합니다. 일반적으로 서버의 키 목록은~/.ssh/authorized_keys
파일에 추가됩니다. - 접속 시도
클라이언트가 서버에 접속을 시도하는 경우 키 목록에서 공개 키를 확인합니다. - 암호화된 인증 과정
서버가 무작위 문자열을 암호화하여 전송하면 클라이언트는 자신의 비밀 키로 문자열을 복호화한 값을 서버에 보냅니다. - 인증 완료
서버가 클라이언트의 응답을 확인하고, 올바른 경우 접속을 허용합니다.
SSH 패스워드 없이 접속하기
SSH 키 기반 인증을 사용하면 비밀번호를 입력하는 과정을 생략하고 안전하게 서버에 접속할 수 있습니다.
SSH 키 생성
반드시(MUST) 클라이언트에서 SSH 키 페어를 생성합니다.
ssh-keygen -t rsa -b 4096
명령어를 실행하면 키를 저장할 경로와 파일 이름을 묻는 메시지가 나타납니다. SSH 클라이언트는 기본 설정으로 홈 폴더에 있는 id_rsa 파일을 찾기 때문에 /home/<사용자 ID>/.ssh/id_rsa 를 사용하는 것을 권장합니다(SHOULD).
다음은 Passphrase를 입력하라는 메시지가 표시됩니다. Passphrase를 입력하지 않으면 비밀번호 없이 바로 SSH 접속이 가능합니다.
공개 키를 서버로 복사
생성된 SSH 키 쌍 중 반드시(MUST) 공개 키를 서버에 복사해야 합니다. 아래 방법 중 하나를 선택합니다. 서버의 사용자명을 foo로 가정합니다.
SSH-COPY-ID를 이용하여 공개 키 복사
ssh-copy-id foo@server_ip
서버 접속을 위한 비밀번호를 입력하면 공개 키가 서버의 ~/.ssh/authorized_keys 파일에 추가됩니다.
SCP를 이용하여 공개 키 복사
scp를 이용하여 공개 키를 복사하는 과정은 ssh-copy-id를 사용할 수 없는 경우의 대안으로 유용합니다. 서버에 직접 접속하여 반드시(MUST) 복사된 파일을 키 목록에 추가해 주어야 합니다.
scp .ssh/id_rsa.pub foo@server_ip:~
ssh foo@server_ip # 비밀번호를 이용하여 접속
mkdir -p .ssh
# 기존 authorized_keys 파일에 id_rsa.pub 내용 추가
cat id_rsa.pub >> .ssh/authorized_keys
rm id_rsa.pub

INAS의 블LOG에 오신 것을 환영합니다