CyberduckでSFTP接続するとExhausted available authentication methods.

Exhausted available authentication methods. Please contact your web hosting service provider for assistance. Please contact your web hosting service

MacのCyberduckでSFTP接続すると上記のエラーが表示された。
コンソールからSSH接続すると正常にログインができる。

原因

2つ原因があった。
1. 調べるとログイン失敗多数によりアカウントロックや.sshフォルダや公開鍵の権限が誤りなどの情報があったが、自分の場合はキーチェーンに誤ったパスフレーズを登録してしまっていて、それが原因で接続できない(厳密にはパスフレーズが誤り)だった。「# cat /var/log/secure」に情報が載ってこなかったのでおかしいなとは思った。
2. キーチェーンに同一URLに対して、複数のアカウントのパスワードをキーチェーンに登録していたため、異なるアカウントが先に認証が走ってしまっていた。

対応

キーチェーンに登録したパスフレーズを削除(自分の場合は、xx.xx.xx.xxというサーバIPに対して、Aアカウント、Bアカウントと2つキーチェーンに登録していたため、それら2つを削除)して再接続したら直った。
キーチェーンは、Macの ユーティリティ > キーチェーンアクセス.app で該当するURLやIPアドレスを選択して削除すればOK。
GitHubのSSH接続の時も誤ったパスフレーズ登録&複数アカウント登録していて、それに気づかずにハマった。SSHのパスフレーズやアカウントパスワードがどうやっても正しい場合は、キーチェーンを削除(同一URLが複数あった場合は全て削除)してみると改善するかもしれない。

GitHub+SourceTreeで複数アカウント設定

会社用リポジトリとプラベート用リポジトリで、複数アカウントをGitHub連携できなかったため、そのメモ。

仕組み

  • GItHubのURLごと(ドメイン+サブドメインの組み合わせごと)にパスワードがCredentialsという名前でキーチェーンに保存される
  • キーチェーンは アプリケーション > ユーティリティ > キーチェーン > (ログインメニュー選択)GitHub Credentials で存在を確認できる
  • しかし、GitHubはドメインのスラッシュ以下にアカウント名が含まれているため、Credentialsが複数アカウントごとに作成されない。例えば以下2つのリポジトリは1つしかCredentialsが作成できない。

対応方法

OAuthのアカウント連携をした上で、リポジトリURL「github.com」の前に「アカウント名@」を含めてSourceTreeに設定する。

  • 256haxがGitHubアカウント名だった場合 → https://256hax@github.com/256hax/tanebox.git
  • tarou-yamadaがGitHubアカウント名だった場合 → https://tarou-yamada@github.com/hanami/hanami.git

    もしすでにキーチェーンを作成している場合

    キーチェーンにある該当の「GitHub Credentials」を削除して、上記の「対応方法」を再度設定する必要がある。一度作成されてしまっているとうまくアカウントが分けられない。

    よくある症状

    アカウントがうまく分けられていないと、プッシュした時に「Pushing to [リポジトリ名]」のままで永遠に終わらない ← これはアカウント認証が通らないことが原因。2つアカウントがあったとして、どちらか一方のリポジトリのプッシュは成功するが、もう一方は成功しない(Pushing toが終わらない)という症状がでる

    参考サイト

    GitHubの複数アカウントを使い分けるならSSHよりhttpsの方がいいんじゃね?という話

    Written with StackEdit.

    MacでYarn+Vue.js+Webpack

    YarnのインストールからVue.jsの表示までのメモ

    インストール手順

    今後はnpmの代わりにYarnで管理していけるため、npm経由ではなく、Yarnをインストールする。もしエラー出たら、npmでYarnをインストールも可能。

    $ brew install yarn
    

    フォルダを適当に作って移動する。

    $ mkdir sample
    $ cd sample
    

    Yarnでpackge.json作る。いろいろ聞かれるが、これはEnter連打でOK。

    $ yarn init
    

    Vue.jsをYarn経由でインストールする。Vue.jsをコマンドラインでいろいろ実行する必要があるため、最初にvue-cliをインストールする。(インストールしていないと、vue-cliをインストールしろとエラーメッセージで教えてくれるため、インストールし忘れても後で気づくことができる。)

    $ yarn add vue-cli
    $ yarn vue init webpack my-project
    

    Vue.jsプロジェクト用にフォルダ作って移動する。

    $ mkdir my-project
    $ cd my-project
    

    Yarnを起動して、コンパイルが終わったらURL「http://localhost:8080」にアクセスする。

    $ yarn start
    

    参考URL

    Written with StackEdit.

    ローカルのファイル群をSourceTree経由でGithHubに初めてコミットする

    作成していたアプリはBitBucketと連携してprivateリポジトリで運用していたが、GitHubに公開することにしたため、その時の手順メモ。すでにローカルに作業中のファイルがあると、リモートリポジトリ(GitHub)からクローンできないため(空フォルダじゃないと怒られる)、ローカルのファイルをリモートリポジトリにアップする方法を記載。
    (強引なやり方な気がするため、仕事で管理しているものは、社内の識者に確認された方がよいです。)

    手順

    ローカルで作業中のファイル群(プロジェクトフォルダ)があり、SourceTreeをすでに使っている想定で記載。

    1. GitHubでアカウント登録する

    2. GitHubで新規にリポジトリを作成する

    3. SourceTreeで作成済みのリポジトリを削除する


    その前に念のためプロジェクトのフォルダを丸ごとコピペしておく。失敗してもそれを元に戻せば直る。

    4. ローカルにあるプロジェクトフォルダ内の.gitフォルダを丸ごと削除する

    5. SourceTreeでローカルリポジトリを新規作成する(対象のプロジェクトフォルダのルートを指定する)

    6. 右上の歯車アイコンからリモートを選択して、GitHubアカウントを追加する

    7. プルしてローカルにマージする

    これやらないでコミット・プッシュすると、GitHubにプッシュできなくてエラー1になったりするため、必ずプルしておくこと。
    [ローカル] –> [ローカルのリポジトリ] –> [GitHubのリポジトリ
    1]

    8. 普通にローカルからコミット・プッシュする

    9. 以上で完了

    参考サイト

    Written with StackEdit.

    BracketsでGetting Startedを消す方法(別フォルダ開くと消える)

    Bracektsの左パネルに表示される「Getting Started」は消すというよりも、他のフォルダーを開くと、そのフォルダに置き換わるようになります。何かしらが常に表示されるみたいなので、それしか方法はないようです。

    参考サイト:How i Close Getting Started File From Panel #12682

    MacでOWASP ZAPを使ってBasic認証かけたサイトを簡易脆弱性診断

    MacでOWASP ZAPをインストールして、https(SSL)のサイトを簡易的に脆弱性診断を実施した時のメモ。

    ■単語メモ
    ・OWASP オワスプ -> Open Web Application Security Project
    ・ZAP ザップ -> The Zed Attack Proxy

    ■環境
    ・MacBook Pro – macOS Sierra ver10.12.6
    ・ZAP 2.6.0

    ■インストールと起動
    1.Macでアクセスしてそのままインストール
    OWASP Zed Attack Proxy Project

    2.起動後にJavaエラーが出てJavaか何かを更新した気がする(だいぶ前にやったので忘れた)

    3.改めて起動

    4.タブ「クイックスタート」をクリックし、https付きで診断したいURLを入力

    5.次にBasic認証を突破するためのjsスクリプトを登録する。左上の「サイト」の右にある「+」をクリックして「スクリプト」をクリック。するとスクリプト関連が表示される。

    6.左上のfaviconぐらい小さく3つ並んでいるアイコンの一番右側の紙と+が合体しているマークをクリック。マウスオーバーすると「新しいスクリプト」と表示されるやつです。

    7.新規スクリプト画面で以下を選択する。

    8.右上の空白の入力画面(実行ボタンの真下)に以下のコードを入力する。
    —————————————————————————————–
     org.parosproxy.paros.network.HttpSender.addListener(
       new org.zaproxy.zap.network.HttpSenderListener {
         getListenerOrder: function() {
           return 1;
         },
         onHttpRequestSend: function(msg, initiator) {
           msg.getRequestHeader().setHeader(
             // 第一引数は「Authorization」で、第二引数は「Basic 」と「ユーザー名:パスワード」をBase64でエンコードした文字列
             “Authorization”, “Basic ZHJwaGxxxxxxBob3Rv”
             );
         },
         onHttpResponseReceive: function(msg, initiator) {
         }
     });
    —————————————————————————————–
    コメント部分以外は以下サイトからコードを引用しています。
    引用元:OWASP ZAPでBASIC認証を突破する

    【注意】”Authorization”, “Basic ZHJwaGxxxxxxBob3Rv”の「Basic 」の後の文字列は、「ユーザー名:パスワード」をBase64でエンコードした文字列を入れる必要があります。
    エンコードは以下サイトで変換できます。
    Encode to Base64 format
    例えば、ユーザー名が「yamada」で、パスワードが「himitsu」だった場合は、「yamada:himitsu」を上記サイトに入力してエンコードしてください。
    (jsでBase64エンコードするコードも少し書いたのですが、いまいち上手くいかず、結局Base64エンコードした文字列を直接入力した方が早かったです)

    9.「実行」ボタンを押す。「実行」を押しても特に反応はないですが、ちゃんと反映されます。なお、コードがミスったりしていると下にあるウィンドウにエラー内容が表示されます。

    10.「クイックスタート」タブに戻って「攻撃」ボタンを押すと診断開始。
    なお、 Basic認証の通過に失敗していると、URL入力欄の下に401エラーが表示されます。

    ■参考にしたサイト
    # 本当に助かりました。ありがとうございます。
    OWASP ZAP で送信されるリクエストに自動で独自ヘッダを追加する方法
    OWASP ZAPでBASIC認証を突破する
    ・ブラウザを通して診断する場合 → Mac版のOWASP ZAPで脆弱性チェックの設定
    ・StackOverflow – How to assign basic authentication header to XMLHTTPREQUEST?

    req.setRequestHeader('Authorization','Basic ' + Base64StringOfUserColonPassword);

    ↑「Basic認証できない」の回答が上記

    ■(参考)診断の所要時間
    以下、ZAPをデフォルト設定で診断した場合の所要時間
    ・Rails5で、Scaffoldで作った直後のアプリ(データのCRUDができる程度、6画面、そのほか少しカスタマイズした程度)を診断 → 約1時間かかった
    ・全て静的ファイル(HTML, js, CSS, 画像のみ、50画面、サーバーサイドで実行するスクリプトは一切なし) → 約5分

    ■(参考)ZAPの全般的な操作方法
    IPAから、以下マニュアルのP.21「検査ツール実行及び検査結果」に画面付きで丁寧に操作説明が書かれています。それ以外にも診断ツールの比較やどのフェーズで診断すべきか、何が診断できるのか、も含めてわかりやすく説明されています。 # さすがIPA
    IPA テクニカルウォッチ 「ウェブサイトにおける脆弱性検査手法」(ウェブアプリケーション検査編)」
    ※PDFが開きます

    Asanaでプロジェクトのタスクを(実質)インポートする方法

     エクスポートはできるのに、なぜかインポートができずに苦労した。

    インポートには2つ方法がある。
    案1)AsanaのGitHubにあるインポートツールを使う方法(API作ったり、Node.js動かしたり、使うのにハードル高い、面倒)
    案2)手動コピペする方法。

    案2はシンプルで、コピーしたいタスクをShift押しながら一気に選択してからコピー(これでタスクがプレーンテキストの状態でクリップボードに入る)して、ペーストしたいプロジェクトのタスク欄でペーストするだけ。

    ■参考URL
    案2は下記の内容を参考。
    https://blog.workflowy.com/2014/04/23/how-to-import-tasks-from-asana/comment-page-1/#comment-34210

    Macでシェルスクリプト経由のプログラム実行をする

    Mac OSでシェルスクリプトを作って、それを実行した時に
    指定したアプリ(プログラムファイル)を実行する場合の方法。

    ■起動方法
     パターン1)appフォルダ内の実行ファイルを起動させる
     パターン2)GUI用実行ファイルを起動させる

    ■作成方法
    1.ターミナルを起動
    $ touch test.command
    $ chmod 777 test.command

    2.実行するアプリを指定する
       $ vi test.command

    — ファイルの中身(パターン1の場合) ————————
    #!/bin/sh

    cd /Applications/MAMP/MAMP.app/Contents/MacOS/
    ./MAMP&

    cd /Applications/Firefox.app/Contents/MacOS/
    ./firefox&

    cd /Applications/NetBeans 7.1.app/Contents/MacOS/
    ./netbeans&

    killall Terminal
    —————————————————————————-

    — ファイルの中身(パターン2の場合) ————————
    #!/bin/sh

    #cd /Applications/MAMP/MAMP.app/Contents/MacOS/
    #./MAMP&
    open /Applications/MAMP/MAMP.app

    #cd /Applications/Firefox.app/Contents/MacOS/
    #./firefox&
    open /Applications/Firefox.app

    #cd /Applications/Google Chrome.app/Contents/MacOS/
    #./Google Chrome&
    open /Applications/Google Chrome.app

    #cd /Applications/NetBeans 7.1.app/Contents/MacOS/
    #./netbeans&
    open /Applications/NetBeans 7.1.app
    killall Terminal
    —————————————————————————-

    ファイルの中身は実行したいアプリのパスに置き換えてください。

    ポイントとしては、
    ・cdで移動してからアプリを実行する
    ・実行するアプリの最後に「&」(バックグラウンド実行)をつける
    「&」がないとアプリが連続で実行されない

    3.作成した test.command をダブルクリックする

    ■パターン2

    .gitignore設定とcommit後に.gitignoreが効かなくなる場合の対策

    ■gitの設定方法
    git管理対象となっているディレクトリのルートあたりに
    .gitignoreファイルを作って置くだけ。

    記述内容は、無視するファイルやディレクトリを書くだけ。

    ————————————————–

    # common
    *.DS_Store

    # CakePHP
    tmp/*
    public_html/cakephp/app/config/
    public_html/cakephp/app/tmp/
    !empty

    ————————————————–

    「!」をつけると逆に無視しないようにできる。

    具体的な作成方法は下記が分かりやすい。
    Gitを使った分散開発管理13 – gitignoreで無視するファイルを指定する | Classmethod.dev()

    無視する定義ファイルをフレームワークごとに作るのは
    面倒なので、下記を参考に作ると簡単。
    .gitignoreの設定に迷ったらgithubへどうぞ | IDEA*IDEA

    ■.gitignoreに設定したのに無視されない場合
    一度commitしてpushしたファイルは.gitignoreに書いても
    無視してくれない。

    gitignoreでハマる – それ図解で。・・・tohokuaikiのチラシの裏

    git initだけでは解決できず、自分は下記方法で解決した。
    結論から言うと、.git自体を削除してpullするだけでOK。

    git管理下でファイルをcommitしてpushする

    .gitignoreに無視するディレクトリを書く

    無視対象のファイルを編集し、git addすると無視されていない

    commit済みなので、git initしてもNG

    .gitディレクトリ自体を削除する

    git initする

    git remote add origin(リポジトリ名) ssh://git@〜[gitのURL]〜

    git pull
    ↓ 
    無視対象のファイルを編集し、git addして無視されれば成功

    ※自分にgitの知識があまりないため、この方法が
    やり方として間違っている可能性があります。

    !追記!
    ほかの方法でもできたよ と教えていただきました。
    コメント欄もご参照ください。
    (情報ありがとうございます)

    Vimテクニック

    MacVimやWindows Vimでハマったことなどの備忘録

    ■改行コードを入力する
    改行コードは↓で入力できると書かれているが、
    入力できなかった。

    「改行は^Mを入力。^MはCtrl+v,Ctrl+mで入力できる」

    そこで、下記のようにして解決。
    ①Vim開く。
    ②編集モードにして1回だけ改行する。
    ③下に移動し、Shiftを押しながら←キーを押す。
    ④そうすると改行が選択されているので
    そのままコピーする。
    ⑤改行コード(^M)がクリップボードに入る。

    ■Vimで指定ファイル内をgrepする

    指定したファイルから検索対象の文字列を行ごとに抽出

    【入力ルール】
    :vimgrep /[パターン]/j [検索対象のディレクトリパス] | cw

    【サンプル】
    「iPhone4」の文字列に該当するtxtファイルを
    「/Apllication/」ディレクトリ内から検索する。
    :vimgrep /iPhone4/j Application/*.txt | cw

    【応用編】
    複数のキーワードでgrepする場合
    vimgrep /(キーワード1|キーワード2)/j ファイルパス/a.txt | cw

    ■Vimで今開いているファイル内でgrepする
    【入力ルール】
    :vimgrep [キーワード] % | cw

    【サンプル】
    :vimgrep iPhone6S % | cw

    これでその場でgrep結果を見ることができる。

    ■MacVimで短形選択と一括コメントアウト
    MacVimのようなgVimは「Ctrl+v」はペーストになってしまうため、
    短形選択が実行できないが、optionキーを押すことで短形選択ができる。

    下記のようなテキストがあったとした場合の操作方法
    ——
    abc
    abc
    abc
    ——

    【コマンドモード】vキー

    【コマンドモード】optionキー押しながらマウスで縦に「a」をドラッグして短形選択

    【コマンドモード】I (Shift+i)

    【編集モード  】コメントアウト文字「//」を入力

    【編集モード  】ESCキー (control+[)

    コメントアウト文字が一括で入力される。

    vimの起動時設定で、nmapとcmapの割当設定方法が
    ブログに載っていた。これ使う方法も良さそう。
    BLOG » Gvimの設定(まあまあLinux版に近づいてきた)