SSH(Secure Shell)는 네트워크 상에서 다른 컴퓨터에 안전하게 접근하고 명령을 실행할 수 있게 해주는 프로토콜입니다. 주로 리눅스 및 유닉스 시스템에서 사용되며, 안전한 원격 로그인을 위한 기본적인 방법으로 자리 잡고 있습니다. SSH는 데이터를 암호화하여 보안성을 높이며, 데이터 전송 과정에서 발생할 수 있는 도청이나 변조를 방지합니다.
그리고, SSH는 클라이언트 / 서버 모델을 따릅니다. SSH 클라이언트는 사용자 컴퓨터에서 실행되며, SSH 서버는 원격 컴퓨터에서 실행됩니다.
개발 환경
- VMware : 17 player version
- Ubuntu : 24.04 version
라즈베리 파이 SSH 서버 설정
먼저 라즈베리 파이에서 SSH 서버를 활성화해야 합니다.
SSH 서버 활성화
라즈베리 파이 터미널을 엽니다.
라즈베리 파이 설정 메뉴를 엽니다.
sudo raspi-config
Interface Options에서 SSH를 선택하여 활성화합니다.
설정을 완료한 후, 시스템을 재부팅합니다:
sudo reboot
SSH 서버 설치 방법
Step 1 : 시스템 저장소 업데이트
먼저 시스템 패키지를 최신 상태로 업데이트한다.
sudo apt update
sudo apt upgrade
Step 2 : SSH 서버 설치
SSH 서버 패키지인 openssh-server를 설치한다.
sudo apt install openssh-server -y
Step 3 : SSH 서버 활성화
SSH 서버를 설치했으면, SSH 서버가 활성화되어 있는지 확인한다.
sudo systemctl status ssh
비활성화(disable), 활성화(enable)
Step 4 : SSH 서버 시작
SSH 서버를 활성화 했으면 SSH 서비스를 시작한다.
sudo systemctl start ssh
Step 5 : SSH 서버 설치 확인
sudo systemctl status ssh
Step 6 : 방화벽 설정
방화벽을 활성화 하고, SSH 연결을 허용하도록 한다.
sudo ufw enable
sudo ufw allow ssh
Step 7 : 방화벽 상태 확인
방화벽이 실행 중.
SSH 서버로 트래픽을 전달하는지 상태(status). = Status : active
SSH 서비스의 디폴트 포트번호는 22번. = TO : 22/tcp
sudo ufw status
step 8 : SSH 서버 구성
SSH 서버 구성은 sshd_config 파일에 저장
vi 명령어를 사용하여 sshd_config 파일을 수정하여 새로운 SSH 서버 구성을 진행할 것이므로,
현재 버전 sshd_config 파일은 백업해 둔다.
sudo cp -v /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
step 9 : Port 변경(필수)
SSH 기본 포트는 22.
sshd_config 파일에서 주석 처리된 Port를 수정하여 원하는 포트번호로 수정 가능.(따로 방화벽 등록 필요)
cd /etc/ssh
vi sshd_config
step 10 : 방화벽 포트 번호 등록(외부 접속)(선택 사항)
만약 SSH 기본 포트 22에서 포트 454로 변경했다면, 방화벽 설정을 확인하여 포트 454가 열려 있는지 확인해야 합니다. 포트가 닫혀 있으면 외부에서 접속할 수 없습니다
sudo ufw allow 454/tcp
sudo ufw status
이제 Putty를 통해 외부에서 SSH로 서버에 접속할 수 있습니다.
step 11 : 비밀번호 인증 모드 변경
비밀번호 인증 모드를 더 안전한 모드로 변경하려면 주석 처리 되어 있는 PubkeyAuthentication : Yes값을 지정.
step 12 : Root 로그인 제한
Root의 외부 접속을 불가능하게 하려면 주석 처리 되어 있는 PermitRootLogin : no 값을 지정.
step 13 : 인증 시도 횟수 제한
최대 인증수를 설정시 주석 처리 되어 있는 MaxAuthTries 횟수를 지정.
step 14 : 새구성으로 SSH 서비스 재시작
sshd_config 파일을 수정했으면, SSH 서비스를 다시 재시작해야 한다.
sudo systemctl restart ssh
step 15 : SSH를 사용하여 서버에 연결하기
SSH 서비스가 시작했으면 local과 remote(원격)에서 접속하여 잘 동작하는지 확인한다.
step 16 : ubuntu 호스트에서 localhost로 접속
아래와 같이 ssh 명령어로 localhost 에서 ssh로 접속해본다.
ssh username@localshot
step 17 : Windows(client)에서 putty로 연결
내부 IP 주소 확인 (로컬 네트워크 IP), 예를 들어 xxx.xxx.xx.xxx
ip addr show
client에 대표 터미널 프로그램인 Putty를 설치하고 Ubuntu 머신 IP와 Port를 통해 SSH 접속.
Accept 선택하면 원력 접속
본인 계정으로 로그인하면 SSH 터미널 접속(Client계정 DBA가 추가 필요)
(만약 연결이 안된다면 재부팅)
sudo reboot
사용자 계정 추가하기(선택 사항)
사용자 이름은 각 팀원이 자신의 계정을 통해 SSH로 로그인할 때 사용할 이름
SSH 서버에서 새 사용자 계정을 추가
sudo adduser username
이 명령어를 입력하면 새 사용자에 대한 비밀번호를 설정하라는 메시지가 표시
비밀번호를 입력하고 확인하면 사용자가 생성
비밀번호 관리
비밀번호는 보안상의 이유로 각 팀원이 직접 설정하는 것이 좋습니다. 이를 위해 사용자를 추가한 후 비밀번호를 예를 들어 12345로 초기화하고, 각 팀원이 초기 비밀번호를 사용하여 로그인한 후, 자신의 비밀번호를 변경하도록 안내합니다.
sudo passwd username
위 명령어로 각 팀원의 비밀번호를 설정할 수 있습니다.
/etc/passwd 파일 확인하기
사용자 계정 정보는 /etc/passwd 파일에 저장
cat /etc/passwd
사용자 목록만 보기
각 사용자 계정의 이름만 보려면 cut 명령어를 사용
cut -d: -f1 /etc/passwd
getent 명령어 사용하기
이 명령어도 /etc/passwd 파일의 내용을 보여주며, 같은 형식으로 사용자 정보를 출력
getent passwd
'IT개발 > 통신' 카테고리의 다른 글
[React] JavaScript와 Express의 웹 서버 구축 및 get, post방식의 통신(VScode) (1) | 2024.09.27 |
---|