SSH公開鍵の確認

表題の通り。公開鍵を設定した気になってログインできなく、確認する時の為のメモ。

■ 環境

  • Linux

■ ssh-keygen

`ssh-keygen`は鍵を生成するものだと思っていたのだが、オプションで確認もできるようである。下記は自身が使用しているEC2のとあるLinuxサーバである。

$ ssh-keygen -l -f ~/.ssh/authorized_keys
2048 XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX  withsin (RSA)
$

本来であれば2行記載されているような設定をしていたつもりが、記載する際に不備があり認識されていなかったようである。再度鍵を設定し直したところ、下記のように2行表示された。

$ ssh-keygen -l -f ~/.ssh/authorized_keys
2048 XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX  withsin (RSA)
2048 XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX  test (RSA)
$

以上。

DockerでAmazonLinux

表題の通り。

■ 環境

  • Amazon Linux 2016.09.20161028
  • Docker for Mac 1.12.3
  • Mac OSX El Capitan

■ AmazonLinux

少し前にECRからAmazonLinuxのDockerコンテナイメージをダウンロードすることができると知り実際にも試してみたのだが、今回はDockerHubで公開されているようなので、こちらの方が手っ取り早い感じがしたのでやってみることにした。

$ docker pull amazonlinux

現時点では”2016.09.20161028“が落とされてくるようである。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
amazonlinux         latest              57cfffcf4ff3        5 days ago          328.3 MB
  :
$

現時点で既に5日前には存在していたようである。

■ run

起動してログインしてみる。

$ docker run -ti --rm amazonlinux /bin/bash
bash-4.2#
bash-4.2# cat /etc/system-release
Amazon Linux AMI release 2016.09
bash-4.2#

なるほど。また`yum`でパッケージも取得できるようである。

bash-4.2# yum search nginx
Loaded plugins: priorities, update-motd, upgrade-helper
========================================================= N/S matched: nginx ==========================================================
collectd-nginx.x86_64 : Nginx plugin for collectd
munin-nginx.noarch : Network-wide graphing framework (cgi files for nginx)
nginx-all-modules.x86_64 : A meta package that installs all available Nginx modules
nginx-mod-http-geoip.x86_64 : Nginx HTTP geoip module
nginx-mod-http-image-filter.x86_64 : Nginx HTTP image filter module
nginx-mod-http-perl.x86_64 : Nginx HTTP perl module
nginx-mod-http-xslt-filter.x86_64 : Nginx XSLT module
nginx-mod-mail.x86_64 : Nginx mail modules
nginx-mod-stream.x86_64 : Nginx stream modules
nginx.x86_64 : A high performance web server and reverse proxy server

  Name and summary matches only, use "search all" for everything.
bash-4.2#

これは開発環境がとても便利になりそうである。

以上。

■ 関連

証明書の有効期限を取得

表題の通り。

■ 環境

  • OpenSSL
  • Mac OSX ElCapitan

■ 証明書の有効期限

コマンドラインから証明書の有効期限を知りたい。かつその証明書自体は自分が管理しているものではない(手元にはない)。という場合にどうやればできるのかを調べてみた。下記コマンドで取得できるようだ。下記は”www.google.co.jp“の場合である。

$ echo | openssl s_client -connect www.google.co.jp:443 -servername www.google.co.jp 2>/dev/null | openssl x509 -noout -enddate
notAfter=Feb  2 15:31:00 2017 GMT
$

なるほど。これで管理している全てのドメインの一覧があれば、スクリプトを組んで証明書の有効期限切れや、そろそろ切れるかもという確認が定期的にできそうである。

以上。

コマンドラインでurlencode

表題の通り。

■ 環境

  • nkf
  • Mac OSX ElCapitan

■ nkf

`nkf`コマンドが入っていなかったのでインストールをした。

$ brew install nkf

■ urlencode

下記コマンドで実行可能なようである。

$ echo "[文字列]" | nkf -WwMQ | tr = %

実行結果は下記の通り。

$ echo "テスト" | nkf -WwMQ | tr = %
%E3%83%86%E3%82%B9%E3%83%88
$

文字列が長いと少々面倒なようである。

$ echo "テストテストテスト" | nkf -WwMQ | tr = %
%E3%83%86%E3%82%B9%E3%83%88%E3%83%86%E3%82%B9%E3%83%88%E3%83%86%E3%82%B9%
%E3%83%88
$

単純に2行を繋げると思い通りの結果にならなかった。行末の”%“を削除して繋げると思い通りの結果になった。

以上。

■ 関連

改行コード変換

urldecode

ELBのヘルスチェックログを出力しない

表題の通り。AWSのELBからのヘルスチェックのログが邪魔なので非表示にという設定メモ。

■ 環境

  • nginx
  • ELB
  • AWS

■ 削除したいログ

下記のようなログである。

10.0.1.154 - - [16/Nov/2016:19:04:21 +0900] "GET /health.txt HTTP/1.1" 200 3 "-" "ELB-HealthChecker/1.0"
10.0.2.20 - - [16/Nov/2016:19:04:21 +0900] "GET /health.txt HTTP/1.1" 200 3 "-" "ELB-HealthChecker/1.0"

■ nginx.conf

該当の設定ファイル内、”server”ディレクティブの所に下記を追記する。

  location = /health.txt {
    access_log off;
    break;
  }

これでログに出力されなくなった。

※ 2017/04/25 追記
コメントを頂いたので上記を編集した。

以上。

■ 関連

ELBのヘルスチェックをログに記載しない (Apache)