公開鍵の生成について
- フォーラムは新サイトへ移行しました。
- このフォーラムではゲスト投稿が禁止されています
公開鍵の生成について
msg# 1
fujii0401
投稿数: 23
公開鍵の生成について質問があります
例えばバッシュファイルについて他のサーバーにファイルをSCPコマンドを使ってコピーするようなスクリプトをつくったとします
そして定期的に動かすためにcrontabで処理を登録しました
しかし公開鍵が必要となるのでこのままではファイアウォールにはじかれるそこで新たに公開鍵を作りその公開鍵をサーバー側に登録しました
公開鍵を作成しようと打ったコマンドは
「 ssh-keygen 」ですオプション等は使用していません
そして
command = scp -t ・・・・という
コマンドをサーバーの公開鍵に追加して登録しましたがうまくいきませんでした
つまり何がしたかったかというと
sshで指定したコマンドしか実行できない公開鍵を作ろうとして
command="実行させたいコマンド"
をサーバー側の公開鍵に追加したのですが
うまくいきません
ネットで調べたところ
公開鍵を作るときに
ssh-keygen -t rsa
とオプションを加える必要があるみたいです
確かにうまくいきました
これらの設定で定期的なジョブであるceontabにどう影響を当てえているのかよくわかりません
きちんと公開鍵とコマンドが連携できているのでしょうか?
なぜ自動認証用の公開鍵にcommmandと打つのではうまくいかないのか
よくわかりません
どなたか教えてください
例えばバッシュファイルについて他のサーバーにファイルをSCPコマンドを使ってコピーするようなスクリプトをつくったとします
そして定期的に動かすためにcrontabで処理を登録しました
しかし公開鍵が必要となるのでこのままではファイアウォールにはじかれるそこで新たに公開鍵を作りその公開鍵をサーバー側に登録しました
公開鍵を作成しようと打ったコマンドは
「 ssh-keygen 」ですオプション等は使用していません
そして
command = scp -t ・・・・という
コマンドをサーバーの公開鍵に追加して登録しましたがうまくいきませんでした
つまり何がしたかったかというと
sshで指定したコマンドしか実行できない公開鍵を作ろうとして
command="実行させたいコマンド"
をサーバー側の公開鍵に追加したのですが
うまくいきません
ネットで調べたところ
公開鍵を作るときに
ssh-keygen -t rsa
とオプションを加える必要があるみたいです
確かにうまくいきました
これらの設定で定期的なジョブであるceontabにどう影響を当てえているのかよくわかりません
きちんと公開鍵とコマンドが連携できているのでしょうか?
なぜ自動認証用の公開鍵にcommmandと打つのではうまくいかないのか
よくわかりません
どなたか教えてください
Re: 公開鍵の生成について
msg# 1.1
xsdy0901
投稿数: 20
まず、状況を確認させてください。
多分に想像を含むのですが、
↓
ということでしょうか。。。?
多分に想像を含むのですが、
1) ssh-keygen をオプション無しで実行し、公開鍵/秘密鍵のペアを作成
[サーバ側]
2) 公開鍵をサーバ上の適切なディレクトリに配置
3) 用途を scp を通じたファイル受信に制限するために、公開鍵の先頭に
command="scp -t <保存先ディレクトリパス>" を追加
[クライアント側]
4) 秘密鍵を適切なディレクトリに配置
5) サーバに scp でファイル送信を行うBASHスクリプトを準備
6) BASHスクリプトを cron に登録して定期実行させてみたが、動作しなかった
1) において ssh-keygen -t rsa と鍵形式を明示指定した形で鍵ペアを作りなおし、
同様の手順をやりなおしたところうまくいくようになった
ということでしょうか。。。?
Re: 公開鍵の生成について
msg# 1.2
xsdy0901
投稿数: 20
もし仮に、ssh-keygen において "-t rsa" を指定する/しないことが
原因であるならば、素直に考えて、出力される鍵フォーマットが
オプションの有無によって異なっているのではないでしょうか。
原因を探るために、下記確認をお願いします
原因であるならば、素直に考えて、出力される鍵フォーマットが
オプションの有無によって異なっているのではないでしょうか。
原因を探るために、下記確認をお願いします
・クライアント / サーバの OS およびバージョン (CentOS 7.2 等)
・man ssh-keygen を確認 → "-t rsa" を指定しない際のデフォルト鍵形式は何か
・実際に "-t rsa" を指定した/しなかった 鍵同士を cat や less で覗いてみて、
明らかなフォーマットの違いがないかどうか
Re: Re: 公開鍵の生成について
msg# 1.1.1
fujii0401
投稿数: 23
はい
その通りです
その通りです
Re: Re: 公開鍵の生成について
msg# 1.2.1
fujii0401
投稿数: 23
クライアント/サーバー両社とも:centos7.0 x86_64です
"-t rsa" を指定しない際のデフォルト鍵形式を作るにあたり
指定がないものはプロトコルのバージョンの1
指定がるものはプロトコルのバージョンの2
で作成するという説明がマニュアルにありました
実際に -t rsa を指定したものとそうでないものの公開鍵を見たところ二つとも ssh-rsa という接頭語がついているのでタイプはrsaだと思います
明らかなフォーマットの違いがあるようには思えません
ただし秘密鍵を見たところ
"-t rsa"の指定をしたものを確認すると
"proc-Type:4,ENCRYOTED
DEK-INfo"
という表記があり
"-t rsa"の指定がないものを確認すると
その表記がなかったです
"-t rsa" を指定しない際のデフォルト鍵形式を作るにあたり
指定がないものはプロトコルのバージョンの1
指定がるものはプロトコルのバージョンの2
で作成するという説明がマニュアルにありました
実際に -t rsa を指定したものとそうでないものの公開鍵を見たところ二つとも ssh-rsa という接頭語がついているのでタイプはrsaだと思います
明らかなフォーマットの違いがあるようには思えません
ただし秘密鍵を見たところ
"-t rsa"の指定をしたものを確認すると
"proc-Type:4,ENCRYOTED
DEK-INfo"
という表記があり
"-t rsa"の指定がないものを確認すると
その表記がなかったです
Re: 公開鍵の生成について
msg# 1.2.1.1
xsdy0901
投稿数: 20
引用:ENCRYPTEDのことだと思いますが、この場合は秘密鍵にパスフレーズが設定されているということになります。
・「-t rsa を指定する/しない いずれの場合も、パスフレーズは設定しており、その他はデフォルト」
という理解でよろしいでしょうか。
・その上で、秘密鍵のフォーマットは下記のようになっている様子でしょうか。
# -t rsa 指定なし / パスフレーズ設定
↑OpenSSH形式
# -t rsa 指定あり / パスフレーズ設定
↑PEM形式
私の環境 (OpenSSH_8.0p1, OpenSSL 1.1.1b) では、
-t rsa はつけてもつけなくても共に上の "OpenSSH形式" が出力され、
-m PEM オプションを追加したときだけ下の "PEM形式" で出力されます。
(OpenSSH 7.8 からデフォルトの動作仕様が変更になっています)
かなり環境に違いがありそうですので、追加で
の確認もお願いします。
"proc-Type:4,ENCRYOTED
DEK-INfo"
・「-t rsa を指定する/しない いずれの場合も、パスフレーズは設定しており、その他はデフォルト」
という理解でよろしいでしょうか。
・その上で、秘密鍵のフォーマットは下記のようになっている様子でしょうか。
# -t rsa 指定なし / パスフレーズ設定
※↓ここの文字列をよく確認してください
-----BEGIN OPENSSH PRIVATE KEY-----
…
-----END OPENSSH PRIVATE KEY-----
# -t rsa 指定あり / パスフレーズ設定
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC, ...
…
-----END RSA PRIVATE KEY-----
私の環境 (OpenSSH_8.0p1, OpenSSL 1.1.1b) では、
-t rsa はつけてもつけなくても共に上の "OpenSSH形式" が出力され、
-m PEM オプションを追加したときだけ下の "PEM形式" で出力されます。
(OpenSSH 7.8 からデフォルトの動作仕様が変更になっています)
かなり環境に違いがありそうですので、追加で
$ ssh -V
$ openssl version
Re: Re: 公開鍵の生成について
msg# 1.2.1.1.1
fujii0401
投稿数: 23
「-t rsa を指定する/しない いずれの場合も、パスフレーズは設定しており、その他はデフォルト」
すいません一度
パスフレーズの有で行っていたものを消したので
-t rsa を指定していないものはパスフレーズを指定し
-t rsa を指定したものはパスフレーズを指定していません
改めて
秘密鍵のフォーマットを確認すると
「-t rsa 指定なし / パスフレーズ設定」 の場合
秘密鍵を確認すると
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC, ...
…
-----END RSA PRIVATE KEY-----
の表記でした
一方
「-t rsa を追加しパスフレーズを設定した」
秘密鍵のフォーマットは
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC, ...
…
-----END RSA PRIVATE KEY-----
つまり変わらなかったです
$ssh -V
を実行しましたところ以下のように表示されました
OoenSSH_6.4p1, OpenSSL 1.0.1e-fips 11 feb 2013
$openssl | version
を実行すると以下のように表示されました
OpenSSL 1.0.1e-fips 11 feb 2013
すいません一度
パスフレーズの有で行っていたものを消したので
-t rsa を指定していないものはパスフレーズを指定し
-t rsa を指定したものはパスフレーズを指定していません
改めて
秘密鍵のフォーマットを確認すると
「-t rsa 指定なし / パスフレーズ設定」 の場合
秘密鍵を確認すると
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC, ...
…
-----END RSA PRIVATE KEY-----
の表記でした
一方
「-t rsa を追加しパスフレーズを設定した」
秘密鍵のフォーマットは
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC, ...
…
-----END RSA PRIVATE KEY-----
つまり変わらなかったです
$ssh -V
を実行しましたところ以下のように表示されました
OoenSSH_6.4p1, OpenSSL 1.0.1e-fips 11 feb 2013
$openssl | version
を実行すると以下のように表示されました
OpenSSL 1.0.1e-fips 11 feb 2013
Re: Re: 公開鍵の生成について
msg# 1.2.1.1.1.1
xsdy0901
投稿数: 20
引用:
ありがとうございます。かなり昔のバージョンですね。
からOpenSSH_6.4p1 パッケージをダウンロードし、ssh-keygen.1 を確認してみました。
以上より、-t rsa を指定する/指定しない にかかわらず SSH protocol version 2 用のRSA鍵が生成されるようですので、man を見る限りでは "-t rsa" の有無によって動作が変わるとは少し考えにくいです。
もし仮に「"-t rsa1" を指定して作成した鍵で成功した」ということでしたら、単純にSSHサーバ側が SSH protocol version 1 にしか対応していないため、と結論づけることができたのですが…。
ただ、引用:と伺っていましたので、もしこの内容に間違いが無いのであれば話は反対で
「SSHサーバ側が SSH protocol version 2 にしか対応しておらず、ssh-keygen デフォルトでは version 1 が生成されるため」と結論づけることができます。
ですので、まずは上記記載のあるマニュアルの該当箇所を再度ご確認頂き、可能であればこちらに貼り付けてください。
またもう一度、改めてすべての条件を丁寧に検証してみることをお勧めします。
この6パターンですね。
他にも確認すべき点はたくさんありますが、まずは上記のとおり、マニュアルと実験結果の確認からでしょうかね。
$ssh -V
を実行しましたところ以下のように表示されました
OoenSSH_6.4p1, OpenSSL 1.0.1e-fips 11 feb 2013
ありがとうございます。かなり昔のバージョンですね。
https://ftp.riken.jp/pub/OpenBSD/OpenSSH/portable/openssh-6.4p1.tar.gz
DESCRIPTION
ssh-keygen can create RSA keys for use by SSH protocol version 1 and DSA,
ECDSA or RSA keys for use by SSH prtocol version 2.
The type of key to be generated is specified with the -t option.
If invoked without any arguments, ssh-keygen will generate an RSA key
for use in SSH protocol 2 connections.
-t type
Specifies the type of key to create.
The possible values are“rsa1” for protocol version 1
and “dsa”, “ecdsa” or “rsa” for protocol version 2.
以上より、-t rsa を指定する/指定しない にかかわらず SSH protocol version 2 用のRSA鍵が生成されるようですので、man を見る限りでは "-t rsa" の有無によって動作が変わるとは少し考えにくいです。
もし仮に「"-t rsa1" を指定して作成した鍵で成功した」ということでしたら、単純にSSHサーバ側が SSH protocol version 1 にしか対応していないため、と結論づけることができたのですが…。
ただ、引用:
"-t rsa" を指定しない際のデフォルト鍵形式を作るにあたり
指定がないものはプロトコルのバージョンの1
指定がるものはプロトコルのバージョンの2
で作成するという説明がマニュアルにありました
「SSHサーバ側が SSH protocol version 2 にしか対応しておらず、ssh-keygen デフォルトでは version 1 が生成されるため」と結論づけることができます。
ですので、まずは上記記載のあるマニュアルの該当箇所を再度ご確認頂き、可能であればこちらに貼り付けてください。
またもう一度、改めてすべての条件を丁寧に検証してみることをお勧めします。
1 BASHスクりプト単体で実行
1-1: デフォルト
1-2: -t rsa 指定
1-3: -t rsa1 指定
2 上記をCRON経由で実行
2-1: デフォルト
2-2: -t rsa 指定
2-3: -t rsa1 指定
他にも確認すべき点はたくさんありますが、まずは上記のとおり、マニュアルと実験結果の確認からでしょうかね。