ConoHa Advent Calendar 2022 18日目の記事です。
とりあえず何か書かねばとConoHaのVPSコンソールを眺めていてネタにできそうな物があったので
今年もちゃんと書こうと思います。
目標
みんな大好きWinSCPを使ってこのはちゃんConoHaのオブジェクトストレージを弄ります。
使う物
- Windows
- WinSCP
- s3Proxy & Java
内容
s3Proxyを使ってWinSCPから繋ぎます。
WinSCPはTLS接続を要求するためs3ProxyにlocalTLSを設定します。
オブジェクトストレージの割り当て、APIユーザー設定については公式のサポートに記載があるため
そちらは、清楚可愛いこのはちゃんの説明に委ねます。
Javaコマンドは使える前提です。
Javaに含まれるkeytoolが使える必要があるためJDKをインストールしておいてください。
keytoolにパスが通っている必要はありません
(実行ファイルパスを直接叩ければ問題無い)
オブジェクトストレージの契約
ひとまずサポートに書いてある通りオブジェクトストレージの割り当てを行います。
コンソールにログイン後、オブジェクトストレージから設定を開き
容量の変更(割り当て)を行います。
APIの設定
サポート通りにAPIユーザーの追加を行います
パスワードを設定するだけです。
パスワード使い回しは絶対にやめましょう。
本記事のメインの s3Proxy の導入、設定
https://github.com/gaul/s3proxy/releases/download/s3proxy-2.0.0/s3proxy
をダウンロードします。
記載時点で2.0.0が最新でした
その他バージョンは以下からどうぞ
ダウンロードした適当なディレクトリに s3proxy を配置します
証明書の発行
Shift 押しながらディレクトリ内で右クリックし、
PowerShellウインドウをここで開く
を選択
Win10のいつからかPowerShellになってます
ここではコマンドプロンプトが使いたいのでPowerShellで開くのは困るのですが
まあいいでしょう
PowerShellからコマンドプロンプトに切り替えます
cmd
keytoolを動かしてオレオレ証明書を作成します
(WinSCPで接続時にTLSが強制されるので必要になります)
keytool -keystore keystore.jks -alias aws -genkey -keyalg RSA
keytoolにパスが通っていない場合
JDKインストールディレクトリのbinからフルパスを指定して実行してください
例
"C:\Program Files\Java\jdk-17.0.4.1\bin\keytool.exe" -keystore keystore.jks -alias aws -genkey -keyalg RSA
実行すると作成パスワードが必要になります
後で使うのと何でもいいのでpassword
としています
入力しても画面に表示されません。
また証明書の所有者情報も入力が必要ですが、適当です。そのままEnterで進みましょう
最後に確認でyes or no を訪ねられるので y
で完了です
C:\Users\ \Desktop\temp>"C:\Program Files\Java\jdk-17.0.4.1\bin\keytool.exe" -keystore keystore.jks -alias aws -genkey -keyalg RSA
キーストアのパスワードを入力してください:
新規パスワードを再入力してください:
姓名は何ですか。
[Unknown]:
組織単位名は何ですか。
[Unknown]:
組織名は何ですか。
[Unknown]:
都市名または地域名は何ですか。
[Unknown]:
都道府県名または州名は何ですか。
[Unknown]:
この単位に該当する2文字の国コードは何ですか。
[Unknown]:
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknownでよろしいですか。
[いいえ]: y
90日間有効な2,048ビットのRSAのキー・ペアと自己署名型証明書(SHA256withRSA)を生成しています
ディレクトリ名: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
keystore.jksがディレクトリに作成されます。
設定ファイルの作成
s3proxyの横にs3proxy.confを作成します
s3proxy.secure-endpoint=https://localhost:8081
s3proxy.keystore-path=keystore.jks
s3proxy.keystore-password=password
s3proxy.authorization=aws-v2-or-v4
s3proxy.identity=access_key
s3proxy.credential=secret_access_key
jclouds.provider=openstack-swift
jclouds.endpoint=https://identity.tyo2.conoha.io/v2.0
jclouds.identity=gnct*******:gncu********
jclouds.credential=****************
jclouds.regions=tyo2
jclouds.region=tyo2
jclouds.endpoint
jclouds.identity
jclouds.credential
jclouds.regions
jclouds.region
の値は各アカウントで変動します
jclouds.endpoint
はAPIのエンドポイントにある Identity Service をそのまま設定
jclouds.identity
はテナント名:ユーザー名
を設定
jclouds.credential
は APIユーザー設定時のパスワード を設定します
jclouds.regions
jclouds.region
はConohaのリージョンに合わせてください
起動 / 起動バッチ
※javaへのパスが通っている前提です
コマンドプロンプトから
又は、start.batを作成しs3proxyを実行します
java -jar s3proxy --properties s3proxy.conf
ログが流れて
[s3proxy] I 12-18 02:41:36.157 main o.g.s.o.e.jetty.server.Server:415 |::] Started @2895ms
Startedと出ていれば起動している様です。
WinSCPの設定
接続情報
基本接続情報
転送プロトコル | Amazon S3 |
ホスト名 | localhost |
ポート番号 | 8081 |
アクセスキー | access_key |
シークレットキー | 保存されないので空でいい |
接続設定
設定を押して高度なサイトの設定を開きディレクトリの設定を変更します
- 最後に使用したディレクトリを記憶するのチェックを外しておき
- リモートディレクトリも空にしておきます。
S3の
- URLスタイルをパスに変更します
OKを押して
セッション作成画面へ戻り
保存で適当な名前を付けて保存する
そうしたらログイン
secret_access_key
を入力
オレオレ証明書のため不明な証明書と出ますが
無視してはい
を選択して接続します
コンテナの作成
裏ではWinSCPがファイルのアップロードを行い更新を済ませています。
作成されているファイルをダブルクリックで開けば
さっき入力した物が保存されているはずです。
最後に
Cyberduck使えばいいじゃんってなりますがWinSCPを繋げるロマンを求めた結果でした。