티스토리 뷰

반응형

SSH key 를 통해 비밀번호 없이 원격 접속

SSH란 ?

SSH란 Secure Shell Protocol, 즉 네트워크 프로토콜 중 하나로 컴퓨터와 컴퓨터가 인터넷과 같은 Public Network를 통해 서로 통신을 할 때 보안적으로 안전하게 통신을 하기 위해 사용하는 프로토콜입니다. 주로 데이터 전송, 원격제어를 할때 사용합니다. 그림으로 보면 아래와 같습니다.

https://i.imgur.com/I1B6cyh.png

특히 개발을하다보면 운영서버에 로그인하거나 파일을 전송하거나 전송받을 때 많이 사용하게됩니다. 이프로토콜을 사용하기위해서는 방화벽 22번 포트가 열려있어야합니다. 그리고 맥같은경우 서버기준 아래와 같이 공유 설정에서 원격 로그인체크를 해줘야합니다.

https://i.imgur.com/J4TuwLw.png

클라이언트에서 서버로 접속하는 방법은 여러가지인데 대표적인 방법은 패스워드인증과 SSH key를 통한 접속방법입니다. SSH key 방식은 따로 패스워드 인증없이 원격제어가 가능합니다. SSH key 방식에 대해 좀더 상세히 확인해보겠습니다.

SSH KEY 접속 방법

먼저 SSH key 방법으로 클라이언트에서 서버로 접속하는 방법은 크게 아래와같습니다.

  1. SSH Keygen을 통해 Client쪽에서 Private key와 Public key를 생성해줍니다.
  2. Public key를 서버에 전달해줍니다.
  3. authorized_keys에 Client public key를 동록해줍니다.
  4. Client 에서 서버로 접속합니다

https://i.imgur.com/gGG04z5.png

Public key, Private Key 생성

아래 명령어로 Public key, Private Key를 생성해줍니다.

$ ssh-keygen -t rsa

아래는 ssh-keygen 옵션입니다.

usage: ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa | rsa1]
                  [-N new_passphrase] [-C comment] [-f output_keyfile]
       ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
       ssh-keygen -i [-m key_format] [-f input_keyfile]
       ssh-keygen -e [-m key_format] [-f input_keyfile]
       ssh-keygen -y [-f input_keyfile]
       ssh-keygen -c [-P passphrase] [-C comment] [-f keyfile]
       ssh-keygen -l [-f input_keyfile]
       ssh-keygen -B [-f input_keyfile]
       ssh-keygen -D pkcs11
       ssh-keygen -F hostname [-f known_hosts_file] [-l]
       ssh-keygen -H [-f known_hosts_file]
       ssh-keygen -R hostname [-f known_hosts_file]
       ssh-keygen -r hostname [-f input_keyfile] [-g]
       ssh-keygen -G output_file [-v] [-b bits] [-M memory] [-S start_point]
       ssh-keygen -T output_file -f input_file [-v] [-a rounds] [-J num_lines]
                  [-j start_line] [-K checkpt] [-W generator]
       ssh-keygen -s ca_key -I certificate_identity [-h] [-n principals]
                  [-O option] [-V validity_interval] [-z serial_number] file ...
       ssh-keygen -L [-f input_keyfile]
       ssh-keygen -A
       ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number]
                  file ...
       ssh-keygen -Q -f krl_file file ...

아래와같이 진행이 됩니다. passphrase를 설정하게되면 암호가 설정되니 스킵하도록합니다.

https://i.imgur.com/QnYdS1d.png

그럼 ~/.ssh 폴더에 id_rsa - Private, id_rsa.pub - Public key가 생성된것을 볼 수 있습니다. 이제 이것을 server로 전송하여 authorized_keys에 public key를 등록해줍니다. 아래 명령어를 치면 자동으로 서버에 authorized_keys에 public key를 등록해줍니다.

Public key 전달 및 Authorized_key 에 Public key 등록

$ ssh-copy-id testuser@123.45.67.101

서버 접속

그리고 실제 서버로 접속을 해보면 비밀번호 입력없이 접속되는것을 확인할 수 있습니다

$ ssh testuser@123.45.67.101

위와같이 로그인하더라도 가끔씩 로그인이 제대로 안되는경우가 있습다. 이럴 때는 centos같은경우 vi /var/log/secure 에서 로그를 볼 수 있습니다.

많이 발생하는 에러로는 아래와같은 에러가 있습니다.

Authentication refused: bad ownership or modes for directory /home/deploy

이런문제는 폴더에 대해서 권한을 너무 많이 줘서 그렇습니다. 해당 폴더에 권한을 내려주면 됩니다.

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함