githubリポジトリを自動的にダウンロードしてインストールするサーバースクリプトがあります。スクリプトの一部としてssh-keyscan -H github.com >> ~/.ssh/known_hosts
リポジトリをチェックアウトする前に、githubのRSAキーを自動的に受け入れるためにgitユーザーとして実行しています。
私はローカルvagrantインスタンスと複数のサーバーで同じスクリプトを正常に使用しました。しかし、サーバーの1つはssh-keyscan -H github.com
出力を返さないので、これはうまくいきません(gitユーザー、私の個人ユーザー、rootでこれを試しましたが、コマンドは同じように動作します)。 github.comでpingを実行できるため、接続の問題ではありません。同じネットワーク上の他のサーバーでssh-keyscanを正常に実行することもできます。これが問題であることを確認するためにSSHをアップグレードしようとしましたが、すでに私のディストリビューション(CentOS 7)の最新バージョンです。
この問題を解決するための最良の開始点はどこですか? "ssh-keyscan"に関する質問を見つけるためにStackExchangeを検索してみましたが、この特定の問題に関連するものが見つかりませんでした。
答え1
私も同じ問題がありました(出力が提供されていません)、デフォルトのタイムアウト(5秒)が短すぎるためです。私は-Tフラグを使用してこの問題を解決しました。これにより、カスタムタイムアウトを秒単位で設定できます。 240秒のタイムアウトとランダムIPアドレスを使用した例:
ssh-keyscan -T 240 52.213.86.118
答え2
ssh-keyscan -p <PORT> <IP>
SSHサーバーがデフォルトのポートで実行されていない場合は、次の手順を実行してみてください。
答え3
これは私にとってネットワークの問題のように聞こえます。
私が最初にしたことは、次のようにポート22を介してさまざまなSSHサーバーにTelnetを試すことでした。
$ telnet local-git-server 22
以下は:
$ telnet github.com 22
このコマンドを実行すると、次のような出力が表示されます。
Escape character is '^]'. SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u2
これは良い表示であり、ssh
ファイアウォールの制限なしに許可される可能性があります。
- 最終結果は何ですか
ssh-keyscan
? - あれば何を印刷しますか?
- Telnetは何秒間中断されますか?接続拒否または接続拒否応答を受信していますか?
- 実行すると、
netstat -an --tcp
SYN_SENT状態の複数のTCPエントリが表示されますか?その場合、ネットワーク層にブロックがあることを示します。
答え4
実行中に同様の問題が発生しましたssh-keyscan github.com
。タイムアウトを増やすためにカスタムフラグを追加しようとしましたが、-T
出力はありません。だから問題をデバッグするために、ssh -vvv github.com
ポート22でgithub.comに接続しました。いくつかのデバッグ情報を提供し、-vvv
最終的なコマンドはOperation timed out
。ポート22が有効になっているかどうかをISPプロバイダに問い合わせることができます。私の場合、サードパーティソフトウェア(Teamviewer)が原因でした。削除すると問題が解決しました。これは私にとって役に立つ解決策ですが、あなたの場合には他の問題があるかもしれません。