プライベートDebianリポジトリへのアクセスを制限し、非対話的に(つまりスクリプトを使用して)認証できる方法を探していました
私が見つけた最も有用な記事は、実際には Debian管理サイト からのものですが、安全な方法ではsshと公開/秘密鍵を使用します。正常に動作しますが、認証を成功させるには、各ホストの公開鍵がリモートのauthorized_keysファイル内にある必要があります。 ssh://にパスワードを提供することについては何も述べられていませんが、それは可能であるはずです。
他の方法(ftpsなど)を試しましたか?
前もって感謝します
サーバーで常に手動でapt-get
を実行する場合(cronによって起動される自動apt-get
コマンドはありません)、 sshエージェント転送の使用を検討してください。これにより、管理するサーバーごとに1つの公開/秘密キーペアを管理する必要がなくなり、すべてのサーバーに秘密キーを残すよりもおそらく安全です。
初期設定-管理するサーバーに接続し、次のようなものを/etc/apt/sources.list
に追加します(この例では、サーバーをmanager
アカウント):
deb ssh://[email protected]/path other stuff
たとえば、ログインjohndoe
を使用して、秘密鍵/公開鍵のペアを自分のコンピューターに作成します(コンピューターがdebianで実行されている場合:それ以外の場合は、管理専用のdebianサーバーから実行できます)。
ssh-keygen
公開鍵を/home/manager/.ssh/authorized_keys
のリポジトリサーバーにコピーします。
ssh-copy-id [email protected]
管理セッションごとに1回
次のように入力して、マシンでsshエージェントを起動します。
eval `ssh-agent`
キーをエージェントに追加します(これにはパスフレーズが必要です):
ssh-add
サーバーの管理
ssh -A
を使用して管理するサーバーに接続します(-A
はエージェント転送をアクティブにします):
ssh -A some.server.org
ルートに切り替えます(Sudo
を使用する場合は、/etc/sudoers
を構成する必要があります。そうでない場合、Sudo
はエージェントの転送を中断します これを読む ):
su
これで、エージェント転送により、sshを使用してリポジトリのマネージャーアカウントに接続できるようになりました。パスワードを再度入力する必要はありません。したがって、apt-get
は問題なく機能するはずです。
apt-get udate
管理セッションを終了します
サーバーの管理が終了したら、エージェントからキーを削除します。
ssh-add -D
利点
ssh-ask
を使用して、キーの使用を試みるたびに承認/拒否することができます。これを行う1つの方法は、特定のIPセットがリポジトリにアクセスできるようにすることです。これは、LANとVPNで非常にうまく機能します。
シンプルで効率的。
Ssh + public/private keysソリューションはthat badではありません:
ssh-keygen
と入力し、次にssh-copy-id [email protected]
と入力します/etc/apt/sources.list
を編集して、次のように追加します。
deb ssh://[email protected]/path other stuff
確かに、各サーバーの公開鍵をサーバーの~/.ssh/authorized_keys
ファイルに配置する必要がありますが、それほど複雑ではなく(上記を参照)、いつでも許可するサーバーと許可しないサーバーを制御できます( authorized_keys
)でいつでもキーを削除できます。
ログイン/パスワード(基本認証)で保護された、リポジトリへのhttpsアクセスを設定できます。問題は、クリアテキストのログイン/パスワードを/etc/apt/sources.list
に入れる必要があることです(注: パッチがあります ログイン/パスワードを代わりに/root/.netrc
に入れることができます) 。
あなたの質問のリンクは複数の方法を示しています。 2番のhttps +基本認証が必要です。