
강력한 암호화 : 패스워드뿐만 아니라 전송되는 데이터 전체를 암호화 인증(Authentication) : 접속자가 올바른 사용자인지 확인(비밀번호 방식, 공개키 방식 등)무결성(Integrity) : 전송된 데이터가 중간에 위변조되지 않았음을 보장압축 : 데이터를 압축하여 전송하므로 네트워크 효율이 좋음SSH는 기본적으로 클라이언트-서버 모델로 동작하며 표준 포트는 22번
# 설치
apt -y install openssh-server
# 서비스 시작 및 활성화
sudo systemctl start ssh
sudo systemctl enable ssh
# 상태 확인 및 방화벽 허용
sudo systemctl status ssh
# 방화벽에서 22번 포트 해제
sudo ufw allow 22/tcp
개인키(Private Key) - 열쇠 역할: 클라이언트(내 PC)에 보관하며, 절대로 유출하면 안 된다. 본인을 인증하는 Key 역할공개키(Public Key) - 자물쇠 역할: 접속하려는 서버에 등록한다. 누구나 봐도 상관없으며, 개인키와 쌍을 이뤄 인증을 완료하는 '자물쇠' 역할
- 자물쇠(공개키)를 서버에 던져두고, 내가 가진 유일한 열쇠(개인키)로 자물쇠를 열고 들어가는 방식.
# 키 생성 (RSA 방식, 4096비트)
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# Enter를 세 번 눌러 기본값으로 셍성 (~/.ssh/ 폴더에 저장됨)
# 서버로 공개키 전송 (자동 등록)
ssh-copy-id -p [포트번호] [유저이름]@[서버IP]
ssh-copy-id를 쓸 수 없다면, 내 PC의 ~/.ssh/id_rsa/pub 내용을 복사해 서버의 ~/.ssh/authorized_keys 파일 끝에 붙여넣는다권한이 너무 관대하면 SSH 서버가 보안 위험으로 판단하여 접속을 차단하기도 한다. 아래의 설정을 꼭 확인하기
디렉토리(~/.ssh): 700(나만 읽고 쓰기 가능)공개키 등록 파일(authorized_keys): 600개인키(id_rsa): 600
매번 ssh -p 2222 user@1.2.3.4 를 입력하기 번거로울 경우, ~/.ssh/config 파일을 만들어 간소화 가능
Host myserver
HostName 1.2.3.4
User developowl
Port 2222
IdentityFile ~/.ssh/id_rsa
ssh myserver 를 입력하면 바로 접속이 된다.SSH가 설정되어 있다면
scp명령어로 파일을 안전하게 주고받을 수 있다.
scp -P [포트] [파일명] [유저]@[IP]:[서버경로]scp -P [포트] [유저]@[IP]:[서버경로] [로컬경로]scp -r [디렉토리명] [유저]@[IP]:[서버경로]