2020/06/07

MySQL Workbench から、SSH接続しようとすると”Access denied for 'none'. Authentication that can continue: publickey”エラーになる

  • Issue
    MySQL Workbench から、SSH接続しようとすると”Access denied for 'none'. Authentication that can continue: publickey”と言われる。。。
  • 原因
    SSHのKeyをmacで作成したために、Keyの形式が問題らしい。
    (参考)Thanks a lot!!
    WorkBenchでDBサーバーにSSH接続できないって?

  • Solution
    Windowsが、手元になかったので、macでのやり方をメモ
    1. putty をインストール
    2. puttygem で、.ppk ファイルを作成
    3. puttygem で、オプションprivate-openssh を指定して作成
    4. そのKeyをセットアップすると接続!

      # putty をインストールする
      -> % brew install putty
      Updating Homebrew...
      # この中の −0の private-openssh で最終的にKeyを作る
      -> % puttygen -h
      PuTTYgen: key generator and converter for the PuTTY tools
      Release 0.73
      Usage: puttygen ( keyfile | -t type [ -b bits ] )
      [ -C comment ] [ -P ] [ -q ]
      [ -o output-keyfile ] [ -O type | -l | -L | -p ]
      -t specify key type when generating (ed25519, ecdsa, rsa, dsa, rsa1)
      -b specify number of bits when generating key
      -C change or specify key comment
      -P change key passphrase
      -q quiet: do not display progress bar
      -O specify output type:
      private output PuTTY private key format
      private-openssh export OpenSSH private key <- これを使う!!!
      private-openssh-new export OpenSSH private key (force new format)
      private-sshcom export ssh.com private key
      public RFC 4716 / ssh.com public key
      public-openssh OpenSSH public key
      fingerprint output the key fingerprint
      -o specify output file
      -l equivalent to `-O fingerprint'
      -L equivalent to `-O public-openssh'
      -p equivalent to `-O public'
      --old-passphrase file
      specify file containing old key passphrase
      --new-passphrase file
      specify file containing new key passphrase
      --random-device device
      specify device to read entropy from (e.g. /dev/urandom)
      # まず、Putty形式のKeyを作成する 拡張子.ppk で保存
      -> % puttygen id_rsa -O private -o id_rsa.ppk
      Enter passphrase to load key:
      # で、そのファイルを -O private-openssh で、再度OpenSSHの古い形式で保存
      -> % puttygen id_rsa.ppk -O private-openssh -o id_rsa_mysqlWB
      Enter passphrase to load key:
      # これで、 private key file "id_rsa_mysqlWB" が、完成
      view raw puttygen.sh hosted with ❤ by GitHub


  • 編集後記
    MacでMySQL Workbenchを使う人は、少ないのかな?調べるのに時間かかってしまった。

GCP: ローカルからGCLOUDコマンドを叩くと pyenv: python2: command not found エラー

  • Issue
    gcloud コマンドをローカルから使おうとしたら、pyenv: python2: command not found エラーとなる
  • 環境など
    Mac mojave 10.14.6
    pyenv 1.2.8-182  ※homebrew でインストールしていない。(これが原因かも)
  • 原因
    文字通りなのですが、gcloudの中で、"python2" コマンドが呼び出されるけど、python2 コマンドが見つからないと言われている。
    # エラーの内容
    -> % gcloud compute instances -h
    pyenv: python2: command not found
    The `python2' command exists in these Python versions:
    2.7.15
    2.7.15/envs/iotdemo
    2.7.15/envs/py27
    iotdemo
    py27
    Note: See 'pyenv help global' for tips on allowing both
    python2 and python3 to be found.
    Usage: gcloud compute instances [optional flags] <group | command>
    group may be network-interfaces | os-inventory
    # the rest is omitted
    # python2 コマンドを叩いてみる
    -> % python2
    pyenv: python2: command not found
    The `python2' command exists in these Python versions:
    2.7.15
    2.7.15/envs/iotdemo
    2.7.15/envs/py27
    iotdemo
    py27
    Note: See 'pyenv help global' for tips on allowing both
    python2 and python3 to be found.
    ### エラーと言われる
    # pyenv のセッティングを確認
    # global は、何もしてないでMacの素のまま
    -> % pyenv version
    system (set by /Users/toshi/.pyenv/version)
    -> % pyenv global
    system
    -> % pyenv versions
    * system (set by /Users/toshi/.pyenv/version)
    2.7.15
    2.7.15/envs/iotdemo
    3.4.3
    3.4.3/envs/atc343
    atc343
    iotdemo


  • Solution
    .zprofile に、export CLOUDSDK_PYTHON=/usr/bin/python を追記
    これを追記することで、呼び出すPython環境を明示できて、python2 を呼ばなくなる。
    (しらんけど。。。)
    # python コマンドは、2.7.16
    -> % python
    Python 2.7.16 (default, Jan 27 2020, 04:46:15)
    [GCC 4.2.1 Compatible Apple LLVM 10.0.1 (clang-1001.0.37.14)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> exit()
    # それは、以下のPATHのことなので
    -> % /usr/bin/python
    Python 2.7.16 (default, Jan 27 2020, 04:46:15)
    [GCC 4.2.1 Compatible Apple LLVM 10.0.1 (clang-1001.0.37.14)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> exit()
    # .zprofile に、Pathを明示する
    -> % echo 'export CLOUDSDK_PYTHON=/usr/bin/python' >>.zprofile
    # ログインし直すと!! エラーは消えた
    -> % gcloud compute instances -h
    Usage: gcloud compute instances [optional flags] <group | command>
    group may be network-interfaces | os-inventory
    command may be add-access-config | add-iam-policy-binding |


  • 編集後記
    これは、元々、エラーがでるけど普通に動く。多分、python2 コマンド使って、だめならpython コマンドって順番に呼び出しているのかと想像。
    前のMACだと出なかったんだけど。。。

2020/06/06

GCP: Google Compute Engine にVSCODD 越しに接続する

  • Goal
    • VSCODEから、GCEインスタンス(開発環境)に接続開発する
    • そのとき、一応SSHのポートも変更する
  • How
    1. gcloud SDK のインストール(詳細はカツアイ)
    2. GCE インスタンスを作成し、静的IPを割り当てる (詳細はカツアイ)
    3. ローカル端末で、Keyを作成する
      ssh-keygen -t rsa -b 4096 -C "testUser"
    4. GCEの設定画面で、Keyを貼り付け
    5. PORT:22での接続テスト
      gcloudコマンド (静的IPの割当が不要。インスタンス名で接続できる)
      gcloud compute ssh testUser@instance-1 --ssh-key-file ./test_rsa
    6. GCEのOS上でのsshdのポート変更
      5で接続した状態で、GCEの内部のsshd_configファイルの設定を変更する
      sudo vi /etc/ssh/sshd_config

      以下に、接続したいポート番号を追加
      #Port 22
      Port 22011
      #AddressFamily any


      そのあとに、サービスのRESTARTとSTATUSを確認
      sudo systemctl restart sshd
      sudo systemctl status sshd
      確認して問題なければ、一旦GCEから抜ける
    7. GCPのネットワークの設定でPORTの変更
      以下のケースでは、22から22011へ変更
    8. ローカルから、SSHでアクセステスト
      ssh testUser@34.67.184.203 -p 22011 -i ~/.ssh/test_rsa
    9. config の設定を加えるとVSCODEのからアクセスできる
  • 編集後記
    GCEインスタンスの開発なら、VSCODE+RemoteDevelopmentで開発して、Cloud Source Repositories へPushし、Cloud BuildでSTG環境と本番へデプロイが良いのでしょうか?
    でも、GAEなら、Cloud Shell で開発して、Cloud Source Repositories+Cloud Buildもできて、それならどこでも開発できるとも思ったりします。
    開発経験の少ない素人なので、良い方法が単純に知りたい・・・