본문 바로가기
Base/Linux(CentOS)

13. remote access (2 - ssh / scp / sftp)

by 귀멸 2022. 6. 23.

다양한 remote access series 중에서 가장 중요한 녀석

 

0. ssh
 - secure shell; 보안된 shell(명령어 해독기)
 - 암호화 된 통신을 제공하는 protocol 
 - CLI 환경으로 사용
 - key 교환을 통해 암호화 key를 생성하고, 암호화 key를 이용하여 주고받는 데이터를 암호화/복호화
 - ssh는 version이 1,2가 있으며 현재는 version2를 사용
 - Linux는 기본적으로 ssh 접속 지원
   > ssh 패키지가 설치되어 있고 부팅 시 자동으로 동작되도록 설정 + 방화벽 예외 규칙에 ssh 추가되어 있음
 

 - 정보
패키지  : openssh-*
데몬 : sshd
방화벽 : port=22/tcp, service=ssh
설정파일 : /etc/ssh/sshd_config

 - 접속 명령
ssh <Linux IP> : 해당 컴퓨터에 존재하는 명령어를 입력한 사용자로 접속

ssh -l <계정명> <Linux IP> : 해당 컴퓨터에 지정된 계정으로 접속

ssh <계정명>@<Linux IP> : 해당 컴퓨터에 지정된 계정으로 접속

 - 추가 기능
sftp : ftp를 ssh로 보호
scp : rcp를 ssh로 보호

* rcp : remote copy, 장치와 장치간의 파일 복사

 

 - 설치 및 설정파일
rpm -qa | grep openssh : 패키지 설치 확인
firewall-cmd --list-all : 방화벽 확인
systemctl status sshd : 프로그램 동작 확인

vi /etc/ssh/sshd_config : 설정 파일 확인
                                     : set nu 줄번호 표시

17 Port 22 : 사용하는 포트번호 
(정보 보안 관점에서는 Port포워딩을 통해서 기본으로 사용하는 22번 port이외로 설정을 해놓음로서 보안성을 높인다)

19 #ListenAddress 0.0.0.0 : 0.0.0.0 = IPv4 all address (기본값)
20 #ListenAddress :: : ::      = IPv6 all address (기본값)
(특정 IP만 접속 가능하도록 설정하여 보안성을 높인다 - 대역 설정은 불가 / 여러개의 ip 옵션 사용은 가능)

22 HostKey /etc/ssh/ssh_host_rsa_key                : rsa / dsa 둘 중 하나를 사용
23 #HostKey /etc/ssh/ssh_host_dsa_key               암호화방식

24 HostKey /etc/ssh/ssh_host_ecdsa_key           : ecdsa / ed25519 함께 사용 가능
25 HostKey /etc/ssh/ssh_host_ed25519_key 

28 #RekeyLimit default none  : key 재생성 제한 (기본값)

30 # Logging
31 #SyslogFacility AUTH : 인증 (version1)
32 SyslogFacility AUTHPRIV : private 인증 (version2)

35 # Authentication: : 인증 관련 내용
36
37 #LoginGraceTime 2m : 로그인 할 때 접속 화면 유지
38 #PermitRootLogin yes : root로 바로 로그인 허용
39 #StrictModes yes : 암호없이 로그인을 하기위한 설정 중 하나
40 #MaxAuthTries 6 : 최대 인증 횟수 (비밀번호 오류 허용 횟수)
41 #MaxSessions 10 : 장치와 장치가 연결되는 하나의 회선이 session

43 #PubkeyAuthentication yes : 공개키 이용한 접속 허용

123 #Banner none : 처음 접속 시 출력되는 메세지 설정

설정파일 앞에 #은 주석처리된 내용
#뒤에 공백이 있고 내용이 적혀져 있으면 설명을 적어둔 것
#뒤에 공백이 없으면 실제 적용할 수 있는 설정들 

 


1. sftp 사용해보기 / remote access root 로그인 불가 설정
[root@server etc]# sftp itbank@192.168.10.128 : sftp 접속
sftp> put inittab : inittab 파일 업로드
sftp> quit
[root@server etc]# cd ~itbank
[root@server itbank]# ll : 파일 확인
합계 4
-rw-r--r-- 1 itbank itbank 511  6월 10 11:34 inittab

[root@server itbank]# vi /etc/ssh/sshd_config : 설정 파일 변경
38 #PermitRootLogin yes : # 지우고 no로 변경
[root@server itbank]# systemctl restart sshd

데몬프로세스가 설정파일을 쭉 읽어서 적용시킨 서비스를 동작 따라서 설정 파일을 바꾸면
데몬프로세스를 restart 해줘야 바뀐 설정을 적용한다

PuTTY에서 root 로그인이 불가능해진다
비밀번호가 맞아도 틀려도 Access denied로 출력한다

 

2. scp 사용 실습
가상머신 두 개 전부 PermitRootLogin 값은 no로 설정
server : 192.168.x.128, /tmp 속에 A라는 파일 생성
client : 192.168.x.129, /test 디렉토리 생성

scp 예문 두개 다 실행 해보기
(단, 하나 완료 후 반드시 /test/A 삭제 할 것)

scp 192.168.x.128:/tmp/A /test
scp /tmp/A 192.168.X.129:/test

참고
ssh 계정명@192.168.X.128    <<permitRootLogin 정책 설정으로 위의 scp 명령어 사용 x
왼쪽의 접속 명령어를 참고하여 위의 scp 명령어를 변경
puTTY를 두개 켜서 진행 root까지 접속
scp 예문 중 하나는 그냥 동작하지만 나머지는 오류 출력

실습 개시
Step1.  가상머신(server, client) 두 개 전부 PermitRootLogin 값은 no로 설정

root 로그인 후
vi /etc/ssh/sshd_config
:set nu
38 #PermitRootLogin yes     :  PermitRootLogin no로 변경 후 저장
systemctl restart sshd           :  demon 재실행하여 설정 적용
client도 동일하게 변경해 준다.


Step2.  server : 192.168.x.128, /tmp 속에 A라는 파일 생성
client : 192.168.x.129, /test 디렉토리 생성
Server :  touch /tmp/A
Client  : mkdir /test

Step3.  scp 예문 두개 다 실행 해보기
(단, 하나 완료 후 반드시 /test/A 삭제 할 것)
scp 192.168.x.128:/tmp/A /test    (가능) >> client
scp /tmp/A 192.168.X.129:/test    (Permission denied) >> server

scp itbank@192.168.10.128:/tmp/A /test             : server의 /tmp/A 파일을 client의 /test 폴더로 복사 이동
ll /test
rm -rf /test/A


scp /tmp/A itbank@192.168.10.129:/test >> server가 가진 /tmp/A를 client /test 폴더에 이동복사
(Permission denied)

client /test 폴더의 other영역에 권한 문제
chmod 757 /test로 권한 부여

[root@client test]# id itbank
uid=1000(itbank) gid=1000(itbank) groups=1000(itbank)
[root@client test]# ls -ld /test
drwxr-xrwx 2 root root 24  6월 13 09:43 /test

'Base > Linux(CentOS)' 카테고리의 다른 글

15. FTP  (0) 2022.06.26
14. remote access (3- VNC)  (0) 2022.06.25
12. remote access (1 - telnet) + CD 마운트 + firewall(방화벽)  (0) 2022.06.21
11. 데몬 프로세스 제어  (0) 2022.06.21
10. 리눅스 네트워크 관련 명령어  (0) 2022.06.21

댓글