2024/03/03(日)Windows 11でパスフレーズ付きの公開鍵認証SFTPをマウントする

更新日:
投稿日:

古のSFTPマウントツールが軒並み死んでいるためRcloneを使う。WindowsからLinux上に構築したストレージに繋ぐときに便利。

前提条件

  • 接続先のSSH環境がある
  • 接続先のSSH環境の公開鍵認証に利用する秘密鍵にパスフレーズが付いている

確認環境

Env Ver
OS Windows 11 Home 25H2(26200.8039)
Rclone 1.73.3

手順

1. 基本環境のインストール

  1. Rcloneをインストールする
    choco install rclone
    
  2. WinFspもインストールする。これがないとマウントできない

2. マウント設定の作成

  1. 次のコマンドで設定ウィザードを起動する
    rclone config
    
  2. 設定はこんな感じ

    # 新しい設定ファイルの作成
    No remotes found, make a new one?
    n) New remote
    s) Set configuration password
    q) Quit config
    n/s/q>n
    
    # 接続名を設定する
    Enter name for new remote.
    name> hoge
    
    # 接続先のストレージ種別をSSHで設定する
    Option Storage.
    Type of storage to configure.
    Choose a number from below, or type in your own value.
    1 / 1Fichier
    \ (fichier)
    2 / Akamai NetStorage
    \ (netstorage)
    3 / Alias for an existing remote
    \ (alias)
    4 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, ArvanCloud, BizflyCloud, Ceph, ChinaMobile, Cloudflare, Cubbit, DigitalOcean, Dreamhost, Exaba, FileLu, FlashBlade, GCS, Hetzner, HuaweiOBS, IBMCOS, IDrive, Intercolo, IONOS, Leviia, Liara, Linode, LyveCloud, Magalu, Mega, Minio, Netease, Outscale, OVHcloud, Petabox, Qiniu, Rabata, RackCorp, Rclone, Scaleway, SeaweedFS, Selectel, Servercore, SpectraLogic, StackPath, Storj, Synology, TencentCOS, Wasabi, Zata, Other
    \ (s3)
    5 / Backblaze B2
    \ (b2)
    6 / Better checksums for other remotes
    \ (hasher)
    7 / Box
    \ (box)
    8 / Cache a remote
    \ (cache)
    9 / Citrix Sharefile
    \ (sharefile)
    10 / Cloudinary
    \ (cloudinary)
    11 / Combine several remotes into one
    \ (combine)
    12 / Compress a remote
    \ (compress)
    13 / DOI datasets
    \ (doi)
    14 / Drime
    \ (drime)
    15 / Dropbox
    \ (dropbox)
    16 / Encrypt/Decrypt a remote
    \ (crypt)
    17 / Enterprise File Fabric
    \ (filefabric)
    18 / FTP
    \ (ftp)
    19 / FileLu Cloud Storage
    \ (filelu)
    20 / Filen
    \ (filen)
    21 / Files.com
    \ (filescom)
    22 / Gofile
    \ (gofile)
    23 / Google Cloud Storage (this is not Google Drive)
    \ (google cloud storage)
    24 / Google Drive
    \ (drive)
    25 / Google Photos
    \ (google photos)
    26 / HTTP
    \ (http)
    27 / Hadoop distributed file system
    \ (hdfs)
    28 / HiDrive
    \ (hidrive)
    29 / ImageKit.io
    \ (imagekit)
    30 / In memory object storage system.
    \ (memory)
    31 / Internet Archive
    \ (internetarchive)
    32 / Internxt Drive
    \ (internxt)
    33 / Jottacloud
    \ (jottacloud)
    34 / Koofr, Digi Storage and other Koofr-compatible storage providers
    \ (koofr)
    35 / Linkbox
    \ (linkbox)
    36 / Local Disk
    \ (local)
    37 / Mail.ru Cloud
    \ (mailru)
    38 / Mega
    \ (mega)
    39 / Microsoft Azure Blob Storage
    \ (azureblob)
    40 / Microsoft Azure Files
    \ (azurefiles)
    41 / Microsoft OneDrive
    \ (onedrive)
    42 / OpenDrive
    \ (opendrive)
    43 / OpenStack Swift (Rackspace Cloud Files, Blomp Cloud Storage, Memset Memstore, OVH)
    \ (swift)
    44 / Oracle Cloud Infrastructure Object Storage
    \ (oracleobjectstorage)
    45 / Pcloud
    \ (pcloud)
    46 / PikPak
    \ (pikpak)
    47 / Pixeldrain Filesystem
    \ (pixeldrain)
    48 / Proton Drive
    \ (protondrive)
    49 / Put.io
    \ (putio)
    50 / QingCloud Object Storage
    \ (qingstor)
    51 / Quatrix by Maytech
    \ (quatrix)
    52 / Read archives
    \ (archive)
    53 / SMB / CIFS
    \ (smb)
    54 / SSH/SFTP
    \ (sftp)
    55 / Shade FS
    \ (shade)
    56 / Sia Decentralized Cloud
    \ (sia)
    57 / Storj Decentralized Cloud Storage
    \ (storj)
    58 / Sugarsync
    \ (sugarsync)
    59 / Transparently chunk/split large files
    \ (chunker)
    60 / Uloz.to
    \ (ulozto)
    61 / Union merges the contents of several upstream fs
    \ (union)
    62 / WebDAV
    \ (webdav)
    63 / Yandex Disk
    \ (yandex)
    64 / Zoho
    \ (zoho)
    65 / iCloud Drive
    \ (iclouddrive)
    66 / premiumize.me
    \ (premiumizeme)
    67 / seafile
    \ (seafile)
    Storage> 54
    
    # 接続先のホストを設定
    Option host.
    SSH host to connect to.
    E.g. "example.com".
    Enter a value.
    host> ssh.example.com
    
    # 接続先のユーザー名を設定
    Option user.
    SSH username.
    Enter a value of type string. Press Enter for the default (MYPC\myuser).
    user> hoge
    
    # 接続先のポートを指定、デフォルトならエンターで飛ばせると思う
    Option port.
    SSH port number.
    Enter a signed integer. Press Enter for the default (22).
    port> 12345
    
    # 鍵認証なのでエンターで飛ばす
    Option pass.
    SSH password, leave blank to use ssh-agent.
    Choose an alternative below. Press Enter for the default (n).
    y) Yes, type in my own password
    g) Generate random password
    n) No, leave this optional password blank (default)
    y/g/n>
    
    # エンターで飛ばす
    Option key_pem.
    Raw PEM-encoded private key.
    Note that this should be on a single line with line endings replaced with '\n', eg
        key_pem = -----BEGIN RSA PRIVATE KEY-----\nMaMbaIXtE\n0gAMbMbaSsd\nMbaass\n-----END RSA PRIVATE KEY-----
    This will generate the single line correctly:
        awk '{printf "%s\\n", $0}' < ~/.ssh/id_rsa
    If specified, it will override the key_file parameter.
    Enter a value. Press Enter to leave empty.
    key_pem>
    
    # 秘密鍵のパスを指定
    Option key_file.
    Path to PEM-encoded private key file.
    Leave blank or set key-use-agent to use ssh-agent.
    Leading `~` will be expanded in the file name as will environment variables such as `${RCLONE_CONFIG_DIR}`.
    Enter a value. Press Enter to leave empty.
    key_file> C:\path\to\hoge.sec
    
    # 秘密鍵のパスフレーズを入れる
    Option key_file_pass.
    The passphrase to decrypt the PEM-encoded private key file.
    Only PEM encrypted key files (old OpenSSH format) are supported. Encrypted keys
    in the new OpenSSH format can't be used.
    Choose an alternative below. Press Enter for the default (n).
    y) Yes, type in my own password
    g) Generate random password
    n) No, leave this optional password blank (default)
    y/g/n> y
    Enter the password:
    password:
    Confirm the password:
    password:
    
    # エンターで飛ばす
    Option pubkey.
    SSH public certificate for public certificate based authentication.
    Set this if you have a signed certificate you want to use for authentication.
    If specified will override pubkey_file.
    Enter a value. Press Enter to leave empty.
    pubkey>
    
    # エンターで飛ばす
    Option pubkey_file.
    Optional path to public key file.
    Set this if you have a signed certificate you want to use for authentication.
    Leading `~` will be expanded in the file name as will environment variables such as `${RCLONE_CONFIG_DIR}`.
    Enter a value. Press Enter to leave empty.
    pubkey_file>
    
    # エンターで飛ばす
    Option key_use_agent.
    When set forces the usage of the ssh-agent.
    When key-file is also set, the ".pub" file of the specified key-file is read and only the associated key is
    requested from the ssh-agent. This allows to avoid `Too many authentication failures for *username*` errors
    when the ssh-agent contains many keys.
    Enter a boolean value (true or false). Press Enter for the default (false).
    key_use_agent>
    
    # エンターで飛ばす
    Option use_insecure_cipher.
    Enable the use of insecure ciphers and key exchange methods.
    This enables the use of the following insecure ciphers and key exchange methods:
    - aes128-cbc
    - aes192-cbc
    - aes256-cbc
    - 3des-cbc
    - diffie-hellman-group-exchange-sha256
    - diffie-hellman-group-exchange-sha1
    Those algorithms are insecure and may allow plaintext data to be recovered by an attacker.
    This must be false if you use either ciphers or key_exchange advanced options.
    Choose a number from below, or type in your own boolean value (true or false).
    Press Enter for the default (false).
    1 / Use default Cipher list.
    \ (false)
    2 / Enables the use of the aes128-cbc cipher and diffie-hellman-group-exchange-sha256, diffie-hellman-group-exchange-sha1 key exchange.
    \ (true)
    use_insecure_cipher>
    
    # エンターで飛ばす
    Option disable_hashcheck.
    Disable the execution of SSH commands to determine if remote file hashing is available.
    Leave blank or set to false to enable hashing (recommended), set to true to disable hashing.
    Enter a boolean value (true or false). Press Enter for the default (false).
    disable_hashcheck>
    
    # エンターで飛ばす
    Option ssh.
    Path and arguments to external ssh binary.
    Normally rclone will use its internal ssh library to connect to the
    SFTP server. However it does not implement all possible ssh options so
    it may be desirable to use an external ssh binary.
    Rclone ignores all the internal config if you use this option and
    expects you to configure the ssh binary with the user/host/port and
    any other options you need.
    **Important** The ssh command must log in without asking for a
    password so needs to be configured with keys or certificates.
    Rclone will run the command supplied either with the additional
    arguments "-s sftp" to access the SFTP subsystem or with commands such
    as "md5sum /path/to/file" appended to read checksums.
    Any arguments with spaces in should be surrounded by "double quotes".
    An example setting might be:
        ssh -o ServerAliveInterval=20 user@example.com
    Note that when using an external ssh binary rclone makes a new ssh
    connection for every hash it calculates.
    Enter a value of type SpaceSepList. Press Enter to leave empty.
    ssh>
    
    # エンターで飛ばす
    Edit advanced config?
    y) Yes
    n) No (default)
    y/n>
    
    # 設定内容に問題ないことを確認してエンターで飛ばす
    # 設定を直す場合はeを選ぶと、ここまでの設定内容から修正したい箇所だけ編集できて便利
    Configuration complete.
    Options:
    - type: sftp
    - host: ssh.example.com
    - user: hoge
    - port: 12345
    - key_file: C:\path\to\hoge.sec
    - key_file_pass: *** ENCRYPTED ***
    Keep this "hoge" remote?
    y) Yes this is OK (default)
    e) Edit this remote
    d) Delete this remote
    y/e/d>
    
    # 設定の登録結果が出てくるので、特になければqで終わる
    Current remotes:
    
    Name                 Type
    ====                 ====
    hoge                 sftp
    
    e) Edit existing remote
    n) New remote
    d) Delete remote
    r) Rename remote
    c) Copy remote
    s) Set configuration password
    q) Quit config
    e/n/d/r/c/s/q> q
    
  3. 設定が完了したら、以下のコマンドでマウントできる
    # 例:rclone mount hoge: Z: --network-mode
    # マウントパスを指定する場合はhoge:/path/toのようにすればよいと思うが試してない
    rclone mount <config name>:<mount path> <drive letter>: --network-mode
    

設定ファイルの在り処と中身

一回作った設定ファイルは持ち運べるし、手組もできるのでフォーマットが分かっていれば一々設定ウィザードを起動する必要はない。

  • 設定ファイルの在り処
    • %USERPROFILE%\AppData\Roaming\rclone\rclone.conf
  • 中身のフォーマットはiniファイルで接続先がWindowsのSSHだとshell_typecmd、UbuntuのSSHだとunixとなっていた

    [hoge]
    type = sftp
    host = ssh1.example.com
    user = foo
    port = 12121
    key_file = C:\path\to\hoge.sec
    key_file_pass = XXXXXXXXXXXXXX
    shell_type = cmd
    
    [piyo]
    type = sftp
    host = ssh2.example.com
    user = bar
    port = 12122
    key_file = C:\path\to\piyo.sec
    key_file_pass = YYYYYYYYYYYYYY
    shell_type = unix
    

トラブルシューティング

マウント時のターミナルウィンドウが邪魔

公式の解説によると、Windowsではバックグラウンドで動かすことができない

Use the --daemon flag to force background mode. On Windows you can run mount in foreground only, the flag is ignored.

どうしてもバックグラウンドで動かしたい場合はVDeskを使って適当な仮想デスクトップで起動するか、タスクトレイ系のユーティリティを使ってタスクトレイに突っ込んだりすると良さそうだ。

私は必要なときに都度起動し、仮想デスクトップを作って、そこに避難させとけば良いかな程度で今のところ考えている。この手のはネットワークが不安定な場所で動かすと色々面倒だし、使う頻度も低いので、今はそれで良いかなという感じ。

参考

2024/02/27(火)mkcertで作ったCA証明書をインポートする方法

更新日:
投稿日:

mkcertで作ったCA証明書をエクスポートする方法でエクスポートしたCA証明書を他の端末に取り込む方法

Android

確認環境

Galaxy S22 Ultra Android 14

手順

  1. Android端末のストレージにエクスポートしたCA証明書を持ってくる
  2. 設定>セキュリティ>その他のセキュリティ設定>ストレージからインストール>CA証明書>このままインストール
  3. 内部ストレージからエクスポートしたCA証明書を選択

Windows

確認環境

Windows 11 Pro (22621.3155)

手順

  1. スタートメニューやコンパネから「ユーザー証明書の管理」を開く
  2. 信頼されたルート証明書を右クリックし、すべてのタスク>インポート
    信頼されたルート証明書を右クリックし、すべてのタスク>インポート
  3. エクスポートしたCA証明書を参照する
    エクスポートしたCA証明書を参照する
  4. 証明書ストアが「信頼されたルート証明機関」になっていることを確認する
    証明書ストアが「信頼されたルート証明機関」になっていることを確認する
  5. 取り込む証明書が正しいことを確認して「はい」
    取り込む証明書が正しいことを確認して「はい」

Ubuntu

確認環境

Ubuntu 22.04.3 LTS

手順

$CER_FILE="エクスポートしたCA証明書"
sudo openssl x509 -inform der -outform pem -in $CER_FILE -out PEM.crt
sudo cp PEM.crt /usr/local/share/ca-certificates
sudo update-ca-certificates

2024/02/27(火)mkcertで作ったCA証明書をエクスポートする方法

別の端末に持っていきたいときに使える

確認環境

Env Ver
Windows 11 Pro 22621.3155

手順

  1. ユーザー証明書の管理を開く
  2. 信頼されたルート証明機関>証明書
  3. mkcertで始まる証明書を探す
  4. 右クリック>すべてのタスク>エクスポート
  5. DER encoded binary X.509 (.CER)
  6. 適当なファイル名を付けてエクスポート

2024/02/26(月)一人暮らしの家事を楽にする上であると便利なグッズ

投稿日:

主に狭い賃貸で一人暮らしをするときに個人的に便利だと思ったグッズ集

三角コーナーいらず

三角コーナーいらず

ダイセルの三角コーナーいらずは文字通り三角コーナーを不要にしてくる便利グッズだ。

三角コーナーがあると三角コーナー自体の掃除が必要になったり、接地面の掃除が必要になったり、結構手間だし、これをさぼっているとウジ虫が湧くことがあり、非常に面倒だ。

しかし三角コーナーいらずであれば、接地面が存在しないため、このようなことは起きない。また袋が小さいため底の浅いシンクでも使えるのがよい。更にシンクの壁や、上側とかにも置けるため設置場所をあまり選ばないのもいい。これは引っ越しをよくする場合に重宝するポイントだろう。捨てる時に手を汚さないようにするために袋に耳がついてるのもありがたい。袋自体に脱臭・抗菌加工があるためハエが寄り付きづらいのもポイントだ。

市販の買い物袋をぶら下げたりするタイプもあるが、そちらだと袋が大きすぎたり、水切りができないという欠点があるが、これであれば専用品であるために水切りができ、袋も小さいというメリットがある。実際これに変えてから三角コーナーにウジ虫が湧くことはほぼなくなった。

但し放置していればウジは沸くので、適宜廃棄することが肝要だ。

ニトリのダイキャストフライパン

ニトリのダイキャストフライパン
取っ手のつなぎ目にリベットがないので汚れが溜まりづらい

ある日、私はフライパンを使っていて取っ手と鍋本体を繋ぐリベット(釘)に汚れが溜まって困っていた、これを解決してリベットがないフライパンを探したが、大抵高かったり重かったりしてイマイチだった。そこで見つけたのがニトリのダイキャストフライパン、KARUFURA3だ。

見ての通り取っ手のつなぎ目にリベットがなく、ニトリなので安い。20cmタイプで360g(実測値)と重量も軽い。買って3年ほど使っているがコーティングが剝がれることもなく今でも特に問題が出ていない。

2024/02/25(日)ボディーソープから石鹼へ

更新日:
投稿日:

三年位前だろうか、まだコロナが猛威を振るっていたころの話だ。私は自転車で街を走っていて一つの街頭広告を見かけた。『手洗いに「解除」はありません。』という文字が書かれ、柔らかなテイストで家族のイラストが描かれたシンプルなものだった。広告主は牛乳石鹸で、その時私は「確かにそれはそうだ。しかし石鹸なんて使わなくなったな」と思っていた。この広告は今でも同じ場所に掲示され続けており、通る度に眺めては物思いにふけっていた。

そしてつい先日ホームセンターに行った時のことだ、レジの前で牛乳石鹸の特売がされていた。「ふーん、石鹸かぁ…」と思い、買うか悩んだがレジに並んでいたので判断しきれず、その時は買わずにいた。

今回購入した牛乳石鹸の赤箱。国産の文字がまぶしい。石鹸皿も買った
個包装は牛の絵が描かれた懐かしいパッケージだ
石鹼皿の上に乗せた牛乳石鹸。今回買ったのは大きめの品だったが無事乗った。石鹸に描かれた牛のエンボスが良い

翌日である今日になり、石鹸を使ってみるのも悪くないのではないか?と思い、早速買ってみることにした。理由としては石鹸の方が安く済みそうだと思ったからだ。というわけで牛乳石鹸の赤箱と石鹸皿を買ってきた。石鹸皿はコーナンにあったアスベル エミール 石けん皿 ホワイトだ。汁受けがついているので石鹸のぬめりをキャッチできるのがいい。全く今風ではない古臭い作りだが、これでいいのだ。

私は長らくボディーソープを使っていた。何故なら石鹸は使い辛く、古臭いと思っていたからだ。ボディーソープは使いやすくモダンだと思っていたので使っていた。昔の私は新しいものが好きで、新しいものにすぐ飛びつく癖があった。よく近所の人からも「君は進みすぎている」と言われたものだ。

ボディーソープを使うときは十分に泡立たせるために二回ほどプッシュすることが多く消費量が多いのが悩みだった。また替えのリフィルも場所を取るし、ごみが多い。取り換え時に抜いたポンプから中身が垂れてきて汚れるのも好きでなかった。

しかしそれらの課題は石鹸なら解決できるのではないかと思ったのだ。石鹸はコンパクトで場所を取らないし、それだけにごみも少ない。何なら私は今、新聞を購読していて紙ごみはリサイクルに出せるので、環境保全の意味でもよい。ボディーソープのリフィルもリサイクル出来るはずだが、する気が起きない。しかもなくなった時の詰め替え作業も不要だ。ついでに言うと軽い。記憶が確かなら石鹸は中々減らないので長持ちするので節約になるし、買いに行く手間が省けるのはいいことだ。また、ボディーソープと違って残量がわかりやすいのも利点だろう。ボディーソープはある日突然出なくなって困ることがあるが、石鹸は小さくなったら買いに行けばいいだけだ。常にストックしておく必要はないし、ストックしておくにしてもボディーソープのリフィル一本分の面積に10個くらい置けるのも魅力といえる。

実際に使ってみた感じも手に取って何度か揉めば十分に泡立ったので、ポンプを押して更に泡立てるという工程がなくなり楽になった気がする。何より石鹸をこねくり回すのは新鮮で楽しい。しかも顔まで行けるので、フェイスソープが要らなくなった。

牛乳石鹸を買うときは色は青と赤で少し迷ったのだが、乾燥肌が辛いなど最近肌に関するトラブルに絶えないので赤にすることにした。子供のころは赤い牛乳石鹸といえば高級品というイメージだったし、実際赤の方が高いのだが、ボディーソープと比べたら些細な価格なのでどうでもいい話だ。

今まで使っていたボディーソープだとリフィルが400円程度するが、牛乳石鹸の赤い奴は3つ入りで300円程度、1個辺り100円くらいである。どう考えてもこちらの方が安い。しかも牛乳石鹸は大阪の会社なので、地産地消的な意味合いでもよい。

「SEA BREEZE ボディシャンプー クール&デオドラント」という非常に長く覚えきれないので買い替えに地味に難儀する商品名から、「牛乳石鹸の赤箱」という非常に明快な商品になったのも買い替え時にありがたい。SEA BREEZEはシリーズ商品が結構あり、毎回これで合ってたっけ…?となりがちなのがよくない。いや、もう色で覚えたが。他にも売っている店があまり多くないのも悩みだった。牛乳石鹸なら大抵の店にあるだろう。

因みに牛乳石鹸の箱にはSOAPと書かれており、固形だから石鹸、液体だからソープという話ではないらしい。そういえば昔は液体のやつをボディーシャンプーとか言ってた気がしなくもない。また、赤箱は関西向け、青箱は関東向けだったらしい。近所で赤箱の方が青箱より売れてそうだったのはそこにも理由があるのかもしれない。

しかし変革シリーズも第五弾となった。思えばWordPressからadiaryの乗り換えも変革シリーズにしてしまってよかった気がする。