본문 바로가기
320x100
320x100

먼저 https://code-boki.tistory.com/141

 

원격 서버 접속하기(3) - ssh 접속(feat. 개인키/공개키 파일 생성)

먼저 https://code-boki.tistory.com/140 원격 서버 접속하기(2) - ssh 접속(feat. ID/PW) https://code-boki.tistory.com/135 원격 서버 접속하기(1) - telnet/ssh 입사를 해서 회사 일을 해보면, 이런 단어들을 들어볼 수 있을

code-boki.tistory.com

이 글을 보고 오면 좋을 것 같다

 

일전의 테스트와 같이 내 개인 맥북 2개로 SSH를 실습하며 동작과정을 알아볼 것이다

 

현재 맥북(SSH 클라이언트) - 192.168.123.101

whoami
ifconfig | grep inet | grep 192.168.123

맥북1 - boki(192.168.123.101)

 

접속할 맥북(SSH 서버) - 192.168.123.104

whoami
ifconfig | grep inet | grep 192.168.123

맥북2 - tester(192.168.123.104)

 

 

이전 글에서 공개키/개인키를 만들어봤으니 이제는 이 키로 접속을 해본다

 

개인키 방식(OpenSSH, PEM)

macOS에서 테스트를 할 것이므로 OpenSSH PEM방식을 테스트해본다

  1. 공개키/개인키 쌍을 ssh-keygen으로 만든다
  2. 공개키를 ssh-copy-id 명령어를 통해 서버로 전송한다 <--------
  3. 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로 원격 서버에 접속이 가능하다

320x100

댓글