1. 원격 접속 비교
    1. Telnet :서버와 클라이언트 사이에 오가는 자료가 암호화 되지 않음으로 사용 안함
    2. ssh : 자료를 암호화해서 전송
  2. ssh 서버 설치 : /etc/ssh 폴더에 설치됨
    1. 우분투 리눅스에는 ssh 원격 접속을 위한 서버가 기본적으로 설치되어 있지 않음
    2. sudo apt-get update
    3. sudo apt-get install ssh
      1. 또는 sudo apt-get install openssh-server
  3. ssh 실행
    1. 설치후 처음 접속할 때는 ssh를 실행시켜줘야 한다.
    2. 그 이후로는 리눅스 실행시 자동으로 실행된다.
    3. /etc/init.d/ssh restart
  4. 실행여부 확인
    1. netstat -a | grep ssh : network statistics의 약자

      1. Proto : 프로토콜의 종류
      2. Recv-Q : 수신 소켓 버퍼에 존재하는 바이트 수
      3. Send-Q : 송신 소켓 버퍼에 존재하는 바이트 수
      4. Local Address : 로컬쪽 주소
      5. Foreign Address : 상대방쪽 주소
      6. State : 상태
      7. PID : Process ID
      8. Program name
      9. 상태의 종류
        1. LISTEN : 연결이 가능하도록 관련 서비스(daemon)가 떠있으며 연결이 가능한 대기 상태
        2. SYN-SENT : 연결을 요청한 상태
        3. SYN-RECEIVED : 연결 요구에 대한 응답을 준 후 확인 메시지를 기다리고 있는 상태
        4. ESTABLISHED : 위의 3단계 과정이 종료된 후 연결이 완료된 상태
        5. FIN-WAIT, FIN2-WAIT, CLOSE-WAIT : 연결 종료를 위해 요청을 받은 후의 과정
        6. CLOSING : 전송된 메시지가 유실된 상태
        7. TIME-WAIT : 연결 종료 후 한동안 유지되고 있는 상태
        8. CLOSED : 연결이 완전히 종료된 상태
    2. ps -aux | grep ssh
    3. ps -ef | grep ssh
  5. 런레벨 편집기를 이용해서 런레벨에 따른 등록
    1. sysv-rc-conf : 우분투 18.04 LTS에서는 사라짐
  6. sshd의 설정 파일 수정
    1. cat /etc/ssh/sshd_config
    2. # : 주석임, 그 줄은 처리되지 않음
    3. Port와 리눅스 서버에 IP가 여러개 있을 때 Listen할 IP지정

      1. Port : 사용 포트 지정
      2. 현재는 모든 IP로 연결
      3. 192.168.56.1로 연결하려면
    4. Log 기록 방식

      1. SyslogFacility :
        1. AUTH : 사용자 인증에 관련 메시지
        2. AUTHPRIV : 인증 절차에 관련 메시지
      2. LogLevel : 로그 레벨 지정
    5. 로그인 관련

      1. LoginGraceTime : 지정한 시간내에 로그인하지 않으면 자동으로 접속 종료
      2. PermitRootLogin : 관리자 로그인 허용 여부(yes or no)
      3. StrictModes : 파일 모드 및 사용자 홈디렉터리 소유권과 원격 호스트 파일들을 sshd가 확인할 지 여부, 혹시 모를 악성 코드를 찾아내기 위한 옵션
      4. MaxAuthTries : 최대 인증 시도(3회 이상 실패시 로그 기록)
      5. MaxSessions : 최대 세션 연결 개수
    6. 기록 보기 허용 여부

      1. PrintMotd : /etc/motd 파일 보기 허용 여부
      2. PrintLastLog : ssh 로그인시 지난번 로그인 기록을 보여줄 지 여부
    7. 기타

      1. PidFile : Process ID를 저장할 파일
      2. Banner : ssh 로그인시 출력할 메시지 파일
  7. ssh 접속하기
    1. linux 환경에서 ssh로 접속
      1. ssh [사용자계정]@[서버주소]  [-p 포트]
      2. ssh -l [사용자계정]  [서버주소]  [-p 포트]
    2. Windows 환경에서 PuTTY로 접속
  8. 공개키를 이용한 사용자 인증 : 일반적인 방법
    1. Linux01에 접속하여 터미널에
      1. ssh  whan@192.168.56.2 : Linux02의 whan 계정에 접속
      2. 클라이언트(Linux01) -> 서버(Linux02) : 접속 요청, 공개키 요구
      3. 서버(Linux02) -> 클라이언트(Linux01) : 공개키 제공, 개인키 요구
      4. ssh 서버(Linux02)에 저장된 호스트의 키 지문(공개키)
      5. 공개키는 서버(Linux02)의 /etc/ssh/ssh_host_ecdsa_key.pub에 저장되어 있음
    2. Linux02에서 ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub : 호스트 키 지문 확인
    3. 클라이언트(Linux01) -> 서버(Linux02) : 공개키에 해당하는 개인키 생성(패스워드 요구)후 제공
    4. 접속 승인
  9. 공개키 인증 사용하기 : 클라이언트(Linux01)에서 실행
    1. ssh-keygen :

      1. 저장될 폴더 지정 : 엔터치면 기본 폴더로 지정됨
      2. 사용할 passphrase 2번 입력
      3. .ssh 디렉터리가 생성되고 그 안에 공개키, 개인키 만들어짐
    2. shmod  700  .ssh : .ssh 디렉터리를 700 으로 허가
    3. ssh-copy-id  whan@192.168.56.2 : 개인키를 서버(Linux02)로 복사

      1. 서버(57.1)의 whan의 암호를 넣어줌
      2. 서버(57.1)의 whan이란 아이디에 공개키 전송됨
    4. ssh whan@192.168.56.2  : 암호대신 passphrase를 넣어 접속
  10. ssh-agent를 이용해서 여러 SSH 서버 접속하기
    1. 공개키 인증사용하기로 192.168.56.2 에 공개키 전송
    2. 공개키 인증사용하기로 192.168.56.3 에 공개키 전송
    3. 클라이언트 192.168.56.1에서 56.2과 56.3은 각각 접속 가능
    4. 56.2에서 56.3은 상호 접속 불가능
    5. sudo apt-get install keychain : 192.168.56.1에 keychain 설치
    6. keychain ~/.ssh/id_rsa : 개인키를 ssh-agent에 등록
    7. Linux02(192.168.56.2)에서 Linux03(192.168.56.3) 접속
      1. ssh -A whan@192.168.56.3  : 56.2에서 56.3 접속
      2. -A 옵션이 ssh-agent를 포워딩하도록 하여 접속 가능하게 함
  11. 192.168.56.XX아이피만 ssh 접속이 가능하게 하려면
    1. /etc/hosts.allow에 다음을 추가하면 해당 아이피를 허용
    2. /etc/hosts.deny에 다음을 추가하면 해당 아이피를 차단
error: Content is protected !!