home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

技術/Security/SSH (v1)

技術/Security/SSH (v1)

技術 / Security / SSH (v1)
id: 1221 所有者: msakamoto-sf    作成日: 2013-07-27 15:37:39
カテゴリ: SSH セキュリティ 

SSHの使い方のメモ書き。

日記から:


~/.ssh 以下のパーミッション

基本的にownerしか読み書き出来ないようにしておく。OpenSSHのバージョンや設定によっては、owner以外にrとかxが許可されてるとエラーになって接続出来なかったりするっぽい。

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys

ssh-keygenのメモ

ssh-keygenで個人的に気になる点をメモ。

"-t" では何を指定すれば良いのか?

ぐぐってみると、記事によっては "-t dsa" を指定したり "-t rsa" を指定してる。
SSHのプロトコルバージョンと、RSAの特許の有効期限に関連してバリエーションが出来ている。

SSHプロトコルバージョン1用には、"-t rsa1"を使う。
ただし、RSAの特許の問題もあり、SSHプロトコルバージョン2ではDSAがサポートされた。
→DSAを使う場合は "-t dsa" を指定する。
2000年になりRSAの特許の有効期限が切れた・・・らしい。そのため、以降のOpenSSHでは、SSHプロトコルバージョン2用として "-t rsa" をサポートして、RSAを使えるようになった。

DSAはあくまでも"Digital Signature Algorithm"であり、電子署名に使われることを想定していた。暗号化に使うことは想定していなかった・・・らしい・・・。後にDSAを暗号化に使う方法が出てきたが、速度が遅いとかナントカ。
なので、2013年の今となっては、SSHプロトコルバージョン2用のRSAとして "-t rsa" を選択するのが無難。

※RSA/DSAの仕様や、それらがどうSSHプロトコルに関連するのか、SSHプロトコルの中身など自分で調べず、下記参考資料からの抜き書きでまとめてますので、正確性は保証出来ません・・・。

参考1(2005年以降とかわりと新しいWebページ):

参考2(2001 - 2003年ごろのリソース):

生成する秘密鍵・公開鍵のファイル名を変更したい

→秘密鍵のファイル名を "-f" で指定する。公開鍵のファイル名は指定できない(多分)。公開鍵のファイル名は、秘密鍵のファイル名の後ろに ".pub" が追加される。

$ ssh-keygen.exe -t rsa -f abc
-> 現在ディレクトリに "abc"(秘密鍵), "abc.pub"(公開鍵)が生成される。

鍵ファイルのフォーマットについて

ssh-keygenで生成される鍵ファイル("-t rsa"の場合):
秘密鍵:(多分PKCS8かPEM形式のどちらかかと・・・)

-----BEGIN RSA PRIVATE KEY-----
AAAAAAAAAAAAAAAAAAA....
...
AAAAAA....AAAA
-----END RSA PRIVATE KEY-----

公開鍵:→そのまま、"~/.ssh/authorized_keys" に追加できる形式になっている。

ssh-rsa AA.....AAA user@host

また、ssh-keygenの"-i", "-e"オプションでは、読み込む鍵ファイルのフォーマットを "-m" オプションで 'RFC4716', 'PKCS8', 'PEM' のどれかを指定出来ます。

"-e" : 他のSSH実装で生成された秘密鍵・公開鍵ファイルをOpenSSHのフォーマットに変換
"-i" : 公開鍵や、暗号化されていない秘密鍵ファイルを読み込んでOpenSSHのフォーマットに変換

※ただ、今の自分の知識ではどれがどう異なるのか良くわかりません・・・。特にPKCS8とPEMの違いが理解不能。

参考:

秘密鍵のパスフレーズを思い出すために入力して確認したい、あるいは秘密鍵からもう一度公開鍵(authorized_keys用)を生成したい

"ssh-keygen -y" を使うと便利です。他にもOpenSSLコマンドを使う手法もあるようです。

-y  This option will read a private OpenSSH format file and print an OpenSSH public key to stdout.
$ ssh-keygen -y -f 秘密鍵ファイル名
Enter passphrase:(パスフレーズ入力)
→"ssh-rsa AAA...AAA" というように公開鍵が出力されます。

authorized_keysに追加するには、さらに行末にコメントを追加しておきます。

ex: "ssh-rsa AAA...AAA this_is_repaired_public_key"

パスフレーズを設定していない秘密鍵を指定した場合は、パスフレーズの入力なしでいきなり公開鍵が出力されます。

参考:

秘密鍵をパスフレーズ無しにしたい、あるいはパスフレーズ無しの秘密鍵にパスフレーズを設定したい

$ ssh-keygen -p -f 秘密鍵ファイル名

→新しいパスフレーズを聞かれるので、何も入力しなければパスフレーズ無しに、パスフレーズを入力すればパスフレーズ有りになります。

注意点:秘密鍵ファイルは 上書き保存される ため、もし不安であればバックアップをとって置くと良いでしょう。

ホスト毎に秘密鍵を使い分けたくなったら、"~/.ssh/config" を活用しよう!

"~/.ssh/config":


# "ssh myserv1" == "ssh -i .ssh/server1_private_key -p 2222 user01@myserv1.example.com"
Host myserv1
  HostName myserv1.example.com
  Port 2222
  User user01
  IdentityFile .ssh/server1_private_key

# for GitHub ssh user
Host github.com
  HostName github.com
  User git
  IdentityFile .ssh/git_private_key

参考:

PuTTY系とOpenSSH系を併用する場合の鍵ファイルのフォーマットについて

PuTTY、TortoiseXXX系のツール、WinSCPなどで提供されている "puttygen.exe" で生成した秘密鍵・公開鍵ファイルは、OpenSSHで生成したものとはフォーマットが違うため、変換が必要です。
puttygen.exeを起動して、"Conversions"メニューから"Import Key"をクリックし、 puttygen.exeで生成した秘密鍵を選択すると 、秘密鍵を読み込み公開鍵情報やコメント情報を表示してくれます。その後、"Conversions"メニューから"Export OpenSSH Key"とすればOpenSSH形式の 秘密鍵ファイルに 変換出来ます。
OpenSSH形式の = "authorized_keys"にそのまま追加出来る形式の公開鍵ファイルには変換してくれませんので、puttygen上で表示された公開鍵情報を手動でコピペすることになります。といっても、

ssh-rsa (ここにputtygenでインポートして表示された公開鍵の文字列を1行にしてコピペ) comment

という形式でauthorized_keysに書き込めば終わりです。

なお、authorized_keysを編集する場合は、一旦保存した後、ターミナルソフトの画面幅を変えてもう一度表示して見ることをおすすめします。時々コピペした時に改行が混ざってたりして、それらの消し忘れを画面幅を変えて折り返しを変えることで確認します。

参考:



プレーンテキスト形式でダウンロード
表示中のバージョン : 1
現在のバージョン : 3
更新者: msakamoto-sf
更新日: 2014-05-06 15:51:19
md5:4967cd8921822a489782d5c47670bdb8
sha1:d0a216bb52782830f5ae5e74046ad40d93068cbe
コメント
コメントを投稿するにはログインして下さい。