私はSFTPとしてlibcurlを使用しています。ホストファイルに存在する場合、接続しようとしているホストを確認したい。 Linuxでは、ほとんどの場合~/.ssh/known_hosts
にあるため、既知のホストファイルを簡単に見つけることができます。 Windowsが同じものを維持しているか、そのようなファイルがWindowsのどこに常駐するかに関する標準がないかどうかを知りたいと思いました。
~/.ssh/known_hosts
は、OpenSSHで使用される* nixパスです。 ~
は、/etc/passwd
ファイルで指定されているアカウントのホームディレクトリに解決されます。ホームのデフォルトは/home/username
フォルダーです。
OpenSSHはLinuxソフトウェアです。 Windowsだけでは動作しません。
Windowsの* nixエミュレーションで実行できますが、OpenSSHのWindowsクローンもあります。結局のところ、あなたの質問は、Windowsサーバーで実行しているエミュレーションまたはクローンと、それが~/.ssh/known_hosts
へのアクセスをどのようにマップ/再実装するかについてです。
Win32-OpenSSH (MicrosoftによるOpenSSHのWindowsクローン):Windowsアカウントプロファイルフォルダーに移動します。つまり通常はC:\Users\username\.ssh
に変更します。
Win32-OpenSSHでのSSH公開鍵認証の設定 の私のガイドも参照してください。
Cygwinエミュレーター :私のインストールでは、* nixのようなパスはすべて実際にはC:\cygwin64
(32ビットではC:\cygwin
)に格納されています。
したがって、/home/username/.ssh/known_hosts
はC:\cygwin64\home\username\.ssh\known_hosts
にあります。
Windows SSHクライアントは通常、known_hosts
を使用しないことに注意してください。ホストキーキャッシュ/ストレージが異なります。
たとえば、広く使用されているWindows SSHクライアントであるPuTTYは、WindowsレジストリへのホストキーをHKCU\Software\SimonTatham\PuTTY\SshHostKeys
キーに格納します。詳細については、 answer by @aneesh を参照してください。
覗く ~\Users\~\AppData\Roaming\_ssh\known_hosts
。
参照: http://comments.gmane.org/gmane.comp.web.curl.general/1259
Libcurlについてはよくわかりません。しかし、PuTTYユーザーにとっては、PuTTYがWARNING: Server public key has changed
などの警告をスローする場合に役立つ可能性があります。したがって、PuTTYのknown_hostsのウィンドウにはSshHostKeysがあります。
HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys
の場所に保存されます。その場所に到達するにはRegistry Editor
が使用されることになっています。
regedit
を探し始めるHKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys
の場所に移動- locationWARNING: Server public key has changed
という警告が表示された場合は、レジストリ値を削除しますSshHostKeys
ファイルの内容を確認できますREG QUERY HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys
そして、キャッシュがクリアされます。その特定のエントリのすべてが再び新しい