비밀번호를 입력할 필요 없이 공개 키를 사용하지 않고 SSH를 설정하려면 어떻게 해야 합니까?

비밀번호를 입력할 필요 없이 공개 키를 사용하지 않고 SSH를 설정하려면 어떻게 해야 합니까?

여기에 대해 수십 가지 질문이 있다는 것을 알고 있습니다.매번 비밀번호를 입력하지 않고 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

답변1

이 경우 예상 스크립트를 작성(또는 더 나은 녹음)하는 것이 선택 사항 중 하나입니다.

시스템마다 다르기 때문에 스크립트가 없지만, autoexpect를 사용하면 이러한 목적으로 스크립트를 기록하는 것이 매우 쉽습니다.

답변2

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

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

("단서 없는 Windows 전용 관리자"에 관해: 해당 dce.psu.edu영역은 실제로 Active Directory를 기반으로 하고 Windows 서버에서 호스팅되는 것으로 보입니다.)

다음 단계를 따르세요.

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

    키니트your_username@dce.psu.edu
    

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

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

    그렇지 않은 경우 파일을 편집해야 할 수도 있습니다 /etc/krb5.conf. 섹션 아래에 [domain_realm]다음을 추가합니다.

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

    비밀번호를 파일에 보관하려면 kinit your_principal < password.txt완전히 신뢰할 수는 없지만 간단한 방법을 사용하면 됩니다.

    그것 ktutil으로 만들 수 있습니다"키탭"비밀번호 대신 사용하세요.

    $ ktutil
    ktutil: 추가 -password -pyour_principal-k 1 -e aes256-cts-hmac-sha1-96
    비밀번호your_principal: *********
    ktutil: 주keytab_file
    ktutil:  CtrlD
    

    다음을 사용하여 로그인합니다.

    $ 키니트 -ktkeytab_file your_principal
    

답변3

나는 비밀번호를 한 번만 입력하면 컴퓨터가 원격 SSH 서버에 대한 소켓을 유지하는 혼합 솔루션을 고려할 것입니다. 당신은 따라갈 수 있습니다이 단계ControlMaster바로 그 이유 때문에 설정하는 것입니다 .

관련 정보