パスワードを入力しなくても、公開鍵を使用せずに 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

この場合、expect スクリプトを作成する (または記録する) ことがオプションの 1 つになります。

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

答え2

これまでに収集された情報によると、サーバーはsftp.pass.psu.eduKerberos 5 (GSSAPI) 認証をサポートしており、dce.psu.eduレルム内にあります。

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

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

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

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

    キニットあなたのユーザーネーム翻訳:
    

    エラーが表示されない場合は、ログインは成功しています。klistkrbtgt/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: addent -password -pあなたのプリンシパル-k 1 -e aes256-cts-hmac-sha1-96
    パスワードあなたのプリンシパル: *********
    ktutil: wktキータブファイル
    クトゥティル:  CtrlD
    

    以下を使用してログインします:

    $ kinit -ktキータブファイル あなたのプリンシパル
    

答え3

私は、パスワードを一度だけ入力し、コンピュータがリモートSSHサーバーへのソケットを維持する混合ソリューションを検討します。これらの手順ControlMasterまさにその理由で設定します。

関連情報