공개 키를 사용하지 않고 비밀번호를 입력 할 필요가 없도록 SSH를 어떻게 설정합니까?


9

매번 비밀번호를 입력하지 않고 SSH 서버에 연결하는 방법에 대한 수십 가지 질문이 있으며 그 대답은 항상 "공개 키 사용"입니다. 글쎄, 나는 그것이 실제로 옵션이 아닌 드문 상황에 처해있다. 설명 할 수없는 이유로 연결하려는 서버의 OpenSSH 데몬이

RSAAuthentication no
PubkeyAuthentication no

에서 /etc/ssh/sshd_config. 서버에 대한 관리 액세스 권한이 없으므로 이들 또는 다른 서버 구성 옵션을 변경할 수 없습니다. (물론 Linux의 클라이언트 구성 OpenSSH 5.8을 완전히 제어 할 수 있습니다.)

이 서버에 SSH를 입력 할 때마다 비밀번호를 입력하지 않아도되는 옵션은 무엇이며, 특히 가장 안전한 옵션은 무엇입니까? 내 컴퓨터를 상당히 안전하게 유지하므로, 필요한 경우 클라이언트의 파일에 암호를 저장할 때의 보안 위험이 상당히 낮다고 가정 해 봅시다.

서버가 수용 할 수있는 다른 인증 방법은 GSS API (내가 아는 바가 없음), 키보드 대화 형 (내가 아는 바가 없음) 및 비밀번호입니다. 관련 구성 옵션은 다음과 같습니다.

#ChallengeResponseAuthentication yes

#KerberosAuthentication no

GSSAPIAuthentication yes
GSSAPICleanupCredentials yes

#UsePAM no

다음은 디버그 ( -vv) 추적입니다.

debug1: Authentications that can continue: gssapi-with-mic,password,keyboard-interactive
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found
debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found
debug1: Unspecified GSS failure.  Minor code may provide more information

debug1: Unspecified GSS failure.  Minor code may provide more information

debug2: we did not send a packet, disable method
debug1: Next authentication method: keyboard-interactive
debug2: userauth_kbdint
debug2: we sent a keyboard-interactive packet, wait for reply
debug1: Authentications that can continue: gssapi-with-mic,password,keyboard-interactive
debug2: we did not send a packet, disable method
debug1: Next authentication method: password

서버에 /etc/krb5.keytab? 가 있습니까? GSSAPI (Kerberos)는 클라이언트 측을 간단하게 설정할 수 있습니다. 그래도 서버의 호스트 이름을 요청해야합니다. (또한 : 하나의 "비밀번호 :"프롬프트로 제한되지 않는다는 점을 제외 keyboard-interactivepassword
하고는와

@grawity 아니오 /etc/krb5.keytab,하지만 그렇습니다 /etc/krb5/krb5.keytab. 내용에 액세스 할 수 없습니다. 서버 이름은 sftp.pass.psu.edu절차를 설명하는 데 도움이된다면 (이름을 밝히는 데 아무런 해가 없다고 생각합니다).
David Z

아, 옛날 PSU 패스 디스크. 그런 즐거운 추억. 비밀번호 인증에 매우 만족했습니다. 왜 인터넷에 접속하는 대신 캠퍼스 컴퓨팅 담당자 (내가 갔을 때 CAC였습니까)에게 물어 보지 않았습니까? 내 말은, 데비안 미러가있어 단서가없는 Windows 전용 관리자는 아닙니다.
Broam

@Broam 나는 내가 제일 먼저 물어볼 것이라고 상상할 수 없다. 그래서 아마 그들은 그렇게 유지해야 할 이유가있을 것이다.
David Z

답변:


3

이 경우, expect 스크립트를 작성 (또는 더 나은 기록)하는 것이 옵션 중 하나입니다.

각 시스템은 다르기 때문에 스크립트는 없지만 자동 기대 기능을 사용하면 이러한 목적으로 스크립트를 기록하는 것이 매우 쉽습니다.


극도로 안전하지는 않지만 가장 간단하고 직접적인 답변에 대한 찬사를 보냅니다.
Zac B

좋은 지적. 이러한 모든 작업은 방화벽 뒤와 개인 네트워크에서 수행하는 것이 좋습니다.
johnshen64

8

지금까지 수집 된 정보에서 서버 sftp.pass.psu.edu는 Kerberos 5 (GSSAPI) 인증을 지원하며 dce.psu.edu영역에 있습니다.

Kerberos는 많은 서버와 워크 스테이션이있는 네트워크에서 매우 일반적입니다. 많은 대형 교육 기관이 설립했습니다. 공개 키 인증에 비해 장점이 있다면 하나 kinit는 공개 키를 각각에 복사 할 필요없이 단일 이 Kerberos 영역의 모든 컴퓨터에 자격 증명을 자동으로 제공한다는 것입니다. 또 하나는 프로토콜 지원입니다. SSH뿐만 아니라 30 개 이상의 프로토콜 (메일, 파일 시스템, 데이터베이스 등)에 동일한 Kerberos 자격 증명을 사용할 수 있습니다.

""단순한 Windows 전용 관리자 "와 관련하여 dce.psu.edu영역은 실제로 Active Directory를 기반으로하고 Windows 서버에서 호스트하는 것으로 보입니다.

다음 단계를 수행하십시오.

  1. Kerberos에 로그인하십시오. ( kinitklist도구는 시스템에 아직 포함되어 있지 않은 경우 "krb5-user"또는 이와 유사한 패키지로 제공 될 수 있습니다.)

    kinit your_username @ dce.psu.edu
    

    오류가 표시되지 않으면 로그인에 성공한 것입니다. klist" krbtgt/dce.psu.edu@..."항목을 표시해야합니다 .

  2. 이제 -vv옵션 을 사용하여 SSH 서버에 연결하십시오 . 인증에 성공하면 좋습니다.

    그렇지 않으면 /etc/krb5.conf파일 을 편집해야 할 수도 있습니다 . 언더 [domain_realm]섹션에서 다음을 추가합니다 :

    [domain_realm]
        .psu.edu = dce.psu.edu
    
  3. 기본 Krb5 설정을 사용하면 # 1에서 얻은 티켓은 10 시간 동안 유효하고 최대 일주일 동안 갱신 할 수 있어야합니다. 그러나 설정을 확인할 방법이 없습니다.

    암호를 파일로 유지하려면 kinit your_principal < password.txt완전히 신뢰할 수는 없지만 간단하게 작동합니다.

    ktutil이 가능하다 만들려면 "키 탭" 대신 암호를 사용합니다.

    $ ktutil
    ktutil : addent -password -p your_principal -k 1 -e aes256-cts-hmac-sha1-96your_principal의 
    비밀번호 : *********
    ktutil : wkt keytab_file 
    ktutil :  CtrlD
    

    다음을 사용하여 로그인하십시오.

    $ kinit -kt keytab_file  your_principal
    

이것은 나에게 이상적이어야하는 것처럼 보이지만 작동하지 않는 것 같습니다-Kerberos로 성공적으로 로그인 할 수 있었지만 (오류 메시지 없음) 암호를 입력하라는 메시지가 계속 표시됩니다. 자격 증명 캐시 파일을 찾을 수 없다는 대신 오류 메시지 ssh -vv가 게시 된 추적과 비슷합니다 debug1: Unspecified GSS failure. Minor code may provide more information\n Server not found in Kerberos database.
David Z

아, "단순한 Windows 전용 관리자"가에 대한 키탭을 설정 한 것으로 host/sftp.pass.psu.edu보이지만 실제 이름은이어야합니다 host/lutz.cac.psu.edu. " 128.118.2.85 sftp.pass.psu.edu"를 / etc / hosts 에 추가하면이 문제를 해결할 수 있지만, 추악합니다. 관리자가 서버를 수정하면 훨씬 좋을 것입니다 ...
user1686

그래, 그럴 텐데 ... 내가 그들에게 물어볼 것이지만 지금은 당신의 수정이 문제를 해결해야합니다. 내일해볼 게요
David Z

@DavidZaslavsky : MIT Krb5 v1.10은 단일 키탭에서 여러 호스트 주체 (예 : 및 둘 다 )를 지원한다는 점을 언급하면 ​​유용 할 수 있습니다 . (이전 버전은 첫 번째 버전 만 사용했습니다.)host/lutz.cac.psu.eduhost/sftp.pass.psu.edu
user1686

죄송합니다. 돌아와서 이에 대한 의견을 제공하지 못했습니다. /etc/hosts제안대로 수정 한 후에 나는 얻는다 debug1: Unspecified GSS failure. Minor code may provide more information Generic error (see e-text). 출력의 다른 것은 오류와 관련이 없습니다.
David Z

3

암호를 한 번만 입력하면 컴퓨터가 원격 SSH 서버에 대한 소켓을 유지 관리하는 혼합 솔루션을 고려합니다. 이러한 단계 에 따라 ControlMaster바로 그 이유 를 설정할 수 있습니다 .


그래도 클라이언트를 종료하면 마스터 연결이 재설정됩니다. 따라서 이것은 이상적인 솔루션은 아니지만 현재 상황에 비해 약간의 개선이 될 것입니다.
David Z

screen연결 끊기 또는 끊기시 쉘이 종료되지 않도록 보호하는 데 사용 합니다.
LawrenceC
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.