비밀번호로 보호 된 SSH 키가 잠시 후에 만료되거나 시간 초과되도록 설정


12

~ / .ssh / id_rsa에 저장된 인증에 사용하는 개인 SSH 키가 있습니다. 서버에 ssh를 넣으면 키를 잠금 해제하기위한 비밀번호를 묻는 메시지가 표시됩니다.

여기에 이미지 설명을 입력하십시오

나는 이것을 좋아한다. 또한 ssh를 반복해서 반복 할 수 있으며 비밀번호를 묻는 메시지가 표시되지 않습니다.

내가 싫어하는 것은 키 암호를 며칠 또는 몇 주 후에 입력 할 필요가 없다는 것입니다. 화면을 잠 그거나 절전 모드로 전환해도 키 암호를 입력 할 필요가 없습니다. 암호가 만료되는 유일한 시간은 로그 아웃 할 때입니다 (드물게는 그렇습니다).

잠시 후 키 비밀번호가 만료되어 인증을 위해 비밀번호를 다시 입력하도록하려면 어떻게해야합니까? 아마도 1 시간 후에 키를 자동으로 잊어 버릴 수 있습니다.

답변:


4

ssh-agent (이제 어리석은 양의 해킹이 필요함)를 조정하는 대신 기본 (로그인) 키 체인의 설정을 변경하는 것이 좋습니다. 나는 실제로 afk가 아니라면 프롬프트를 원하지 않기 때문에 매우 유용한 '잠자기 잠금'과 '4 시간 후 잠금'을 사용합니다.

키 체인 접근을 열고 로그인 키 체인을 마우스 오른쪽 단추로 클릭하여 설정을 변경하십시오. 키 체인 보안 설정

또는 명령 줄을 선호하는 경우 :

security set-keychain-settings -lu -t 14400

이로 인해 키 체인 자체의 잠금을 해제하라는 추가 프롬프트 (로그인 암호가 필요함)와 사용하려는 키에 대한 프롬프트가 표시되지만 시스템 무결성 보호 IMO가 비활성화됩니다.


이것은 El Capitan의 옵션이 아니며 커맨드 라인 명령은 아무런 차이가없는 것 같습니다 .El Capitan에 비슷한 옵션이 있는지 알고 있습니까?
Ian

1
El Cap 에서이 작업을 수행 할 수 있다고 확신합니다. 방금 확인했으며 두 가지 방법 (UI 및 cmdline)은 여전히 ​​Sierra에서 여전히 작동합니다. 로그인 키 체인에서만 할 수 있지만 시스템이나 iCloud는 할 수 없습니다.
Dave Gregory

9

참고 : 최신 버전의 OS X 에서는이 응답이 작동 하도록 시스템 무결성 보호비활성화 해야합니다 . (@Dave Gregory와 @Jaap에게 이것을 지적 해 주셔서 감사합니다.)

텍스트 편집기 /System/Library/LaunchAgents/com.openssh.ssh-agent.plist에서 (이전 버전 :)을 엽니 다 org.openbsd.ssh-agent.plist. 바꾸다:

<key>ProgramArguments</key>
<array>
    <string>/usr/bin/ssh-agent</string>
    <string>-l</string>
</array>

와:

<key>ProgramArguments</key>
<array>
    <string>/usr/bin/ssh-agent</string>
    <string>-l</string>
    <string>-t</string>
    <string>30m</string>
</array>

30 분 후에 키가 만료됩니다.

재부팅하십시오. 잠깐만 요, 재부팅?!? 이것은 Windows가 아닙니다! 예, 재부팅하십시오.

글쎄, 당신은 즉시 설정을 변경하기위한 지침을 해독하려고 시도 할 수 있지만 행운을 빕니다.


1
나와 같은 pedant는 "1800"을 "30m"로 바꾸면 조금 더 읽기 쉽습니다. 전체 형식은 sshd_config (8)의 시간 형식을 참조하십시오.
Tony Williams

@ 토니 윌리엄스 쿨! 고정
Michael Kropat

이것은 요세미티에서 저에게 효과가없는 것 같습니다. 다른 사람?
Dave Gregory

Yosemite에서 시스템 무결성 보호를 비활성화하지 않는 해결 방법을 찾았습니다. 아래 답변으로 추가되었습니다.
Dave Gregory

1
정보 @Jaap에 감사드립니다. 나는 현재 매일 OS-X를 사용하지 않으므로 개인적으로 아무것도 확인할 수 없지만이 Q & A를 잘 관리하기 위해 귀하의 정보를 기반으로 답변을 업데이트하고 허용 된 답변을 Dave Gregory 's로 변경했습니다. 많은 경우 시스템 무결성 보호를 사용하지 않는 것이 바람직하지 않은 것 같습니다.
Michael Kropat

7

키 수명을 설정해야합니다. 일반적으로 기본값은 영원히입니다.

실행할 때 옵션 ssh-add을 사용하려고합니다 -t. 1 시간의 키 수명을 원한다면 ssh-add -t 1h. 시간 형식은 sshd_config매뉴얼 페이지 에서 볼 수 있지만 간단히 숫자, s, m, h, d 또는 w 다음에 초, 분, 시간, 일 또는 주 단위입니다.

ssh-add.bashrc 파일에 넣고 키를 한 번만 확인하도록 요청합니다. 키가 "만료"되어도 제거되지 않습니다. 암호를 사용하려고 할 때 암호를 다시 묻습니다.

다른 옵션 ssh-agent은 저장된 시작 옵션을 변경 /System/Library/LaunchAgents/org.openbsd.ssh-agent.plist하고 -t거기에 추가하는 것입니다. (나는 이것을 LaunchControl변경하는 데 사용 하지만 조심하면 손으로 할 수 있습니다.)


매번 ssh-add달리기 전에 수동으로 달리는 것을 기억할 필요는 없습니다 ssh. 흥미롭지 만 정말 자동적 인 것을 찾고 있습니다.
Michael Kropat

org.openbsd.ssh-agent.plist솔루션을 알려 주셔서 감사합니다.
Michael Kropat

1

다른 해결책은 다음과 같습니다.

ssh-add -t <time> <ssh-private-key>  # Set maximum lifetime to your SSH priv key.
killall ssh-agent                    # Kill all ssh-agent processes.
ssh-add -D                           # Delete all identities recorded by the agent.

이 솔루션을 사용하면 모든 키 체인에 대한 시간 초과를 선택할 필요가 없습니다-개인 키 비밀번호 기록에 몇 초의 시간 초과를 설정하려고 할 때 상당히 성가신-/ System /을 편집하기 위해 SIP를 비활성화 할 필요가 없습니다 라이브러리 /LaunchAgents/org.openbsd.ssh-agent.plist.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.