[Bash] ssh 비밀번호 없이 접근하기
2023. 10. 27. 16:12ㆍDevelopers 공간 [Shorts]/Software Basic
728x90
반응형
<분류>
A. 수단
- OS/Platform/Tool : Linux, Kubernetes(k8s), Docker, AWS
- Package Manager : node.js, yarn, brew,
- Compiler/Transpillar : React, Nvcc, gcc/g++, Babel, Flutter
- Module Bundler : React, Webpack, Parcel
B. 언어
- C/C++, python, Javacsript, Typescript, Go-Lang, CUDA, Dart, HTML/CSS
C. 라이브러리 및 프레임워크 및 SDK
- OpenCV, OpenCL, FastAPI, PyTorch, Tensorflow, Nsight
1. What? (현상)
ssh를 활용해 서버에 접근하는 경우 미리 공개키를 만들어 비밀번호 없이 접근하는 방법을 알고 싶습니다.
2. Why? (원인)
- ssh에서는 암호 대신 key를 활용해 접근할 수 있는데 이는 공개키 방식으로, private key와 public key 한 쌍으로 구성됩니다. 즉, client가 private key를 가지고 암호화(encrypt)를 하면, server가 public key를 가지고 복호화(decrypt)를 합니다.
- 연결 순서는 아래와 같으며 그림은 위를 참조합니다.
- Client → Server : SSH connection을 요청시작합니다.
- Server → Client : 랜덤으로 메시지를 보냅니다.
- Client → Server : private key를 사용하여 메시지를 암호화합니다
- Server : public key를 사용해 메시지를 복호화합니다.
- Server → Client : 메시지가 일치하면 client의 접근을 허용합니다.
3. How? (해결책)
Client에서 Server로 접근할 때, 각각의 PC에서 해야할 방법에 대해 설명하겠습니다.
** Server는 123.456.789.011 이며 port는 8888이라고 가정하겠습니다.
1. 먼저 Client에 있는 known_hosts의 목록에서 제거 해줍니다.
ssh-keygen -R 123.456.789.011
# 포트가 있는 경우
ssh-keygen -R [123.456.789.011].8888
아래 위치에 있는 파일을 보면, 내용에 사라진 것을 확인할 수 있습니다.
~/.ssh/known_hosts
2. Client에서 키를 생성해 줍니다.
ssh-keygen -t rsa
아래 두가지가 생깁니다. id_rsa는 개인키이고 id_rsa.pub은 공개키이다.
~/.ssh/id_rsa.pub
~/.ssh/id_rsa
다음으로 원하는 위치에 공개키만을 복사해줍니다. (앞서 설명드렸다시피, 서버는 공개키만이 필요합니다.)
scp -r -P 8888 id_rsa.pub user@123.456.789.011:/home/user2/.ssh/id_rsa2.pub
3. Server에서 PasswordAuthentication 옵션을 꺼줍니다.
** sshd는 ssh접속(inbound)을 대기하기 위해 돌고 있는 Daemon Process입니다. ssh에 대한 설정은 아래와 달리 /etc/ssh/ssh_config에서 확인할 수 있습니다.
# Check Tutorial
man sshd_config
sudo vim /etc/ssh/sshd_config
PasswordAuthentication no
sudo service sshd restart
sudo systemctl status ssh
4. Server에서 해당 key를 authorized_keys에 추가해줍니다.
# authorized_keys가 이미 존재하는 경우
cat /home/user2/.ssh/id_rsa2.pub >> ~/.ssh/authorized_keys
# authorized_keys가 없는 경우
cp /home/user2/.ssh/id_rsa2.pub ~/.ssh/authorized_keys
이제 비밀번호 없이 접근이 가능합니다.
728x90
반응형
'Developers 공간 [Shorts] > Software Basic' 카테고리의 다른 글
[Bash] Background로 프로그램 돌리기 (0) | 2023.11.01 |
---|---|
[Bash] 서버에서 자료 가져오기 (port, 방화벽) (0) | 2023.10.27 |
[Bash] Windows에서 작성된 파일 개행 문자 문제 해결 (0) | 2023.10.20 |
[Python] RPA 기초 템플릿 (0) | 2023.10.13 |
[Vim] Vim사용시 Clipboard 정리 (0) | 2023.10.13 |