パスワードを入力する必要がなく、公開鍵を使用せずに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-interactivepassword1つの「Password:」プロンプトに限定されないことを除いて、と非常に似ています。)
user1686

@grawityいいえ/etc/krb5.keytab、ありません/etc/krb5/krb5.keytab。コンテンツにアクセスできません。サーバー名はsftp.pass.psu.edu、手順を説明するのに役立ちます(その名前を指定しても害はないと思います)。
デビッドZ

ああ、古いPSUパスディスク。こんな楽しい思い出。私はパスワード認証にとても満足しています。ネットに手を伸ばす代わりに、キャンパスコンピューティングの担当者(私がそこに行ったときにCACでした)に尋ねなかったのはなぜですか。つまり、彼らはDebianミラーを持っています。彼らはすべての無知なWindowsのみの管理者ではありません。
Broam、2012年

@Broam私が最初に質問するなんて想像もできないので、おそらく彼らはそれをそのように保つ理由があるのでしょう...しかし、試しても害はないと思います。
デビッドZ

回答:


3

この場合、expectスクリプトを作成(またはより適切に記録)することは、選択肢の1つになります。

システムはそれぞれ異なるため、スクリプトはありませんが、autoexpectを使用すると、この目的でスクリプトを記録するのが非常に簡単になります。


非常に不安定ですが、最も単純で最も直接的な答えであるという賛成票があります。
ザックB

いい視点ね。これらはすべてファイアウォールの内側とプライベートネットワークで実行することをお勧めします。
johnshen64

8

これまでに収集された情報から、サーバーsftp.pass.psu.eduはKerberos 5(GSSAPI)認証をサポートし、dce.psu.eduレルムにあります。

Kerberosは、多くのサーバーとワークステーションがあるネットワークでは非常に一般的です。多くの大規模な教育機関が設置しています。1つは、公開鍵認証よりも優れている点はkinit、公開鍵をそれぞれにコピーしなくても、Kerberosレルム内のすべてのマシンに単一のクレデンシャルが自動的に提供されることです。もう1つはプロトコルのサポートです。SSHだけでなく、同じKerberos資格情報を30を超えるプロトコル(メール、ファイルシステム、データベースなど)で使用できます。

(「無知なWindowsのみの管理者」に関して:dce.psu.eduレルムは実際にはActive Directoryに基づいており、Windowsサーバーによってホストされているように見えます。)

次の手順に従ってください。

  1. Kerberosにログインします。(kinitおよびのklistツールは、まだシステムに含まれていない場合、「krb5-user」または同様のパッケージに含まれている場合があります。)

    kinit your_username @ dce.psu.edu
    

    エラーが表示されなければ、ログインは成功しています。klistkrbtgt/dce.psu.edu@...」のアイテムが表示されます。

  2. 次に、-vvオプションを使用してSSHサーバーに接続します。認証が成功した場合、良いです。

    そうでない場合は、/etc/krb5.confファイルを編集する必要があります。[domain_realm]セクションの下に、以下を追加します。

    [domain_realm]
        .psu.edu = dce.psu.edu
    
  3. デフォルトのKrb5設定では、#1で取得したチケットは10時間有効で、最長1週間更新できます。ただし、設定を確認する方法はありません。

    パスワードをファイルに保存したい場合kinit your_principal < password.txtは、完全に信頼できるわけではありませんが、simple で十分です。

    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 -vvdebug1: Unspecified GSS failure. Minor code may provide more information\n Server not found in Kerberos database、クレデンシャルキャッシュファイルが見つからないというメッセージが表示される代わりに、私が投稿したトレースに似ています。
David Z

ああ、「無知なWindowsのみの管理者」がのkeytabを設定したようですhost/sftp.pass.psu.eduが、実際の名前はであるはずhost/lutz.cac.psu.eduです。「128.118.2.85 sftp.pass.psu.edu」を/ etc / hostsに追加することでこれを回避できますが、これは
ちょっと醜い

ええ、それは…私は彼らにそれを尋ねますが、うまくいけばあなたの修正は物事を解決するはずです。明日やってみます。
David Z、

@DavidZaslavsky:役に立つかもしれないが、それらに言及しているMIT krb5のV1.10をサポート複数のホストプリンシパル(つまり、両方 host/lutz.cac.psu.eduhost/sftp.pass.psu.edu単一のkeytabでは)。(以前のバージョンでは最初のバージョンのみが使用されていました。)
user1686

申し訳ありませんが、戻ってこれについてフィードバックを提供するのを忘れていました。/etc/hosts提案されたように変更した後、私は得debug1: Unspecified GSS failure. Minor code may provide more information Generic error (see e-text)ます。出力内の他の何もエラーに関連していません。
David Z

3

私は、パスワードを1回だけ入力し、コンピューターがリモートSSHサーバーへのソケットを維持する混合ソリューションを検討します。そのため、以下の手順に従ってをセットアップできますControlMaster


ただし、クライアントをシャットダウンすると、マスター接続がリセットされます。したがって、これは理想的な解決策ではありませんが、現在の状況を少し改善するでしょう。
David Z

screen接続の切断や切断時にシェルが終了するのを防ぐために使用します。
LawrenceC
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.