ssh가 설치된 서버라면 ssh 명령어를 통해 원격으로 다른 서버에 접속할 수 있다. 하지만 이 경우 비밀번호를 입력하여 작업해야하는데, 비밀번호 입력 없이 접속할 필요가 있는 경우가 있다. 그 때 많이 사용하는 것은 ssh-key 기능이다.

SSH key 를 통해 비밀번호 없이 원격으로 접속할 수 있다.

 

원격 접속을 시도하는 Client Server / 원격 접속을 통해 조종하고 싶은 SSH Server

 

 

 

            !!! 원리를 간단하게 이야기하자면 !!!

 

원격접속하는 서버(클라이언트)의 공인 key를 타 서버의 authorized_keys에 넣으면 원격접속 시도 시

원격접속 당하는 서버(SSH) 입장에서는
내가 가진 authorized_keys 값을 가진 id_rsa.pub인지 확인하고 맞으면 허용,

원격접속 하는 서버(클라이언트) 입장에서는
내가 가진 id_rsa.pub을 보여줘 내가 인증된 접속자인지를 타 서버에서 확인해주기를 기다림

 

그러므로 두 서버에서 작업을 모두 진행해줘야한다.

 

주의 : 클라이언트 서버에 있는 testuser001 이라는 사용자가 SSH 서버에 있는 testuser002라는 사용자로 원격 접속을 시도하는 경우 /home/testuser001/.ssh/ 과 /home/testuser002/.ssh/ 에 각각 필요한 파일들이 생성되어야합니다.

 

 

 

1. 클라이언트 서버에서 아래 작업을 통해 ssh-key 생성

cd ~/                    안에서 해당 작업 진행

ssh-keygen –t rsa                    ssh key 생성 명령어 (이후 enter키 세 번 입력)

사용자의 home 디렉토리에 .ssh라는 디렉토리가 생성된 것을 확인할 수 있다.

 

 

2. 생성된 파일 확인 및 id_rsa.pub 안의 값을 복사

ll

 >> id_rsa.pub

 >> id_rsa

 

 

3. 복사된 값을 SSH 서버의 authorized_keys 파일 안에 그대로 삽입 후 저장

아래 스크린 샷에서는 SSH 서버에서 ssh-keygen을 진행했으나 진행하지 않아도 전혀 문제 없습니다. 단순하게~/.ssh/authorized_keys 파일이 없는 경우 생성해주어 복사된 값을 넣고 저장해주면 됩니다. (디렉토리도 없는 경우 그냥 생성해주시면 됩니다.)

 

 

4. 비밀번호 입력 없는 ssh 원격 접속 확인

ssh open된 port가 1234 이며, 원격 접속을 하고자하는 대상 서버의 IP를 999.888.777.666 이라고 할 때 다음과 같은 명령어를 통해 ssh로 원격 접속이 가능하다.

ssh -p 1234 neouserk11@999.888.777.666

첫 ssh 접속인 경우 원격 접속을 원하는게 확실하냐는 질문이 나오며, 이는 그냥 yes 입력해주면 됩니다. 다음 접속때부터는 해당 과정이 없습니다.

 

 

logout 과 Connection to 999.888.777.666 closed 문구는 제가 원격 접속을 확인한 후 바로 logout을 했기 때문에 발생한 것이며, 직접 해보시면 해당 문구는 없을 것입니다.

 

 ( 간편한 logout은 ` Ctrl + D ` 입력을 통해 하실 수 있습니다. )

 

 

5. 만약 원격 접속이 정상적으로 진행되지 않는 경우

 

Client 서버

chmod 700 ~/.ssh

chmod 600 ~/.ssh/id_rsa

chmod 644 ~/.ssh/id_rsa.pub

chmod 644 ~/.ssh/known_hosts

 

SSH 서버

chmod 700 ~/.ssh

chmod 644 ~/.ssh/authorized_keys

 

를 진행해줍니다.

 

 

해당 기능은 편리하고 때로는 꼭 필요하지만 보안이 강하지는 않으므로 주의하실 필요는 있습니다.

 

+ Recent posts