먼저 https://code-boki.tistory.com/141
이 글을 보고 오면 좋을 것 같다
일전의 테스트와 같이 내 개인 맥북 2개로 SSH를 실습하며 동작과정을 알아볼 것이다
현재 맥북(SSH 클라이언트) - 192.168.123.101
whoami
ifconfig | grep inet | grep 192.168.123
접속할 맥북(SSH 서버) - 192.168.123.104
whoami
ifconfig | grep inet | grep 192.168.123
이전 글에서 공개키/개인키를 만들어봤으니 이제는 이 키로 접속을 해본다
개인키 방식(OpenSSH, PEM)
macOS에서 테스트를 할 것이므로 OpenSSH와 PEM방식을 테스트해본다
- 공개키/개인키 쌍을 ssh-keygen으로 만든다
- 공개키를 ssh-copy-id 명령어를 통해 서버로 전송한다 <--------
- ssh -i 를 통해 개인키 파일과 함께 서버에 접속을 시도한다 <--------
이번 포스팅에서는 나머지 2번/3번 을 포스팅한다
SSH에 -i 옵션을 주면 클라이언트의 개인키로 SSH 접속을 할 수 있게 된다
2. 클라이언트의 공개키를 서버로 전송
ssh-copy-id
- 서버에서 .ssh 폴더가 있는지 여부를 확인해본다
아직 아무것도 없다
- 클라이언트의 공개키(id_rsa.pub)를 서버로 전송(1)
ssh-copy-id -i ~/.ssh/id_rsa.pub tester@192.168.123.104
- 다시 한번 서버에서 .ssh 폴더의 내부를 살펴본다
authorized_keys 파일이 생긴 것을 확인할 수 있다
그리고 안의 내용을 보면 클라이언트에서 전송한 공개키가 추가되어 있는 것을 볼 수 있다
아까와 다르게 무언가 생겼다
- 클라이언트의 공개키(my-pw-key.pub)를 서버로 전송(2)
추가로 passphrase 설정을 해주었던 my-pw-key의 공개키도 전송해주자
ssh-copy-id -i ~/.ssh/my-pw-key.pub tester@192.168.123.104
- 서버에서 authorized_keys 내부를 살펴본다
내용이 추가된 것을 확인할 수 있다
마지막으로 PEM 형식으로 만든 키 파일의 공개키도 전송해보자
- 클라이언트의 공개키(my-pem-key.pem.pub)를 서버로 전송(3)
ssh-copy-id -i ~/.ssh/my-pem-key.pem.pub tester@192.168.123.104
- 서버에서 authorized_keys 내부를 살펴본다
총 3개의 공개키 파일이 전송된 것을 확인했다
OpenSSH(비밀번호 X), OpenSSH(비밀번호 O), PEM(비밀번호 X)
3. 접속 테스트
a.
ssh -i ~/.ssh/id_rsa tester@192.168.123.104
SSH ID/PW 방식과 다르게 비밀번호 입력 없이 접속이 된다
b.
ssh -i ~/.ssh/my-pw-key tester@192.168.123.104
a의 접속 내용과 다르게 passphrase를 묻는다. 우리가 키를 생성할 때 passphrase를 작성했다면, 개인키를 사용할 때마다 패스워드를 묻는다(2중 암호)
그리고 일부러 틀려보았더니 3회정도 passphrase를 묻더니 이번에는 원격서버의 password를 직접 물어본다
c.
ssh -i ~/.ssh/my-pem-key.pem tester@192.168.123.104
PEM 파일로도 OpenSSH 파일과 동일하게 접속이 되는 것을 볼 수 있다
d.
만약 서버의 authorized_keys 파일의 공개키가 변경된다면?
vi authorized_keys
id_rsa의 공개키를 찾아서 맨 끝 이전에 n개의 문자만 바꾸는 것
Q==를 T==로 바꿔보았다
그리고 클라이언트에서 id_rsa키의 개인키로 접속해본다
ssh -i ~/.ssh/id_rsa tester@192.168.123.104
이전과 다르게 Password를 입력하라고 나온다
추가
PuTTY 방식
Windows에서 PuTTY 프로그램을 이용해서 원격 서버로 접속하는 방법이다
- putty 설치
brew install putty
puttygen을 이용, -t: key type, -b: bit key 길이, -o: 키 파일의 이름
- PuTTY 키 생성
puttygen -t rsa -b 4096 -o ~/.ssh/my-putty-key.ppk
다른 파일과 다르게 1개만 생성된 키 파일
⇒ ppk 파일은 내부에 개인키, 공개키를 함께 가지고 있다
SSH 접속 방법 변경/제한
cat /etc/ssh/sshd_config | grep Authentication
- PasswordAuthentication: yes / no [ 비밀번호 인증 방식 ]
- PubkeyAuthentication: yes / no [ 공개키 인증 방식 ]
/etc/ssh/sshd_config 파일에서 PasswordAuthentication 를 no로 바꾸면, 비밀번호 접속 방식을 막을 수 있다. 또는 PubkeyAuthentication를 no로 바꾸면 공개키 인증 방식을 막을 수 있다
기본값은 둘다 yes이다
SSH config 파일 이용
.ssh 폴더 내에 config 파일이 없다면 생성 vi ~/.ssh/config
Host myserver
HostName 192.168.123.104
Port 22
User tester
IdentityFile ~/.ssh/my-pem-key.pem
config 파일이 작성된 후에 테스트
ssh myserver
직접 ssh -i 옵션으로 개인키 파일의 경로를 입력하지 않고, 미리 작성해 놓고 alias로 원격 서버에 접속이 가능하다
'OS > Unix' 카테고리의 다른 글
원격 서버 접속하기(5) - telnet, ssh 차이점(feat. wireshark) (1) | 2023.12.04 |
---|---|
원격 서버 접속하기(3) - ssh 접속(feat. 개인키/공개키 파일 생성) (2) | 2023.11.30 |
원격 서버 접속하기(2) - ssh 접속(feat. ID/PW) (0) | 2023.11.30 |
댓글