원격 측 셸 세션에서 SSH 공개 키를 식별합니다(에이전트가 없거나 에이전트에 ID가 없음).

원격 측 셸 세션에서 SSH 공개 키를 식별합니다(에이전트가 없거나 에이전트에 ID가 없음).

키 에이전트에 저장된 키를 사용할 때 인증에 어떤 키가 사용되는지 확인하는 방법은 다음과 같습니다.

ssh-add -L 2>/dev/null | awk '{print $1}' | while read identity; do grep -v '^#' ~/.ssh/authorized_keys | grep "${identity}" ; done 

에이전트의 ID를 한 줄씩 나열하고 키를 추출하여 authorized_keys파일에서 찾습니다.

클라이언트가 키 에이전트를 사용하지 않으면 키가 나열되지 않습니다 ssh-add -L.

공개키를 식별하는 다른 방법이 있나요? SetEnv또는 키 옵션을 사용하여 사용자 정의 "사용자 환경" 변수를 전달하거나 설정하는 것은 environment="VAR=VALUE"불가능(허용)됩니다 .

답변1

sshd가 사용자 인증 방법을 기록하는 유일한 장소는 시스템 로그입니다. 이 정보는 로그인된 세션에서는 사용할 수 없습니다. 연결 소스에 대한 고유 식별 정보는 다음에서 찾을 수 있습니다.환경SSH_CLIENT은 변수 및 에 있는 클라이언트의 IP 주소와 포트입니다 SSH_CONNECTION.

지시문을 추가할 수 있습니다.~/.ssh/authorized_keys사용자가 특정 키로 로그인하는 경우 환경 변수를 설정합니다.

environment="SSH_KEY=foo" ssh-rsa AAAA…

사용자가 키를 사용하여 로그인하지 않은 경우 시스템 로그를 확인하지 않고는 로그인 방법(비밀번호, .shostsKerberos 등)을 알 수 없습니다(시스템 관리자만 이 작업을 수행할 수 있음).

시스템 관리자가 이 authorized_keys파일 수정을 허용하지 않는 경우 관리자와 협력하여 원하는 작업을 수행하는 방법을 결정해야 합니다. 당신이 알아야 할 정보와 그 이유를 그들에게 설명하십시오.

프록시로 수행하는 작업은 연결 소스를 식별하는 신뢰할 수 있는 방법이 아니며 사용자가 로그인한 방법에 대해 아무 것도 알려주지 않습니다. 사용자가 프록시를 전달하지 않았거나 프록시에 키가 없는 경우. 여러 개의 키를 얻을 수 있으며 사용자는 그 중 하나를 사용하여 로그인할 특별한 이유가 없습니다(비밀번호, 다른 키 또는 다른 방법을 사용할 수 있음). 나는 이 정보로 아무것도 하지 않는 것을 권장합니다. 이는 너무 신뢰할 수 없습니다.

관련 정보