出版

Linux シェル スクリプトが SSH フィンガープリントによって妨害される場合は、この簡潔なチュートリアルに従って簡単な解決策を見つけてください。
データセンター内のすべてのLinuxサーバーの稼働状況をスキャンするbashスクリプトを作成したとします。このファイルには、次のような内容が含まれます。
ssh $1 "uptime"
スクリプトを実行すると、SSHキーのフィンガープリントがknown_hostsファイルにまだ追加されていないサーバーによってスクリプトが停止されるという問題が発生する可能性があります。この場合、スクリプトは役に立たなくなります。
参照: Linux、macOS、Windows で SSH キーを表示する方法 (TechRepublic)
SSHキーのフィンガープリント
SSHキーのフィンガープリントとは何でしょうか?簡単です。SSHを使ってリモートコンピュータにログインしようとすると、キーのフィンガープリントが検証されます。SSHサーバーに初めてログインすると、以下のような画面が表示されます。

フィンガープリントを受け入れないと、接続は即座に切断されます。では、リモートSSHフィンガープリントの追加を承認するための入力を受け付けないbashスクリプトを使っている場合はどうなるでしょうか?
幸いなことに、SSH の開発者はこれを考慮し、known_hosts ファイルに SSH フィンガープリントを簡単に追加できるコマンドを追加しました。
参照: 2つの簡単なコマンドでSSHキーを作成およびコピーする方法 (TechRepublic)
指紋を追加する
リモートサーバーからローカルマシンにフィンガープリントを追加する方法を説明します。リモートサーバーのIPアドレスが192.168.1.162だとします。このフィンガープリントを追加するには、以下のコマンドを実行します。
ssh-keyscan -H 192.168.1.162 >> ~/.ssh/known_hosts
以下に示すように、コマンドが実行され、ユーザーの入力なしでリモート SSH フィンガープリントがローカル マシンに追加されます。

したがって、bash スクリプトへの追加は次のようになります。
ssh-keyscan $1 >> ~/.ssh/known_hosts
上記の追加により、コマンドの引数(例えば ./script 192.168.1.118)を取得し、次の行に進む前に~/.ssh/known_hostsにフィンガープリントを追加します。これにより、SSHフィンガープリントが見つからないという問題を回避できます。もちろん、上記の方法はSSH鍵認証が設定されている場合にのみ正しく機能します。そうでない場合は、リモートマシンのパスワードを入力する必要があります。
参照: SSH でリモートディレクトリをマウントする方法 (TechRepublic)
シンプルなもの
時々、bashスクリプトで問題が発生する原因は、単純なことかもしれません。もしキーフィンガープリントの問題がスクリプト作成の悩みの種になっているなら、これで問題を回避できます。
こちらもご覧ください
- Linuxでサービスを開始、停止、再起動する方法
- Linux CentOSの代替オプションと代替品ベスト5
- Linux のトラブルシューティング: 管理者向けガイド
- 採用キット: Linux管理者
- Linux、Android、その他のオープンソース技術の報道

ジャック・ウォーレン
ジャック・ウォーレンは、TechRepublic、The New Stack、Linux New Mediaなどで受賞歴のあるライターです。20年以上にわたり様々なトピックを執筆し、オープンソースの熱心な推進者でもあります。ジャック・ウォーレンに関する詳細は、ウェブサイトjackwallen.comをご覧ください。