Linux/CentOS

SSH 접속

Glory-L 2022. 8. 27. 14:29
원격 접속 - ssh

 

- secure shell; 암호화 된 통신을 제공하는 protocol
- CLI 환경에서 사용
- key 교환을 통해 암호화 key를 생성하고, 암호화 key를 이용하여 주고 받는 데이터를 암호화/복호화
- version 1, 2가 있으며 현재는 version 2를 사용
 
rpm -qa 명령어로 기본적으로 설치된 ssh 데몬 확인
 
 
- Linux는 기본적으로 ssh 접속 지원
> 설치 시 ssh 기본적으로 설치 + 부팅 시 데몬 프로세스 자동으로 동작 + 방화벽 예외 규칙 지정 되어 있음

보통의 데몬들과 다르게 기본적으로 실행되고 있는 상태

방화벽 예외 리스트에 ssh 확인
 

 

 
  • 정보
패키지        : openssh-*
데몬        : sshd(.service 생략)
방화벽     : port=22/tcp, service=ssh
설정 파일     : /etc/ssh/sshd_config
 
  • 접속 명령어 형식
ssh <목적지 IP> :
 
ssh 접속 시도

ssh 하고 ip만 적어주면 현재 접속한 계정과 같은 계정으로 접속을 시도한다.

 
이렇게 접속하면 조금 문제가 생김
-> 현재 접속 되어 있는 계정 그대로 로그인 하게 됨 , permitrootlogin 설정 영향을 받음 root@192.168.10.128's password:
 
-> 접속 명령어를 입력한 사용자와 동일한 이름을 갖고 있는 상대방 장치의 사용자로 접속
 
ssh -l 사용자명 <목적지 IP> : 상대방 장치의 해당 사용자로 접속
 
 

 

ssh 사용자명@<목적지IP> : 상대방 장치의 해당 사용자로 접속
 
 
 
openssh의 설정파일 = /etc/ssh/sshd_config 
 
 
- 설정 파일 기본 설명
 
# 뒤에 공백이 들어가는 것들은 설명들
 
#뒤에 공백이 없는 것들은 모두 설정에 관련한 것들
 
#뒤에 바로 설정이 오는 것들은 기본 값임 설정을 바꿔도 원래 상태 그대로 적용됨
 
-> 파일의 설정이 기본 값인지 변경 가능한 값인지 vi로는 알 수가 없음 -> man sshd_config로 확인
 
-> 전세계적으로 22번 포트가 ssh포트로 쓰이고 있다.
 
포트 번호를 바꾸고 싶으면 주석 풀고 Port 부분 변경해주면 된다.
 
 
ListenAddress : 나에게 접근 가능한 주소를 나타내준다. (접근 가능한 주소를 제한하는 역할) ->  보안 상 안전하다.
 
ListenAddress 안에 있는 두 개의 값
 
0.0.0.0 : ipv4에서 사용하는 모든 ip 주소를 표현한다.
 
: :  -> ipv6에서 사용하는 모든 ip 주소를 표현한다.
 
키는 RSA와 DSA 키가 있는데 주로 RSA를 사용한다.
 
 
 
 
※ HostKey
 
 
# LoginGraceTime : 연결을 한 후에 로그인 안 하면 언제 꺼질지 시간 정해주는 설정
 
#PermitRootLogin : no 라고 적으면 root로 로그인 안됨
 
 
 
설정 변경 후 저장하고 나감
 

※ 항상 설정 파일을 변경 했다면 systemctl restart (데몬명)으로 재실행을 해주어야 적용이 가능하다. 

올바른 비밀번호를 입력해도 막히는 모습

 

일반 사용자로 로그인 하고 su - 명령어로 접속 가능

※ tip

 

vi에서 : 뒤에 줄 번호 입력하면 바로 이동
 
 
38번 줄 앞에 주석 제거 후 PermitRootLogin no로 변경

 

저장 후 나감
 
-> root로 로그인 바로 하려고 하면 로그인 안되고 일반 사용자에서 su- 명령으로 우회 접속 해야 접속 가능, 관리자 계정 보안을 위해 하는 설정
 

 

#StrictModes : 암호 없는 접속 하려고 할 때 설정해줄 수 있는 것들 중의 하나
 
#MaxAuthTries : 최대 인증 시도 횟수( 비밀번호 틀렸을 때 최대 시도 횟수)
 
#MaxSession : 연결된 회선 최대 수
 
#PubkeyAuthentication : 공개키 사용 여부(보안 문제로 가급적 사용 안 하는 것이 좋다.)
 
 
 
 
 
------------------------------심화 설정 부분-----------------------------
 
101 X11Forwarding yes  : 기본적으로 SSH는 CLI 환경에서 사용되지만 가끔 GUI 환경으로도 설정하는 경우가 있는데 그때 관련 설정으로 X11을 기억하면 됨
 
 
#PidFile /var/run/sshd.pid : pid 파일이 어디에 저장되는지 확인
 
 
123 #Banner none : 처음에 접근할 때 띄워주는 메세지를 Banner라고 하고 이 설정을 사용해서 이 서버와 관련 없는 유저는 접근 하지 말라고 띄워주는 설정
 
 
132 Subsystem       sftp    /usr/libexec/openssh/sftp-server :

 

 
ftp에 secure 해줘서 암호화 시켜서 파일 전송 할 수 있게 하는 sftp 관련 설정
 

 

 

 
 
 
  • 부가 서비스
 
sftp    : ssh + ftp
 -> ftp로 주고받는 데이터를 암호화
 
ssh config 설정 중 PermitRootLogin no 때문에 접속 x
원래 계정으로 로그인
 
/etc/inittab 파일을 glory 사용자에게 전송
 
전송된 모습
 
scp    :  ssh + rcp

 

 - > rcp 명령어로 주고 받는 데이터를 암호화
 

- rcp :장치와 장치 간의 파일 복사

 

 

 

(연습)

 

가상 머신 두 개 전부 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 (spacebar) /test        >> client쪽에서 요청

scp /tmp/A (spacebar) 192.168.x.129:/test        >> server쪽에서 요청

 

*참고사항*

ssh 계정명@192.168.x.128                    <<   PermitRootLogin 정책 설정으로 인해 위의 scp 명령어 사용 x

                                                                        왼쪽의 접속 명령어를 참고하여 위의 scp 명령어를 변경 

 

putty 두 개로 진행 해보기(server , client) - root까지 접속하여 진행

 

* 확인 사항 : scp 명령어들, 오류 해결 내용 

 

-> server 머신 /tmp/A 파일 생성, client /test/ 디렉터리 생성

 

 

1. client 머신

 

 

2. server 머신

 

권한 문제로 허가 거부가 났다.

-> other 권한에 w 권한이 없기 때문에 ftp 전송이 안됨 

 

757 권한 부여
전송완료

※ 혹시 권한을 잘 부여했는데도 permission denied 오류가 발생한다면 기존의 A 파일이 /test/client에 있는지 여부를 확인하고 꼭 삭제해야 한다.