known_hostsに登録されたホストキーを変更する
で通常のknown_hostsの変更方法をメモしました。
続けてChromeをターミナルとして使えるSecure Shellというエクステンションがありますが
こいつもたまに同じ問題を起こしてくれます。
しかもメニューには消したり変更したりするものが
実装されていない様子なので調べてみました。
やっぱり同じことで困ってたかたはいらしたみたいで
で紹介されてました。
具体的な手順としては
- Secure Shellのアプリを開く
- 「Ctrl + Shift + J」とか押してJavaScriptコンソールを開く
- 全消し、もしくは特定のエントリーを削除するワンライナーをコンソールに流す
といった感じです。
全消しの場合は
term_.command.removeAllKnownHosts()
部分消しの場合は
term_.comand.removeKnownHostByIndex([消したいホストのインデックス])
を流してあげればいいんですが、
部分消しの消したいホストのインデックスってどこ見るんだよ・・・!w
って感じだったので調べてみました。
んで、以下のようにすると取得できました
lib.fs.readFile(term_.command.fileSystem_.root, '/.ssh/known_hosts', function(contents) { console.log(contents.split('\n'));})
コピペして流せばコンソールに登録されてるホストキーの配列が表示されるので
その中から消したい配列インデックスをremoveKnownHostByIndexに渡してあげるだけです。
現状だと内部はこんな感じになってました。
//removeAllKnownHosts function () { this.fileSystem_.root.getFile( '/.ssh/known_hosts', {create: false}, function(fileEntry) { fileEntry.remove(function() {}) }); } //removeKnownHostByIndex function (index) { var onError = lib.fs.log('Error accessing /.ssh/known_hosts'); var self = this; lib.fs.readFile( self.fileSystem_.root, '/.ssh/known_hosts', function(contents) { var ary = contents.split('\n'); ary.splice(index - 1, 1); lib.fs.overwriteFile(self.fileSystem_.root, '/.ssh/known_hosts', ary.join('\n'), lib.fs.log('done'), onError); }, onError); }
ではでは〜