「ssh-keygen」の版間の差分
(ページの作成:「<!-- vim: filetype=mediawiki --> [[{{PAGENAME}}]] とは、ssh の認証鍵の生成、管理、変換をするためのコマンドです。 Secure Shell の...」) |
|||
(同じ利用者による、間の7版が非表示) | |||
行1: | 行1: | ||
− | + | [[ssh-keygen]] とは、[[ssh]] の認証鍵の生成、管理、変換をするためのコマンドです。[[Secure Shell]] の利点の1つである[[公開鍵認証]]を使うために、[[鍵ペア]] が必要です。[[ssh-agent]] を利用することで、さらに利便性が向上します。RSA, DSA, ECDSA であれば、RSA の鍵を作成してください。 | |
− | + | ||
− | + | ||
− | [[ | + | |
− | [[Secure Shell]] の利点の1つである[[公開鍵認証]]を使うために、[[鍵ペア]] が必要です。 | + | |
− | [[ssh-agent]] | + | |
'''読み方''' | '''読み方''' | ||
− | ;[[ | + | ;[[ssh-keygen]]: えすえすえいち きーじぇん |
__TOC__ | __TOC__ | ||
== 概要 == | == 概要 == | ||
− | + | [[ssh-keygen]] とは、[[ssh]] の認証鍵の生成、管理、変換をするためのコマンドです。 | |
− | [[ | + | |
[[Secure Shell]] の利点の1つである[[公開鍵認証]]を使うために、[[鍵ペア]] が必要です。 | [[Secure Shell]] の利点の1つである[[公開鍵認証]]を使うために、[[鍵ペア]] が必要です。 | ||
[[ssh-agent]] を利用することで、さらに利便性が向上します。 | [[ssh-agent]] を利用することで、さらに利便性が向上します。 | ||
− | [[RSA暗号|RSA]]鍵は、 2048bit の鍵で十分だと考えられています。 | + | [[RSA暗号|RSA]]鍵は、[[鍵長]]が 2048bit の鍵で十分だと考えられています。 |
− | [[ssh- | + | [[ssh-keygen]] で作成した[[公開鍵]] ( *.pub ) は、[[authorized_keys]] に登録します。 |
[[公開鍵]] ごとにアクセス元や実行できるコマンド、pty を使わせるか、などを設定できます。 | [[公開鍵]] ごとにアクセス元や実行できるコマンド、pty を使わせるか、などを設定できます。 | ||
行34: | 行28: | ||
|- | |- | ||
| SSH 2 | | SSH 2 | ||
− | | [[ | + | | [[Digital Signature Algorithm|dsa]] |
| id_dsa | | id_dsa | ||
| id_dsa.pub | | id_dsa.pub | ||
行43: | 行37: | ||
| identity.pub | | identity.pub | ||
|} | |} | ||
− | |||
== インストール == | == インストール == | ||
+ | [[ssh-keygen]] は、 [[ssh]] のパッケージに含まれています。 | ||
− | + | FreeBSD であれば、openssh-portable をインストールします。 | |
+ | {{pkg|openssh-portable}} | ||
== 書式 == | == 書式 == | ||
− | + | === openssh-portable-6.6.p1_4,1 === | |
+ | openssh-portable-6.6.p1_4,1のパッケージのssh-keygenのコマンドラインオプションです。 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | usage: ssh-keygen [options] | ||
+ | Options: | ||
+ | -A Generate non-existent host keys for all key types. | ||
+ | -a number Number of KDF rounds for new key format or moduli primality tests. | ||
+ | -B Show bubblebabble digest of key file. | ||
+ | -b bits Number of bits in the key to create. | ||
+ | -C comment Provide new comment. | ||
+ | -c Change comment in private and public key files. | ||
+ | -D pkcs11 Download public key from pkcs11 token. | ||
+ | -e Export OpenSSH to foreign format key file. | ||
+ | -F hostname Find hostname in known hosts file. | ||
+ | -f filename Filename of the key file. | ||
+ | -G file Generate candidates for DH-GEX moduli. | ||
+ | -g Use generic DNS resource record format. | ||
+ | -H Hash names in known_hosts file. | ||
+ | -h Generate host certificate instead of a user certificate. | ||
+ | -I key_id Key identifier to include in certificate. | ||
+ | -i Import foreign format to OpenSSH key file. | ||
+ | -J number Screen this number of moduli lines. | ||
+ | -j number Start screening moduli at specified line. | ||
+ | -K checkpt Write checkpoints to this file. | ||
+ | -k Generate a KRL file. | ||
+ | -L Print the contents of a certificate. | ||
+ | -l Show fingerprint of key file. | ||
+ | -M memory Amount of memory (MB) to use for generating DH-GEX moduli. | ||
+ | -m key_fmt Conversion format for -e/-i (PEM|PKCS8|RFC4716). | ||
+ | -N phrase Provide new passphrase. | ||
+ | -n name,... User/host principal names to include in certificate | ||
+ | -O option Specify a certificate option. | ||
+ | -o Enforce new private key format. | ||
+ | -P phrase Provide old passphrase. | ||
+ | -p Change passphrase of private key file. | ||
+ | -Q Test whether key(s) are revoked in KRL. | ||
+ | -q Quiet. | ||
+ | -R hostname Remove host from known_hosts file. | ||
+ | -r hostname Print DNS resource record. | ||
+ | -S start Start point (hex) for generating DH-GEX moduli. | ||
+ | -s ca_key Certify keys with CA key. | ||
+ | -T file Screen candidates for DH-GEX moduli. | ||
+ | -t type Specify type of key to create. | ||
+ | -u Update KRL rather than creating a new one. | ||
+ | -V from:to Specify certificate validity interval. | ||
+ | -v Verbose. | ||
+ | -W gen Generator to use for generating DH-GEX moduli. | ||
+ | -y Read private key file and print public key. | ||
+ | -Z cipher Specify a cipher for new private key format. | ||
+ | -z serial Specify a serial number. | ||
+ | </syntaxhighlight> | ||
+ | === FreeBSD 10.0-RELEASE の ssh-keygen === | ||
+ | FreeBSD 10.0-RELEASE に付属している ssh-keygen のオプションです。 | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
ssh-keygen [-q] [-b bits] -t type [-N new_passphrase] [-C comment] | ssh-keygen [-q] [-b bits] -t type [-N new_passphrase] [-C comment] | ||
行73: | 行120: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | == | + | == 鍵のタイプ == |
+ | 作成する[[鍵]]のタイプは、いくつかのアルゴリズムから選択できます。 | ||
− | + | 環境(sshパッケージのバージョン)によって、使えるアルゴリズムが異なります。 | |
+ | 古い環境ならDSAやRSAしか使用できないかもしれません。 | ||
+ | SSHプロトコルバージョン1では、[[RSA|RSA暗号]]の[[鍵]]を使用できます。 | ||
+ | SSHプロトコルバージョン2では、[[DSA]], [[ECDSA]], [[Ed25519]], [[RSA|RSA暗号]] の鍵が使用できます。 | ||
+ | |||
+ | [[Ed25519]]は、[[OpenSSH]] 6.5 からサポートされました。 | ||
+ | == 楕円曲線暗号 ECDSA には512ビットの鍵長は存在しない == | ||
+ | [[ECDSA]]の鍵では、[[鍵長]]は、256, 384, 521 ビットです。 | ||
+ | |||
+ | 楕円曲線暗号の要件で、それぞれのビット長である楕円曲線が出てくるべきだが、それが満たせないので、512ビットの変わりに521ビットを使う、とされています。 | ||
+ | |||
+ | == 使い方 == | ||
+ | === RSAの鍵ペアの作成 === | ||
[[鍵ペア]] の作成は、下記の通りです。 | [[鍵ペア]] の作成は、下記の通りです。 | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | ssh-keygen -b | + | ssh-keygen -b 4096 -t rsa -f ~/.ssh/id_rsa.`date '+%Y-%m-%d'` -N '' -C "$USER-`date '+%Y-%m-%d'`" |
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
=== パスフレーズなしの秘密鍵の作成 === | === パスフレーズなしの秘密鍵の作成 === | ||
− | + | アプリケーションアカウント で実行する [[cron]] (バッチ) で [[ssh]] を使う場合には、[[パスフレーズ]]のない[[秘密鍵]] を利用すると、環境構築は、楽になります。 | |
− | + | ||
その代わり、セキュリティは低下します。 | その代わり、セキュリティは低下します。 | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | ssh-keygen -b | + | ssh-keygen -b 4096 -t rsa -f ~/.ssh/id_rsa.nopass -N '' -C "$USER-`date '+%Y-%m-%d'`" |
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | ログインシェル に [[rbash]] や [[scponly]] を利用して、実行できるコマンドを制限したり、[[authorized_keys]] でコマンドやアクセス元などの制限を行うべきです。 | |
詳しくは、[[パスフレーズのないsshの秘密鍵の作成]]をご参照ください。 | 詳しくは、[[パスフレーズのないsshの秘密鍵の作成]]をご参照ください。 | ||
− | |||
=== パスフレーズを変更する === | === パスフレーズを変更する === | ||
− | |||
古い[[パスフレーズ]] foo から 新しい [[パスフレーズ]] bar に変更する例です。 | 古い[[パスフレーズ]] foo から 新しい [[パスフレーズ]] bar に変更する例です。 | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
ssh-keygen -p foo -N bar -f ~/.ssh/id_rsa | ssh-keygen -p foo -N bar -f ~/.ssh/id_rsa | ||
+ | </syntaxhighlight> | ||
+ | === known_hostsファイルからホストを削除する === | ||
+ | [[ssh-keygen]]コマンドを使って、[[sshd]]のホストキーを[[known_hosts]]から削除できます。 foo.local のキーを削除したい場合は、下記の通りです。 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | ssh-keygen -R foo.local | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | 下記は、実行例です。 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | %ssh-keygen -R foo.local | ||
+ | /home/foo/.ssh/known_hosts updated. | ||
+ | Original contents retained as /home/foo/.ssh/known_hosts.old | ||
+ | </syntaxhighlight> | ||
== Windows を利用している場合 == | == Windows を利用している場合 == | ||
− | + | [[Windows]] で [[PuTTY]] を利用している場合は、 '''PuTTYgen''' で [[鍵ペア]] を作成できます。 '''PuTTYgen''' は、[[PuTTY]] 形式の[[秘密鍵]]と [[OpenSSH]] 形式の[[秘密鍵]] を相互に変換できます。 | |
− | [[Windows]] で [[PuTTY]] を利用している場合は、 | + | |
− | + | ||
== 関連項目 == | == 関連項目 == | ||
− | |||
* [[パスフレーズ]] | * [[パスフレーズ]] | ||
* [[ssh-agent]] | * [[ssh-agent]] | ||
行112: | 行176: | ||
* [[ssh]] | * [[ssh]] | ||
* [[Secure Shell]] | * [[Secure Shell]] | ||
− | * [[ | + | * '''PuTTYgen''' |
+ | * [[鍵長]] | ||
+ | <!-- vim: filetype=mediawiki | ||
+ | --> |
2015年9月23日 (水) 17:24時点における最新版
ssh-keygen とは、ssh の認証鍵の生成、管理、変換をするためのコマンドです。Secure Shell の利点の1つである公開鍵認証を使うために、鍵ペア が必要です。ssh-agent を利用することで、さらに利便性が向上します。RSA, DSA, ECDSA であれば、RSA の鍵を作成してください。
読み方
- ssh-keygen
- えすえすえいち きーじぇん
目次
概要
ssh-keygen とは、ssh の認証鍵の生成、管理、変換をするためのコマンドです。 Secure Shell の利点の1つである公開鍵認証を使うために、鍵ペア が必要です。 ssh-agent を利用することで、さらに利便性が向上します。
RSA鍵は、鍵長が 2048bit の鍵で十分だと考えられています。
ssh-keygen で作成した公開鍵 ( *.pub ) は、authorized_keys に登録します。 公開鍵 ごとにアクセス元や実行できるコマンド、pty を使わせるか、などを設定できます。
プロトコルバージョン | 暗号 | デフォルトの秘密鍵ファイル名 | デフォルトの公開鍵ファイル名 |
---|---|---|---|
SSH 2 | rsa | id_rsa | id_rsa.pub |
SSH 2 | dsa | id_dsa | id_dsa.pub |
SSH 1 | rsa1 | identity | identity.pub |
インストール
ssh-keygen は、 ssh のパッケージに含まれています。
FreeBSD であれば、openssh-portable をインストールします。
FreeBSDにインストールする場合
pkgコマンドでインストールする場合
sudo pkg install openssh-portable
書式
openssh-portable-6.6.p1_4,1
openssh-portable-6.6.p1_4,1のパッケージのssh-keygenのコマンドラインオプションです。
usage: ssh-keygen [options] Options: -A Generate non-existent host keys for all key types. -a number Number of KDF rounds for new key format or moduli primality tests. -B Show bubblebabble digest of key file. -b bits Number of bits in the key to create. -C comment Provide new comment. -c Change comment in private and public key files. -D pkcs11 Download public key from pkcs11 token. -e Export OpenSSH to foreign format key file. -F hostname Find hostname in known hosts file. -f filename Filename of the key file. -G file Generate candidates for DH-GEX moduli. -g Use generic DNS resource record format. -H Hash names in known_hosts file. -h Generate host certificate instead of a user certificate. -I key_id Key identifier to include in certificate. -i Import foreign format to OpenSSH key file. -J number Screen this number of moduli lines. -j number Start screening moduli at specified line. -K checkpt Write checkpoints to this file. -k Generate a KRL file. -L Print the contents of a certificate. -l Show fingerprint of key file. -M memory Amount of memory (MB) to use for generating DH-GEX moduli. -m key_fmt Conversion format for -e/-i (PEM|PKCS8|RFC4716). -N phrase Provide new passphrase. -n name,... User/host principal names to include in certificate -O option Specify a certificate option. -o Enforce new private key format. -P phrase Provide old passphrase. -p Change passphrase of private key file. -Q Test whether key(s) are revoked in KRL. -q Quiet. -R hostname Remove host from known_hosts file. -r hostname Print DNS resource record. -S start Start point (hex) for generating DH-GEX moduli. -s ca_key Certify keys with CA key. -T file Screen candidates for DH-GEX moduli. -t type Specify type of key to create. -u Update KRL rather than creating a new one. -V from:to Specify certificate validity interval. -v Verbose. -W gen Generator to use for generating DH-GEX moduli. -y Read private key file and print public key. -Z cipher Specify a cipher for new private key format. -z serial Specify a serial number.
FreeBSD 10.0-RELEASE の ssh-keygen
FreeBSD 10.0-RELEASE に付属している ssh-keygen のオプションです。
ssh-keygen [-q] [-b bits] -t type [-N new_passphrase] [-C comment] [-f output_keyfile] ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile] ssh-keygen -i [-m key_format] [-f input_keyfile] ssh-keygen -e [-m key_format] [-f input_keyfile] ssh-keygen -y [-f input_keyfile] ssh-keygen -c [-P passphrase] [-C comment] [-f keyfile] ssh-keygen -l [-f input_keyfile] ssh-keygen -B [-f input_keyfile] ssh-keygen -D pkcs11 ssh-keygen -F hostname [-f known_hosts_file] [-l] ssh-keygen -H [-f known_hosts_file] ssh-keygen -R hostname [-f known_hosts_file] ssh-keygen -r hostname [-f input_keyfile] [-g] ssh-keygen -G output_file [-v] [-b bits] [-M memory] [-S start_point] ssh-keygen -T output_file -f input_file [-v] [-a num_trials] [-W generator] ssh-keygen -s ca_key -I certificate_identity [-h] [-n principals] [-O option] [-V validity_interval] [-z serial_number] file ... ssh-keygen -L [-f input_keyfile]
鍵のタイプ
作成する鍵のタイプは、いくつかのアルゴリズムから選択できます。
環境(sshパッケージのバージョン)によって、使えるアルゴリズムが異なります。 古い環境ならDSAやRSAしか使用できないかもしれません。
SSHプロトコルバージョン1では、RSA暗号の鍵を使用できます。 SSHプロトコルバージョン2では、DSA, ECDSA, Ed25519, RSA暗号 の鍵が使用できます。
Ed25519は、OpenSSH 6.5 からサポートされました。
楕円曲線暗号 ECDSA には512ビットの鍵長は存在しない
ECDSAの鍵では、鍵長は、256, 384, 521 ビットです。
楕円曲線暗号の要件で、それぞれのビット長である楕円曲線が出てくるべきだが、それが満たせないので、512ビットの変わりに521ビットを使う、とされています。
使い方
RSAの鍵ペアの作成
鍵ペア の作成は、下記の通りです。
ssh-keygen -b 4096 -t rsa -f ~/.ssh/id_rsa.`date '+%Y-%m-%d'` -N '' -C "$USER-`date '+%Y-%m-%d'`"
パスフレーズなしの秘密鍵の作成
アプリケーションアカウント で実行する cron (バッチ) で ssh を使う場合には、パスフレーズのない秘密鍵 を利用すると、環境構築は、楽になります。 その代わり、セキュリティは低下します。
ssh-keygen -b 4096 -t rsa -f ~/.ssh/id_rsa.nopass -N '' -C "$USER-`date '+%Y-%m-%d'`"
ログインシェル に rbash や scponly を利用して、実行できるコマンドを制限したり、authorized_keys でコマンドやアクセス元などの制限を行うべきです。
詳しくは、パスフレーズのないsshの秘密鍵の作成をご参照ください。
パスフレーズを変更する
古いパスフレーズ foo から 新しい パスフレーズ bar に変更する例です。
ssh-keygen -p foo -N bar -f ~/.ssh/id_rsa
known_hostsファイルからホストを削除する
ssh-keygenコマンドを使って、sshdのホストキーをknown_hostsから削除できます。 foo.local のキーを削除したい場合は、下記の通りです。
ssh-keygen -R foo.local
下記は、実行例です。
%ssh-keygen -R foo.local /home/foo/.ssh/known_hosts updated. Original contents retained as /home/foo/.ssh/known_hosts.old
Windows を利用している場合
Windows で PuTTY を利用している場合は、 PuTTYgen で 鍵ペア を作成できます。 PuTTYgen は、PuTTY 形式の秘密鍵と OpenSSH 形式の秘密鍵 を相互に変換できます。
関連項目
- パスフレーズ
- ssh-agent
- パスフレーズのないsshの秘密鍵の作成
- ssh
- Secure Shell
- PuTTYgen
- 鍵長