フォローするSSH証明書のかなり良いテキスト現在、OpenBSDシステムで例をエミュレートしようとしてRHEL 6 openssh-5.3p1-94.el6
(約10年前)用に書かれています。
一例ShowはホストCAキーを生成し、ホストのRSAキーに署名します。
ssh-keygen -s ~/.ssh/ca_host_key -I host_name -h -Z host_name.example.com -V -1w:+54w5d /etc/ssh/ssh_host_rsa.pub
Enter passphrase:
Signed host key /root/.ssh/ssh_host_rsa-cert.pub: id "host_name" serial 0 for host_name.example.com valid from 2015-05-15T13:52:29 to 2016-06-08T13:52:29
OpenBSDでこれを試しても出力は出ませんfor host_name.example.com
。テキストは言う
この
-Z
オプションは、この証明書をドメイン内の特定のホストに制限します。
...これについて少し混乱しています。OpenBSD マニュアルssh-keygen(1)
-Z
オプションはまったく言及されていません。私もssh-keygen
文句を言わず、この文書化されていないオプションを受け入れることについて混乱しています。
見ているソースコードssh-keygen
、-Z
オプションはい許可されますが、ホスト名よりも「パスワード形式」(または「パスワード形式」)に関連しているようです(正しいコードを見ていると仮定)。
case 'Z':
openssh_format_cipher = optarg;
break;
以前のバージョンのコードを見るといつも「パスワード形式」に関連しています。
OpenSSHリリースノート言及する必要はありません-Z
。
Q:ssh-keygen
RHEL 6のRedHat専用パッチでパッチを適用しましたか(該当するバージョンが関連しているかどうかはわかりませんが、RHEL 7またはRHEL 8用のSSH証明書に関する同等の文書がないようです)-Z
。違いますか?
答え1
長すぎる博士。最新バージョンのOpenSSHでは、サブジェクト(ホスト名やユーザーなど)を設定する-n
代わりにこのオプションを使用する必要があります。-Z
ソースコードを見ると、
ssh-keygen
その-Z
オプションは許可されますが、「パスワード形式」に関連しているようです。
はい、エラーが発生しない理由は、openssh_format_cipher
証明書を生成するときに変数が使用されず、パスワードでキーを生成するときにのみ使用されるためです。
キー生成を有効にしてssh-keygen -f ./path -Z some_garbage
パスワードを設定すると、エラーメッセージが表示されます。
動作を異ならせるRHEL 6の
ssh-keygen
RedHat関連パッチでパッチされていますか?-Z
はい、昔もそうでした。openssh-5.3p1-ssh-certificates.patch
で見ることができますここ:
+ case 'Z':
+ cert_principals = optarg;
+ break;
case 'p':
このパッチは、最新のrpmでは使用されなくなりました。
答え2
@mosvyの答えはコメントより少し長いので拡張されます。
RHEL6は2009年からOpenSSH 5.3p1と一緒にリリースされており(元は以前のバージョンのようですが、今は持っていません)、長年にわたってSSH用の機能を含むアップストリームで新機能が実装またはバックポートされました。証明書
しかし、それははるかに後でした。 NSSによるスマートカードの長年の初期サポート(2007年以降の変更ログ)以降、NSSがどのように機能するかを説明します-n
。ssh-keygen
この2008年のブログ投稿で(このパッチがアップストリームで提案されたのか、なぜ拒否されたのかはわかりませんが、標準のPKCS#11インターフェイスを介してスマートカードが直接使用されます。) keys.patchを参照してください。
OpenSSH 5.4p1がリリースされ、証明書をサポートしてからしばらくして、この特定の機能をバックポートすることにしました(2013年にさかのぼる変更ログで)、既存のスイッチ(今はすべてのアルファベットssh-keygen
文字を使用するスイッチ)と競合します。よく覚えておいてください)、この機能をバックポートする唯一の方法は、オプションを別のスイッチに移動し(既存のシナリオはマイナーな更新で中断できない)文書化することでした。
それがすべてです。