ChromeのSecure Shellでknown_hostsに登録されたホストキーを変更

known_hostsに登録されたホストキーを変更する
で通常のknown_hostsの変更方法をメモしました。
続けてChromeをターミナルとして使えるSecure Shellというエクステンションがありますが
こいつもたまに同じ問題を起こしてくれます。

しかもメニューには消したり変更したりするものが
実装されていない様子なので調べてみました。

やっぱり同じことで困ってたかたはいらしたみたいで

で紹介されてました。

具体的な手順としては

  1. Secure Shellのアプリを開く
  2. 「Ctrl + Shift + J」とか押してJavaScriptコンソールを開く
  3. 全消し、もしくは特定のエントリーを削除するワンライナーをコンソールに流す

といった感じです。

全消しの場合は

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);
}

ではでは〜

コメント