ssh-agent를 통한 공개 키 인증 및 SSH Agent Forwarding을 통한 다단계 로그인

2155 단어 SSH보안
ssh 로 공개키 인증을 사용해, 디폴트의 비밀열쇠(~/.ssh/id_rsa) 이외로 로그인하는 경우는 -i 옵션으로 비공개키를 지정할 필요가 있지만, ssh-agent 를 사용하는 것으로 지정 필요하지 않습니다. 또한 SSH Agent Forwarding 기능을 사용하면 개인 키를 로컬 PC에 넣은 채로 로그인 대상 서버에서 또 다른 서버에 로그인 할 수도 있습니다.



ssh-agent



개인 키 등록



  • 로컬 PC에서 ssh-agent를 시작합니다. macOS에서는 자동으로 부팅하므로 필요하지 않습니다.
    eval `ssh-agent`
    

  • 로컬 PC의 ssh-agent에 개인 키를 등록합니다. 파일명을 생략하면 유저의 디폴트 비밀키(~/.ssh/id_rsa)가 등록된다.
    ssh-add xxxx.pem
    

  • SSH 로그인



    ssh-agent가 시작되면 매번 -i 선택적으로 개인 키를 지정할 필요없이 로그인 할 수 있습니다. 복수의 키가 등록되어있는 경우, 각각의 키로 시도된다. 그 때문에 너무 많은 열쇠를 등록하면 Too many authentication failures 가 되어 서버로부터 거부되는 경우가 있으므로 주의.
    ssh <user>@<host>
    

    SSH Agent Forwarding



    서버 설정



    발판인 SSH 서버에서 Agent Forwading 기능이 활성화되어 있어야 합니다.
    기본적으로 활성화되어있을 수 있으므로 확인하십시오.
    # /etc/ssh/sshd_config
    AllowAgentForwarding yes
    

    로그인



    발판 서버에 로그인 할 때 -A 옵션을 붙이면 로그인 대상 서버에서도 로컬 ssh-agent에 등록한 키가 사용됩니다. 게다가 그 앞에서도 다단에 로그인하고 싶은 경우는 그 때마다 -A 옵션을 붙이면 좋다.
    ssh -A <user>@<host>
    

    설정



    매번 -A 옵션을 붙이는 것이 귀찮은 경우는, 접속원의 호스트로 이하와 같이 설정해 둔다.
    # ~/.ssh/config
    Host server1.example.com  (接続先のホスト名)
      ForwardAgent yes
    

    Git over SSH



    Git 등 SSH 경유로 액세스 하는 경우도 자동적으로 ssh-agent 에 등록한 키가 사용된다.
    git clone git@<host>:<user>/<repos>.git
    

    다른 사용자로 전환



    다른 사용자로 전환해도 ssh-agent를 유지하려면 환경 변수를 유지해야합니다. sudo 에 -E 옵션을 붙여 실행한다.
    sudo -E git clone git@<host>:<user>/<repos>.git
    

    좋은 웹페이지 즐겨찾기