[Linux] SSH (Secure Shell)Linux2022. 3. 7. 19:12
Table of Contents
728x90
✔️ SSH란 ?
- SSH란 Secure Shell Protocol의 약자로 네트워크 프로토콜 중 하나이다.
- 기존에 사용하던 프로토콜인 telnet의 치명적인 단점은 telnet client를 통해 서버를 조작할 때 주고 받는 데이터가 암호화 되지 않는다는 점이었고, 이는 악의적인 해커(크래커)들이 통신중인 패킷을 가로채는 패킷 스니핑의 대상이 되기에 충분한 조건이 된다.
- 컴퓨터와 컴퓨터가 인터넷과 같은 Public Network를 통해 서로 통신을 할 때 보안적으로 안전하게 통신하기위해 사용하는 프로토콜이다.
✔️ SSH 서버 기본설정
ssh가 설치되어 있는 서버에서 설정과 관련된 파일은 /etc/ssh/sshd_config가 있다.
설치되어 있는 ssh의 기본적인 설명 포트번호와 함께 명령어의 PATH 경로가 나타나 있고 RSA, DSA 등 암호화 방식에 관한 설명과 log 기록 방법 등을 설정할 수 있다.
sshd_config 파일의 주요 항목은 다음과 같다.
Port 22 | ssh 서버에서 사용하는 포트 지정 |
AddressFamily any | 접속하는 IP주소의 버전을 지정한다. any는 IPv4, IPv6 모두 접속이 가능하다. |
ListenAddress 0.0.0.0 ListenAddress :: |
= sshd 데몬이 허가하는 주소를 설정하는 영역이다. 여러 네트워크대역이 있을 때 IP대역과 포트를 지정할 수 있다. 0.0.0.0은 IPv4 버전을 지정하고, IPv6은 콜론(::)을 사용한다. default 값은 주석이 처리되어 있어 정책이 동작하지 않는다. 주석을 해제하고 특정 ip를 지정하면 해당 ip에서만 접속을 허용한다. |
Protocol 2 | ssh 프로토콜의 버전을 지정한다. |
HostKey /etc/ssh/ssh_host_key #Hostkey /etc/ssh/ssh_host_das_key HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key |
ssh 접속 시 필요한 암호화 키가 저장되는 위치 기본 default 설정은 ECDSA_KEY 암호화 방식을 사용한다. |
RSAAuthentication yes | = RSA 인증의 사용여부 |
PubkeyAuthentication yes | = 공개키를 통한 인증의 사용여부 |
AuthorizedKeysFile .ssh/authorized_keys | = 클라이언트에서 생성한 공개 키를 저장할 파일명 지정 |
PasswordAuthentication yes | = 패스워드를 이용한 인증을 허용한다. |
PidFile /var/run/sshd.pid |
= ssh 데몬의 PID를 기록하는 파일 |
ssh 서비스에서 사용하는 공개키 확인
cat /etc/ssh/ssh_host_ecdsa_key.pub
✔️ SSH 명령어
명령어 | 내용 |
yum -y install oepnssh-server | 패키지 설치 |
rmp -qa | grep openssh-server | 패키지 설치 확인 |
systemctl enable sshd | ssh 서비스 자동 등록 |
systemctl start sshd | ssh 서비스 시작 |
systemctl status sshd | ssh 서비스 상태 확인 |
systemctl restart sshd | ssh 서비스 재시작 |
netstat -ntlp | grep sshd | ssh 서비스 포트(=tcp 22번 포트) 동작 확인 |
firewall-cmd --permanent -zone=public --add-port=22/tcp | ssh 포트 방화벽 설정에 추가 (기본적으로 TCP 22 포트 사용) |
vi /etc/ssh/sshd_config | ssh 서버 설정 |
# 사용자의 ip 서버에 접속
ssh [사용자이름]@[ip 주소]
# 사용자의 서버의 5001 포트 접속
ssh -p 5001 [사용자]@[ip 주소]
# 사용자의 ip 서버에 5001번 포트 접속
# 이때 -t는 pseudo 터미널을 사용하는데 변화를 확인할 수는 없다.
ssh -t -p 5002 [사용자]@[ip 주소]
✔️ SSH 명령어 실습
서버 설정 (클라이언트도 ip 주소만 다르고 동일하게 설정)
[root@localhost ~]# hostnamectl set-hostname server.encore.class4
[root@localhost ~]# nmcli con add con-name static9 ifname enp0s9 type ethernet ip4 192.168.56.150/24 gw4 192.168.56.1
연결 'static9' (b0b7a09e-d4bb-4983-828d-9adfcb791be6)이 성공적으로 추가되었습니다.
[root@localhost ~]# nmcli con up static9
연결이 성공적으로 활성화되었습니다 (D-Bus 활성 경로: /org/freedesktop/NetworkManager/ActiveConnection/6)
[root@localhost ~]# ip addr show enp0s9
4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:5a:7c:2b brd ff:ff:ff:ff:ff:ff
inet 192.168.56.150/24 brd 192.168.56.255 scope global noprefixroute enp0s9
valid_lft forever preferred_lft forever
inet6 fe80::97bf:6ae1:a80a:19da/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@localhost ~]# exit
logout
Connection to 192.168.56.103 closed.
PS C:\Users\Shinsohui> ssh root@192.168.56.103
root@192.168.56.103's password:
Last login: Mon Mar 7 12:10:52 2022 from 192.168.56.1
클라이언트와 서버 연결 정상 작동
# 클라이언트
[root@client ~]# ssh root@192.168.56.150
The authenticity of host '192.168.56.150 (192.168.56.150)' can't be established.
ECDSA key fingerprint is SHA256:TJmLwqte8Qq9Y8fvZ/e0Lg5Y2S5Dq/I1OWMJQuReVH4.
ECDSA key fingerprint is MD5:35:a9:88:cd:28:8e:24:ca:19:3b:ff:4f:6f:66:c9:a6.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.56.150' (ECDSA) to the list of known hosts.
root@192.168.56.150's password:
Last login: Mon Mar 7 12:24:11 2022 from gateway
# 서버
[root@server ~]# exit
logout
Connection to 192.168.56.150 closed.
[root@client ~]# ls -a
. .bash_profile .dbus anaconda-ks.cfg 바탕화면
.. .bashrc .esd_auth initial-setup-ks.cfg 비디오
.ICEauthority .cache .local 공개 사진
.bash_history .config .ssh 다운로드 서식
.bash_logout .cshrc .tcshrc 문서 음악
# 새롭게 .ssh 파일이 생성된 것을 확인할 수 있다.
# 클라이언트
[root@client ~]# ls .ssh/
known_hosts
[root@client ~]# ls -l .ssh/
합계 4
-rw-r--r--. 1 root root 176 3월 7 12:37 known_hosts
[root@client ~]# less .ssh/known_hosts
# 서버
[root@server ~]# less /etc/ssh/ssh_host_ecdsa_key.pub
client, server의 ssh_host_ecdsa_key.pub 파일을 열어 확인해보면 공개키가 일치하는 것을 확인할 수 있다.
여기서 ssh 파일을 삭제했다가 다시 생성을 하면 공개키가 일치하지 않으므로 ssh 접속이 불가해진다.
PermitRootLogin
비활성화 or yes - root 로그인 허가
no - root로의 로그인을 허가하지 않음
without-password - 키기반인증만 로그인을 허가
서버의 공개키와 개인키 삭제 후 sshd 재실행
[root@server ~]# rm -f /etc/ssh/ssh_host*
[root@server ~]# ls /etc/ssh
moduli ssh_config sshd_config
[root@server ~]# systemctl restart sshd
[root@server ~]# ls /etc/ssh
moduli ssh_host_ecdsa_key.pub ssh_host_rsa_key
ssh_config ssh_host_ed25519_key ssh_host_rsa_key.pub
ssh_host_ecdsa_key ssh_host_ed25519_key.pub sshd_config
더 이상 일치하지 않음
[root@client ~]# ssh suser@192.168.56.150
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:0AonDgUGe5eWbWO9i6kbY7MMHV4hbcS9vrSkoPfEPSo.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /root/.ssh/known_hosts:1
ECDSA host key for 192.168.56.150 has changed and you have requested strict checking.
Host key verification failed.
접속이 허용되지 않음
# 클라이언트가 서버의 공개키를 다시 받기 위한 작업
[root@client ~]# rm ~/.ssh/known_hosts
rm: remove 일반 파일 `/root/.ssh/known_hosts'? y
[root@client ~]# ssh suser@192.168.56.150
The authenticity of host '192.168.56.150 (192.168.56.150)' can't be established.
ECDSA key fingerprint is SHA256:0AonDgUGe5eWbWO9i6kbY7MMHV4hbcS9vrSkoPfEPSo.
ECDSA key fingerprint is MD5:b8:f8:0e:30:9a:fd:92:9b:92:d4:d5:c8:2c:35:cc:f6.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.56.150' (ECDSA) to the list of known hosts.
suser@192.168.56.150's password:
Last failed login: Mon Mar 7 15:27:53 KST 2022 from 192.168.56.101 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Mon Mar 7 15:19:02 2022 from 192.168.56.101
cuser가 suser의 암호없이 로그인 되도록 키 인증방식으로 설정하는 방법
🔗 참고
728x90
'Linux' 카테고리의 다른 글
[Linux] DNS 동작 (0) | 2022.03.10 |
---|---|
[Linux] 방화벽 (firewall) (0) | 2022.03.07 |
[Linux] 네트워크 관리 - NetworkManager (0) | 2022.03.04 |
[Linux] 패키지 관리 도구 (RPM & YUM) (0) | 2022.03.04 |
[Linux] root 비번 초기화 방법 (0) | 2022.03.04 |
@TTOII :: 뭉게뭉게 클라우드
영차영차 성장 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!