원격 접속 - 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에 있는지 여부를 확인하고 꼭 삭제해야 한다.