다단계 ssh를 실행할 때 로컬 기밀 키를 계속 참조합니다

3766 단어 LinuxmacOSSSHtech

목적: ssh를 사용하여 여러 서버에 로그인


청원

  • 여러 서버를 통해 목적지에 쉽게 로그인하려는 경우
  • 사용자 이름, 호스트 이름 입력을 생략하고 싶습니다
  • 키 인증을 사용하는 경우 목적 서버를 통해 자동으로 키를 구분하고자 함
  • 다단계 ssh에서 키를 사용할 때 항상 자신의 로컬 기기의 기밀 키를 참조하려고 한다(A→B→C) 로그인할 때 C는 B가 아닌 A의 키를 참조하기를 원한다)
  • 서버에 장시간 로그인해도 통신을 끊을 수 없음
  • X11
  • 활용
  • 제2접속은 제1접속을 이용하여 인증을 건너뛰고 싶다
  • ※ 공개 키 인증은 비밀번호 인증의 인증 방식(안전성이 높음)이 아닙니다.
    공개 키 개념
    공개 키 사용

    ssh 설정 파일의 구조


    파일 이름
    과업
    ~/.ssh/config
    ssh 프로필
    ~/.ssh/id_rsa
    개인 키 (키 역할)
    ~/.ssh/id_rsa.pub
    공개 키(열쇠구멍의 역할)
    ~/.ssh/authorized_keys
    공개 키 열쇠의 키 묶음 (실제 공개 키의 내용은 텍스트로 나열됨)
    ~/.ssh/known_hosts
    과거 사용된 서버 목록
    서버 설정 키홀(공개 키), 옆에 있는 키(비밀 키)로 로그인

    해결책


    ~/.ssh/config 구성


    설정


    기계 한 대당


    로컬 PC=macbook
    서버 A: 사용자 이름 =usernama 1 도메인 =aaa 입니다.ac.jp
    서버 B: 사용자 이름 =username2 도메인 =bbb 입니다.ac.jp
    그러니까 서버 A에 접속해야 돼요.
    shell
    ssh [email protected]
    

    공개 키와 개인 키 (맥북에서 생성)


    비밀 키:맥북rsa
    공개 키:맥북rsa.pub

    하고 싶은 일


    로컬 PC → 서버 A
    로컬 PC → 서버 A → 서버 B
    config
    Host A
    HostName aaa.ac.jp
    User username1
    IdentityFile ~/.ssh/macbook_rsa
    ForwardAgent yes
    ForwardX11 yes
    ServerAliveInterval 300
    ForwardX11Timeout 596h
    ControlMaster auto
    ControlPath ~/.ssh/mux-%r@%h:%p
    ControlPersist 30m
    
    Host B
    HostName bbb.ac.jp
    User username2
    ProxyCommand ssh A nc %h %p
    IdentityFile ~/.ssh/macbook_rsa
    ForwardAgent yes
    ForwardX11 yes
    ServerAliveInterval 300
    ForwardX11Timeout 596h
    ControlMaster auto
    ControlPath ~/.ssh/mux-%r@%h:%p
    ControlPersist 30m
    
    ※ 호스트 이름은 자유롭게 지어주세요.

    사용법


    먼저 ssh-agent에 키 등록
    shell
    sudo ssh-add ~/.ssh/macbook_rsa
    
    A에 로그인
    shell
    ssh A
    
    A에서 B로 로그인
    shell
    ssh B
    

    해설


    변량
    의향
    Host
    서버 닉네임
    IdentityFile
    사용할 개인 키 지정
    ForwardAgent yes
    ssh-agent 활용
    ForwardX11 yes
    X11 전송 진행
    ProxyCommand ssh A nc %h %p
    B 갈 때 A 를 먼저 지나가요.
    ServerAliveInterval 300
    300초 간격으로 신호를 발송하여 통신이 자동으로 끊기지 않도록 방지하다
    ForwardX11Timeout 596h
    X11의 시간 초과를 596시간으로 설정하여 X11의 자동 전송 중단을 방지하다
    ControlMaster autoControlPath ~/.ssh/mux-%r@%h:%pControlPersist 30m
    같은 서버에서 두 번째 ssh를 진행할 때 첫 번째 ssh를 이용하여 연결 시간을 고속(인증 건너뛰기)으로 합니다.참고: ControlPersist 30m를 사용하여 30m의 시간 초과를 설정하지 않으면 ssh를 종료한 후에도 내부 통신이 계속되는 상태가 됩니다
    ssh-agent
    ssh-agent의 주의점 4.4.인증 에이전트 사용 시 고려 사항
    ControlMaster

    좋은 웹페이지 즐겨찾기