SSH

2023. 10. 9. 10:56리눅스/CentOS

원격 접속 - SSH

 - secure shell; 보안된 shell

 - 암호화 된 통신을 주고 받는 CLI 환경의 원격 접속

 - Linux에서 기본적으로 제공
> 운영체제 설치 시 자동으로 ssh 구성 요소 설치
  + 부팅 시 자동 실행 및 방화벽 설정까지 전부 완료된 상태

 - 통신하려는 장치들이 개인 key 혹은 공개 key 교환을 통하여 암호화 key를 생성
   암호화 key를 이용하여 주고받는 데이터를 전부 암호화/복호화

 - version 1과 version 2가 존재하며 현재는 version 2를 사용

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

 - 접속 명령어
ssh   <접속할 IP> : 명령어를 입력한 사용자와 같은 이름의 사용자로 해당 장치에 접속 시도

ssh   -l   <계정명>   <접속할 IP> : 해당 장치에 옵션에 입력한 사용자로 접속 시도

ssh   <계정명>@<접속할 IP> : 해당 장치에 옵션에 입력한 사용자로 접속 시도

 - 부가 서비스
  1. sftp
ssh + ftp ; 평문 통신으로 데이터를 주고받는 ftp를 ssh를 사용하여 암호화

sftp   <계정명>@<접속할 IP>

  2. scp
ssh + rcp ; 평문 통신으로 데이터를 주고받는 rcp를 ssh를 사용하여 암호화

  * rcp : remote copy; 장치와 장치 간의 파일 복사 명령어
rcp   [장치IP]:원본   [장치IP]:복사할위치
 > 내 장치의 파일을 상대방 장치에 복사해 주거나 상대방 장치의 파일을 내 장치에 복사

 

패키지 확인 및 서비스 상태 확인

기본적으로 ssh가 설치 되어 있음

 

 

데몬프로세스도 자동 실행

 

 

설정파일 /etc/ssh/sshd_config 확인

#은 주석처리

 

 

포트번호 바꿀 시 주석 풀고 수정

 

 

0.0.0.0은 ipv4's all ip / ::은ipv6's all ip [기본 보안설정]

 

 

main key[호환 문제로 rsa 많이 사용_동시에 사용 불가능]

 

 

보조 key

 

 

암호표를 주기적으로 바꿔준다

 

 

log 설정

 

 

PermitRootLogin은 root 접속에 관한 설정

  • 기본적으로 LoginGraceTime은 120초(2분)로 설정되어 있으며, 이 기간 동안에 로그인 프로세스를 완료하지 못한 사용자의 접속 시도는 거부된다.
  • StrictModes yes: 사용자의 홈 디렉토리와 .ssh 디렉토리에 대한 권한을 검사한다. 이 디렉토리들은 사용자의 개인 키와 공개 키를 저장하고, 권한 설정이 제대로 되지 않았다면 보안 문제를 발생시킬 수 있다. StrictModes를 활성화하면 이러한 디렉토리의 권한이 제대로 설정되었는지 확인하고, 제대로 설정되지 않았다면 접속을 거부한다. 또한 사용자의 ~/.ssh 디렉토리 안에 있는 authorized_keys 파일에 대한 권한을 검사한다. 이 파일은 사용자가 공개 키 인증을 통해 접속할 때 사용되며, 이 파일의 권한 설정이 제대로 되지 않았다면 보안 문제를 발생시킬 수 있다. StrictModes를 활성화하면 이러한 파일의 권한이 제대로 설정되었는지 확인하고, 제대로 설정되지 않았다면 접속을 거부한다.

 

 

공개키 이용한 인증을 허용

PubkeyAuthentication 옵션은 SSH 서버가 공개 키 인증을 허용할지 여부를 설정하는 데 사용된다. SSH 공개 키 인증은 비밀번호를 사용하는 대신 공개 키와 개인 키 쌍을 사용하여 사용자를 인증하는 방법 중 하나다. 이를 통해 더 안전하고 효율적인 로그인 방법을 제공할 수 있다. 공개 키 인증은 비밀번호 인증보다 안전하며, 비밀번호 노출 또는 강력한 비밀번호를 기억하는 부담을 줄일 수 있다. 그러나 공개 키를 사용하기 위해 사용자가 공개 키를 생성하고 서버에 등록해야 하므로 초기 설정에는 조금 더 번거로울 수 있다.

 

 

PermitEmptyPasswords 옵션은 SSH 서버에서 비밀번호를 빈 문자열(빈 비밀번호)로 설정한 사용자의 로그인을 허용할지 여부를 설정하는 데 사용

 

 

로그인 시 띄우는 메시지 설정[파일 경로를 적음]

 

 

man sshd_config 확인

설정 파일의 설명

 

 

찾기 n 해서 디폴트값 확인

 

 

찾기 loglevel 통해서 확인 / 우측으로 갈수록 세세한 로그 설정

 

 

ssh 실습

RootLogin 설정을 no로 바꿔보자

 

 

데몬 설정 바뀔 시 꼭 적용

 

 

적용 후 root 로그인 안됨[비번 틀렸는지 모름]

 

 

ssh 접속 명령어

 

 

옵션 -l 사용

 

 

다른 로그인 방법

 

 

cmd도 가능

 

 

sftp 실습

sftp 사용

 

 

공개키 이용한 인증

windows10에서 rsa 키를 만들어보자

 

 

확인

 

 

id_rsa.pub를 ftp를 이용해서 전송 후 authorized_keys로 이름 변경

리눅스끼리라면 명령어 'ssh-copy-id   <계정명>@<ip 주소>'을 통해 쉽게 전송 할 수 있다.

 

 

권한은 0600으로 바꾸자

 

 

windows10에서 암호 없이 SSH 접속 성공!

 

 

암호 없이 바로 파일 전송 가능

 

 

리눅스에서 확인

 

 

문제

가상머신 두 개 전부 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

 


* 참고 *

PermitRootLogin 정책 설정으로 인해 위의 scp 명령어 사용 X

ssh 계정명@192.168.X.128를 참고하여
위의 scp 명령어를 변경

putty를 두 개 켜서 진행(server 하나, client 하나)하되
root까지 접속하여 실습 진행

scp 예문 중 하나는 그냥 동작하지만 나머지는 오류 출력
(Linux 1 수업에서 배운 내용으로 해결이 가능)

 

 

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

 

client에서는 바로 성공!

 

 

/test 허가권 변경

 

 

server에서도 성공!

'리눅스 > CentOS' 카테고리의 다른 글

FTP  (0) 2023.10.10
VNC  (0) 2023.10.09
Telnet  (0) 2023.10.08
다른 사용자 권한 획득 명령어  (0) 2023.10.08
방화벽  (0) 2023.10.08