2020年1月27日月曜日

WinSshFsを使い、SSHサーバーをWindowsでネットワークドライブとしてマウントする方法。

WinSshFsで公開鍵認証のSSHサーバーに接続する方法

Puttyで生成した鍵はAES-256-CBCで出力されるが、win-sshfs(Dokan .Net library)はDES-DES3-CBCでないと読み込めないため、変換する必要がある。
そのままの鍵を使おうとすると
test could not connect:Invalid private key file.
とエラーが出てしまう。

変換はまずPuttyGenを起動し、作成した鍵ファイルを読み込む。
そして、Conversions→Export OpenSSH keyを選択し、秘密鍵を出力する。(ここではaes_newkeyとする)

そのファイルをサーバーに安全な方法でアップし(opensslが入った環境ならどこでも良い)、サーバー上で下記コマンドを実行する。
$ cat aes_newkey | openssl rsa | openssl rsa -des3 > des3_newkey
コマンド入力時にパスフレーズの入力を求められるため任意の文字列を入力する。
そして出力されたdes3_newkeyをローカルマシンに持ってきて、WinSshFSのSshfs Managerで図のように設定する。そうしてSAVEしてMountすれば任意のドライブレターにローカルドライブのようにSFTP環境でマウントできる。

参考:
win-sshfsで鍵を使ってログインする方法
Windows10からLinuxにSSHで接続し、ネットワークドライブとしてマウントして使うとすごく便利だった

2020年1月17日金曜日

FreeBSDでLet'sEncryptをMyDNSのDNS認証で自動更新させる

超下書き記事。後で清書予定。
ほとんどLet’s Encrypt + MyDNS でワイルドカードSSL証明書を自動更新する方法のコピー記事ですが(ごめんなさい)、自分の環境(FreeBSD12.1)に合わせて一部補足しています。
この方法であれば、80番や443のポート開放しなくてもLet'sEncryptの更新ができる。
V6プラスで任意のポートが使えない場合に有効だと思われる。

まず、MyDNSがリリースしたDNS認証の公式スクリプトはPHPで書かれているため、それが動くように下記の3つをインストールする。
# pkg search php
php74-7.4.1                    PHP Scripting Language
php74-openssl-7.4.1            The openssl shared extension for php
php74-mbstring-7.4.1           The mbstring shared extension for php

# pkg install php74-7.4.1
# pkg install php74-openssl-7.4.1
# pkg install php74-mbstring-7.4.1

ターミナルを開き、次のコマンドをroot権限で実行します
# cd ~ #ホームフォルダなどの作業スペースへ移動
# wget 'https://github.com/disco-v8/DirectEdit/archive/master.zip' -O DirectEdit-master.zip #MyDNSの自動更新スクリプトをダウンロード
# unzip master.zip #ダウンロードしたZipを解凍
# mv DirectEdit-master /opt/ #解凍したフォルダを/opt/に移動

次に、自動DNS書き換えの設定をしていきます。
# vi /opt/DirectEdit-master/txtedit.conf

内容を下記のように書き換えます。
$MYDNSJP_URL       = 'https://www.mydns.jp/directedit.html'; //そのまま
$MYDNSJP_MASTERID  = 'mydnsXXXXXX'; //MyDNSユーザーID
$MYDNSJP_MASTERPWD = 'yourmydnspasswd'; //MyDNSパスワード
$MYDNSJP_DOMAIN = 'example.com'; //MyDNSに登録したドメイン名

PHPのパスを確認
# which php
/usr/local/bin/php
FreeBSD12.1のphp7.4はここにbinのパスがあるため、
/DirectEdit-master/内のtxtregist.phpとtxtdelete.phpのbin/phpのパスを設定する。(1行目)
# vi /opt/DirectEdit-master/txtregist.php
#!/usr/local/bin/php
(txtdelete.phpも同様に行う)

権限を変更します。
# cd /opt/DirectEdit-master
# chown root:root ./
# chmod 700 ./*.php //DNS自動更新プログラム
# chmod 600 ./*.conf //設定ファイル

これで下準備はOKです。
既にLetsEncryptの証明書ファイルが有る場合はエラーの原因となるため、リネームして排除しておく。
# mv /usr/local/etc/letsencrypt /usr/local/etc/old_letsencrypt


それではMyDNS自動更新スクリプトを使ってdns-01認証でワイルドカード証明書を取得してみます。
# certbot-auto certonly --manual \ #certbot-autoコマンドは環境によって名前が異なる場合があります。
--preferred-challenges=dns \
--manual-auth-hook /opt/DirectEdit-master/txtregist.php \
--manual-cleanup-hook /opt/DirectEdit-master/txtdelete.php \
-d example.com -d *.example.com \ #※左記以外のサブドメイン(たとえばa.example.com)はMyDNSのスクリプトではエラーになるため指定できません。サブドメインのSSLを取得する場合は別途従来のhttp-01認証で取得してください。
--server https://acme-v02.api.letsencrypt.org/directory \
--agree-tos -m hoge@example.com \ #Let'sEncryptからの通知を受け取るアドレスを指定します。
--manual-public-ip-logging-ok

更新ができるか確認
# certbot renew --dry-run

成功したらCrontabに登録
# crontab -u root -e
00 04 01 * * certbot renew
自動でApacheのリロードも行う。
01 04 01 * * /usr/local/etc/rc.d/apache24 reload

参考
Let’s Encrypt + MyDNS でワイルドカードSSL証明書を自動更新する方法
Let’s Encrypt の証明書の更新を自動化する手順 (cron)

2020年1月9日木曜日

FreeBSDメジャーアップグレード

個人用忘備録。
FreeBSDのメジャーアップグレード(11.2→12.1)はここの記事の内容で全てOK!
FreeBSD 11.2 を FreeBSD 12.0 に更新
https://qiita.com/psaxuww/items/4f14414999fc1b31ca11
上記記事の完全引用です。書いてくださった方有難うございます。

12.1にしたいなら下記の順で進めていく。
アップグレードファイルダウンロード
# freebsd-update upgrade -r 12.1-RELEASE
カーネルのインストール
# freebsd-update install
再起動 
# reboot

再起動後ユーザランドのインストール
# freebsd-update install

古いサードパーティソフトのリビルドをするよう促されるので、パッケージアップグレード 

# pkg upgrade -y

仕上げ(soファイルの削除)
# freebsd-update install
バージョン確認 
$ uname -a
FreeBSD  12.1-RELEASE FreeBSD 12.0-RELEASE r341666 GENERIC  amd64
 と表示されればOK。詳細は上記リンク先記事で。

メインテナンスはこちら
https://maimokumemo.blogspot.com/2016/05/microserver-freebsd103nasweb5.html

【備忘録】Windowsタスクスケジューラのタスクを削除できない問題の解決方法

 自分で作ったタスクなのに、削除しようとしたら
「ユーザーアカウントにタスクを削除する権限がありません」
と表示されてしまい、削除はおろか、権限エラーで設定変更もできない。それを解決できたのでメモ。

完璧に下記の記事のコピーです。忘備録として個人的にメモします。
【備忘録】Windowsタスクスケジューラのタスクを削除できない問題の解決方法

1タスクのスケジュールの実体が/windows/system32/Tasksに保存されているので、その中で削除したいタスク名のものを削除。
2タスクスケジューラを起動しタスクを削除。

上記の通りみたらすんなりと削除できた。