티스토리 뷰
SSH key 를 통해 비밀번호 없이 원격 접속
SSH란 ?
SSH란 Secure Shell Protocol, 즉 네트워크 프로토콜 중 하나로 컴퓨터와 컴퓨터가 인터넷과 같은 Public Network를 통해 서로 통신을 할 때 보안적으로 안전하게 통신을 하기 위해 사용하는 프로토콜입니다. 주로 데이터 전송, 원격제어를 할때 사용합니다. 그림으로 보면 아래와 같습니다.
특히 개발을하다보면 운영서버에 로그인하거나 파일을 전송하거나 전송받을 때 많이 사용하게됩니다. 이프로토콜을 사용하기위해서는 방화벽 22번 포트가 열려있어야합니다. 그리고 맥같은경우 서버기준 아래와 같이 공유 설정에서 원격 로그인체크를 해줘야합니다.
클라이언트에서 서버로 접속하는 방법은 여러가지인데 대표적인 방법은 패스워드인증과 SSH key를 통한 접속방법입니다. SSH key 방식은 따로 패스워드 인증없이 원격제어가 가능합니다. SSH key 방식에 대해 좀더 상세히 확인해보겠습니다.
SSH KEY 접속 방법
먼저 SSH key 방법으로 클라이언트에서 서버로 접속하는 방법은 크게 아래와같습니다.
- SSH Keygen을 통해 Client쪽에서 Private key와 Public key를 생성해줍니다.
- Public key를 서버에 전달해줍니다.
- authorized_keys에 Client public key를 동록해줍니다.
- Client 에서 서버로 접속합니다
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를 설정하게되면 암호가 설정되니 스킵하도록합니다.
그럼 ~/.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
이런문제는 폴더에 대해서 권한을 너무 많이 줘서 그렇습니다. 해당 폴더에 권한을 내려주면 됩니다.
'Infra' 카테고리의 다른 글
Let's Encrypt를 통하여 Nginx에서 무료로 https 적용하기 (0) | 2020.06.27 |
---|---|
Mac 에서 Jenkins 설치하기 (0) | 2020.06.19 |
Jenkins 에 Github ssh 연동하기 (0) | 2019.11.16 |
Jenkins 설치방법 (0) | 2019.11.04 |
AWS EC2(Amazon Linux) Java 8 설치하기 (0) | 2019.11.02 |
- Total
- Today
- Yesterday
- jenkins #mac방화벽
- network
- JPA
- https
- kotlin
- Collection
- IntelliJ
- java
- #linux
- vue
- Infra
- OS
- tobi
- aws
- Chache
- OAuth
- eslint
- Spring
- Quasar
- Linux
- Gradle
- Github
- SSH
- Jenkins
- Angular
- HMAC
- batch
- javascript
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |