리눅스 SSH 정의 및 기본 설치
✅ 리눅스 SSH 정의
SSH(Secure Shell)란 원격 호스트 컴퓨터로 접속하기 위해 사용되는 인터넷 프로토콜입니다. 뜻에서 알 수 있듯이 보안 쉘이란 걸 알 수 있습니다. 기존 유닉스 시스템의 텔넷은 암호화가 이루어지지 않아 계정 정보가 해킹에 노출되는 위협이 있었으며, 1995년 암호화 기능을 추가해서 나온 프로토콜입니다.
리눅스 SSH는 암호화 기법을 사용하며, 쉘로 원격 접속 후 리눅스 커멘드 라인에서 작업을 하게 되며, 기본 포트 번호는 22번입니다.
✅ 리눅스 SSH 설치하기
ssh 프로토콜은 대부분의 리눅스에서 설치가 되어 있습니다.Minimal과 같은 버전으로 리눅스가 설치되어 OpenSSH가 없는 경우 순차적으로 설치 진행 및 테스트를 할 수 있습니다.
1. 설치 확인
[rpm -qa | grep ssh] 또는 [dnf list installed | grep ssh]를 입력해서 설치 여부를 확인합니다.(CentOS는 dnf 대신 yum을 입력합니다.)
~]# dnf list installed | grep ssh
libssh.x86_64 0.9.6-3.el9 @anaconda
libssh-config.noarch 0.9.6-3.el9 @anaconda
openssh.x86_64 8.7p1-24.el9_1 @anaconda
openssh-clients.x86_64 8.7p1-24.el9_1 @anaconda
openssh-server.x86_64 8.7p1-24.el9_1 @anaconda
2. 설치하기
설치되어 있지 않은 경우 yum 또는 dnf 명령어를 이용해서 설치를 진행합니다.
dnf -y install openssh-server
#서비스 시작
systemctl start sshd
#서비스 중지
systemctl stop sshd
#재부팅 시 자동 실행
systemctl enable sshd
#재부팅 시 자동실행 취소
systemctl disable sshd
#서비스 상태 확인
~]# systemctl status sshd
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2024-01-02 11:06:31 UTC; 4 days ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 1088 (sshd)
Tasks: 1 (limit: 4359)
Memory: 6.0M
CPU: 2min 35.837s
CGroup: /system.slice/sshd.service
└─1088 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"
Jan 07 08:42:43 instance-20231231-2010 sshd[136290]: Connection closed by invalid user confluence 159.89.179.126 port 48068 [preauth]
Jan 07 08:43:46 instance-20231231-2010 sshd[136307]: Connection closed by 167.94.146.55 port 58556 [preauth]
Jan 07 08:44:19 instance-20231231-2010 sshd[136311]: Invalid user db2as from 170.64.194.242 port 54314
### 생략 ###
3. 포트 및 특정 IP에서만 접속 설정
설정은 /etc/ssh/sshd_config에서 할 수 있습니다. 기본 설정 값을 확인할 수 있으며,
포트 번호 변경이 필요할 경우 21번 째 라인의 #을 푼 다음에 원하는 포트 번호로 변경해 줍니다. 23번 째 라인에서 특정 IP에서만 접속 되게끔 설정할 수 있습니다.
~]# vi /etc/ssh/sshd_config
18 # SELinux about this change.
19 # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
20 #
21 Port 22 << 원하는 포트 번호로 변경
22 #AddressFamily any
23 ListenAddress 0.0.0.0 << 특정 IP로 접속 설정
24 #ListenAddress ::
25
26 #HostKey /etc/ssh/ssh_host_rsa_key
27 #HostKey /etc/ssh/ssh_host_ecdsa_key
28 #HostKey /etc/ssh/ssh_host_ed25519_key
29
30 # Ciphers and keying
31 #RekeyLimit default none
32
33 # Logging
34 #SyslogFacility AUTH
35 #LogLevel INFO
36
37 # Authentication:
38
39 #LoginGraceTime 2m
40 PermitRootLogin prohibit-password
▲ root 계정의 접속 거부로 변경 PermitRootLogin yes로 설정되어 있는 경우 PermitRootLogin no 로 변경해서 접속을 차단할 수 있습니다. 참고로 이 설정은 오라클 rocky Linux 설정으로 되어 있어 키파일로 접속되게 설정이 되어 있는 상태이기 때문에 prohibit-password로 되어 있는 것입니다.
마지막으로 추가로 리눅스 iptables 방화벽이나 Firewalld 방화벽에서 관련 포트를 열어 준 후에 netstat 명령어로 정상적으로 접속이 가능한지 확인합니다. 리눅스 SSH 기본 개념과 설치와 기본 설정 방법에 대해 알아 봤습니다.