• SSH(Secure Shell)

    • 네트워크를 통해 원격 시스템에 접속하여 명령어를 실행하거나 파일을 전송하는 데 사용되는 프로토콜
    • 여기서 Shell은 사용자의 명령을 커널(Kernel)에 전달하고 그 결과를 반환하는 인터페이스를 의미한다.
      • (커널을 껍질처럼 감싸고 있다는 의미로 Shell 이라 불리는 것)
      • 사용자 입력을 중계하는 방식에 따라 크게 두 가지로 나뉘지만 일반적으로는 CLI 환경을 의미한다.
        • CLI (Command Line Interface) -> csh, bash, ksh, zsh, cmd.exe 등
        • GUI (Graphic User Interface) -> Gnome, KDE 등
    • 서버와 클라이언트 사이에 TCP 보안 채널이 형성되며 기본 포트는 22번이다.
      • 암호화를 사용하여 통신 내용을 보호한다.
    • Diffie-Hellman 방식으로 대칭키 교환한다.
      • 쉽게 말해 비대칭 키 방식을 사용하여 대칭키를 선교환하는 것
  • 깃에서 SSH로 원격 접속하는 예시

    • 클라이언트(본인 컴퓨터)에서 비밀키, 공개키 생성
    • 비밀키는 클라이언트(본인 컴퓨터)에 저장
    • 공개키의 경우, 통신하고자 하는 서버(상대 컴퓨터)에 복사하여 저장
    • 클라이언트가 비밀키로 암호화한 요청을 서버에 전달
    • 서버는 공개키로 클라이언트의 요청을 복호화하여 사용자 인증
    • 이후 대칭키(세션키) 교환