だから、SSHの代替ポートがあるとき、それはこの形式のIPアドレスの一部としてknown_hostsファイルに格納されていることが判明した:
[${WPCS_IP}]:WPCS_PT
仕事にif文のためにということを意味し、どの、それはこのように見える必要があります:私は正しい方向に進んで取得するためのalvitsへ
if ! ssh-keygen -F "[${wPCS_IP}]:${WPCS_PT}" -f ~/.ssh/known_hosts > /dev/null 2>&1; then ssh-keyscan -p ${wPCS_PT} ${wPCS-IP} >> ~/.ssh/known_hosts; fi
おかげで...
更新:それはUbuntuの16.04 encrypが判明しますリモートホストのIPアドレスです(ポートではありません)。私はまだこの違いに適応する方法を理解しようとしています。
別のアップデート:-Hオプションが失敗していることが判明しました。キーをハッシュしたら、それはもう見つけられません。これは、Ubuntuの14.04で動作します:
if ! ssh-keygen -F ${IP_ADDR} -f ~/.ssh/known_hosts > /dev/null 2>&1; then ssh-keyscan -p ${PORT} ${IP_ADDR} >> ~/.ssh/known_hosts; fi
# IP_ADDR SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1
# IP_ADDR SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1
if ! ssh-keygen -F ${IP_ADDR} -f ~/.ssh/known_hosts > /dev/null 2>&1; then ssh-keyscan -p ${PORT} ${IP_ADDR} >> ~/.ssh/known_hosts; fi
あなたは文がキースキャンデータを生成し、キースキャンデータが正確であるため、2番目にはない、しかし、あなたは-Hを追加した場合、keygenのは検出されない場合は、最初のことを見ることができますハッシュ化されたキーのエントリ...しかし
、Ubuntuの16.04で動作するようなコマンドを取得するには、変更する必要がある場合:
if ! ssh-keygen -F [${IP_ADDR}]:${PORT} -f ~/.ssh/known_hosts > /dev/null 2>&1; then ssh-keyscan -p ${PORT} ${IP_ADDR} >> ~/.ssh/known_hosts; fi
# IP_ADDR:PORT SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.8
# IP_ADDR:PORT SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.8
# IP_ADDR:PORT SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.8
if ! ssh-keygen -F [${IP_ADDR}]:${PORT} -f ~/.ssh/known_hosts > /dev/null 2>&1; then ssh-keyscan -p ${PORT} ${IP_ADDR} >> ~/.ssh/known_hosts; fi
この場合、known_hostsファイルにはポートを含める必要があります。.. 。
-Hもここにあります。 ifは、-Hで生成されたキーを見つけられません。
動作がバージョンによって異なり、最も安全なバージョンのハッシュが機能しないことは苛烈です。
もう1つの編集:リモートサーバがsshd_configの非標準ポートを使用する場合、known_hostsにポートが指定されている可能性があります。これは予想される動作である可能性があります。
'known_hosts'ファイルがどこにあるかを' ssh-keygen'に伝えてみてください。より良いアプローチは 'もし! ssh-keygen -F $ {wPCS_IP} -f〜/ .ssh /既知のホスト>/dev/null 2>&1;次に、ssh-keyscan -p $ {wPCS_PT} $ {wPCS-IP} >>〜/ .ssh/known_hostsを入力します。 fi'。 – alvits
返事をありがとう。私はあなたのコマンドをそのまま使用し、同じ結果を生み出しました。これはknown_hostsに必要な行を追加しますが、再度実行するとknown_hostsファイルのホストは検出されず、再度生成されます。 – Raydude
Ubuntu 16.04サーバでは、known_hostsファイルにリモートマシンのポート番号が表示されます。私はポートが何らかの形でssh-keygen -Fが動作するように指定する必要があるのだろうか? – Raydude