Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
sshの自動運転
[go: Go Back, main page]

[top][その他のドキュメント]

sshの自動運転

sshの自動運転

正しいssh/scpの自動運転は:

が正解(現時点では)。

必要最小限の作業に制限する方法としては、

とかって方法が考えられる。さらに、どうしても必要最小限のコマンドに制限 できない場合は、接続元のホストを制限した上で接続元ホストの方を守るのと、 実行されたコマンドのログをacct等で確実に取る(必要ならアラートも飛ぶよ うにする)。

あと、意外に多い誤解が、「パスフレーズなしの秘密鍵は(パスワード認証に おける)パスワードなしと同じくらい危険」とか、「秘密鍵のパスフレーズを 変更すると、公開鍵も変化する(公開鍵の設定しなおしが必要)」とかって誤解 な。

秘密鍵のパスフレーズは秘密鍵ファイルを暗号化してるだけのもんです。暗号 化された秘密鍵をパスフレーズつかってデコードする処理は、完全にローカル で行なわれて、リモートのサーバには丸っきり関係がない。逆に言うと秘密鍵 ファイルを悪者に盗まれてしまったら、たとえパスフレーズが設定されていて も、↑のCrackみたいなオフライン攻撃が可能、つまり悪者は手に入れた秘密 鍵をどっか別の安心して作業ができるマシンでじっくり辞書攻撃なり総当り攻 撃なり使ってパスフレーズを探すことができる。

なので、「秘密鍵を他人に渡さない」ということの方が、パスフレーズを設定 することよりも遥かに重要。パスフレーズはいざという時の時間稼ぎでしかな い。

それが分かれば、ssh-agentやkeychain使うより、いさぎよくパスフレーズな しにしちゃった方がいいってのも分かると思う(自動運転の場合ね)。だって、 適切なパーミッションが設定されている秘密鍵ファイルを盗める人間(rootと か)なら、常駐しているssh-agent/keychainも乗っ取れるでしょ。パスフレー ズ設定してる意味がない。「なんかの拍子にssh-agentのプロセスが死んじゃっ てて(めったにないけど)、自動運転に失敗した」とか、「サーバをリブートす るたびに、パスフレーズ入力してssh-agent起動しないといけない(運用担当者 全員にパスフレーズ教えないといけない)」とかって、余計な手間が増えるだ け。

そんなことにいらん手間かけるぐらいなら、秘密鍵が盗まれちゃった場合でも 被害が最小限で済むように(↑で書いたような実行可能なコマンドの制限等の 対策を)がんばった方がいい。