2019年9月10日火曜日

USB PD(USB Power Delivery)の現状

ほぼ、以下2つの記事のまとめ

 USB Power Deliveryの規格をざっくり解説
https://hanpenblog.com/3343/

【特集】これで失敗しない、USB PD充電器選び(解説編) - PC Watch
https://pc.watch.impress.co.jp/docs/topic/feature/1164685.html

対応している電圧と電流の組み合わせ

USB PDは、Power Rules (パワールール)という仕様がある。

初期のRevision 1.0では、次のProfileという仕様であったため、12Vに対応しているUSB PDの機器が多く、記載がなくても12Vに対応していることもある。


ケーブル

USB PDには両端USB Type-CのUSB PD対応ケーブルが必要。出力の明記がないUSB PD対応ケーブルは3A出力と考える。(20V 5Aの出力に対応するためには、E-Markerチップの搭載が必要なため、5A対応と明記されているはず)ケーブルが充電アダプタの出力をデバイスに伝えられず充電できなくなるケースがあるため、USB PDに対応したケーブルを使用する。


似た規格

Qualcommの独自規格Quick Charge(QC)は、Type-A→Type-Cケーブルも使えるUSB PDとは異なる規格だが、QC4.0でPDを包含するようになった。(QC3.0までは完全に異なる規格)


アダプタとデバイスのネゴシエーション

USB PDでは、接続時にUSB PDアダプタが対応している電圧/電流の組み合わせをデバイスに通知し、デバイスが使用する電圧を回答することにより充電を開始する。ただし、アダプタから出力が十分でない場合は、デバイスの設計によって、充電を拒絶したり、充電のOn/Offを繰り返したり、充電中アイコンのまま充電されなかったりする。またデバイスの電源On/Offによって条件が変わるノートPCが多い。(電源Off時に充電できなければ諦める。)

USB PDアダプタには、電圧(V)と電流(A)の組み合わせ(Power Data Object=PDOと呼ばれる)の記載がある。しかし、デバイスは対応している電圧(V)と電流(A)の組み合わせの一覧が記載されないことが多い。


例えば、Huawei Matebook e は、12V/2Aにしか対応していないため、15V、9Vでは充電できないが記載はない。

USB PD対応充電器・モバイルバッテリーで色々測定してみる | Curiositas https://ameblo.jp/caelumst/entry-12355624461.html



2019年5月3日金曜日

ドライブレコーダーを防犯カメラの代わりに使う

中古で売られていたカロッツェリアの「ND-DVR1」。これを防犯カメラの代わりに使えないか検討。

ドライブレコーダーはカメラ、記録装置がコンパクトかつ安価にまとまっているので、ネジなどで固定できないアパートなどでの防犯に適していそう。

ND-DVR1は、現行の「VREC-DS600」の1つ前の機種。現行の前後セパレートタイプの2カメラドラレコ「VREC-DS500DC」なら2か所の監視ができるかもしれない。

ドライブレコーダー carrozzeria | パイオニア株式会社
https://jpn.pioneer/ja/carrozzeria/system_up/recorder/

ND-DVR1
https://jpn.pioneer/ja/carrozzeria/system_up/recorder/nd-dvr1/


ND-DVR1は公式には32GB SDカードにしか対応しておらず、低画質(848×480P)で約15.6時間、 標準画質(1280×720P)で約10時間、 高画質(1920×1080P)で約4.8時間。低画質にしても監視カメラとして使うには短すぎる。。。

ただし、SDカードとの相性問題はあるが、以下のリンク先にmicroSDXC 64GBや128GBも使えると情報があり、まとめると次のSDカードは使えるらい。
128GBが使えれば、低画質(848×480P)で約62.4時間となり、2日と14時間録画でき問題なくなる。 標準画質(1280×720P)でも40時間となり、2日近く録画できるため実用可能な範囲になる。


使える
  • Transcend microSDXCカード 64GB Class10(ND-DVR1でフォーマット)
  • Team Micro SDHC/SDXC UHS-1 128GB(I-O DATA ハードディスクフォーマッタでFAT32フォーマット
  • Transcend microSDXCカード 128GB Class10 UHS-I対応 400×I-O DATA ハードディスクフォーマッタでFAT32フォーマット
使えない
  • シリコンパワー製 Elite UHS-1 microSDHC 64GB


ドライブレコーダーで大容量のmicroSDカードを使用する方法
https://car-accessory-news.com/microsd/
 

https://review.kakaku.com/review/K0000703007/ReviewCD=812769/

I-O DATA ハードディスクフォーマッタ
http://www.iodata.jp/lib/product/i/2107.htm

パイオニアドライブレコーダーND-DVR1が64GB利用可能と聴いて試して見たが・・・(顛末)
http://mobilewatch.jp/?p=1763

ドライブレコーダーのフロントガラスへのダッシュボードの映り込み対策について https://car-accessory-news.com/drive-recorder-uturikomi/


2018年12月5日水曜日

Git(Source Tree)の認証情報の扱い(Authentication failedの解消)

GitのリポジトリをSource Treeで管理しているのですが、新しい環境で次のエラーが発生しリポジトリのクローンがうまくいきませんでした。


git -c diff.mnemonicprefix=false -c core.quotepath=false fetch origin
fatal: ArgumentException encountered.
   同一のキーを含む項目が既に追加されています。
fatal: ArgumentException encountered.
   同一のキーを含む項目が既に追加されています。
fatal: Authentication failed for 'https://xxxxxxxxxxxxxxxxx'
エラー終了しました。エラーの内容は上記をご覧ください。


上記エラーの情報を基に検索すると次のような情報が見つかります。
  • 内臓Gitの破損の可能性があるためGitを更新する
  • Gitをアンインストールしてから再インストールする
  • コントロールパネルの資格情報マネージャーのWindows資格情報 - 汎用資格情報でリポジトリのURLと紐付いた認証情報を修正する(コントロール パネル\すべてのコントロール パネル項目\資格情報マネージャー)
  • Source Treeのツール - オプション - 認証から認証情報をGitHubに変える

Gitの再インストールでも解決しなかったのですが、コントロールパネルに資格情報が存在しなかったことから、Git側の認証情報の保存に問題があると判断し調査を始めました。するとGitの認証情報の保存方法は選択式になっていることがわかりました。

設定されている認証情報の保存方法の確認

認証情報の保存方法は、git configの credential.helper で確認できます。通常は、「manager」となっており、Windowsの資格情報マネージャーに保存されるようになっていますが、私の環境ではうまく保存されていませんでした。

git config --list
すべての設定が出力されるので、credential.helperの項目を探す必要があります。重複した設定項目もすべて出力され、最後に表示された設定値が有効な設定値となります。「q」で終了できます。


credential.helper = manager

git config credential.helper
credential.helperの有効な値だけを表示します。値が存在しない時は何も表示されません。





利用可能な認証データキャッシュ方法の確認

次のどちらかのコマンドで利用可能な認証情報の保存先の一覧を確認できる。保存先にあるcredential-storeは平文で保管されるため、危険なので使わない。Windowsの資格情報マネージャーへの保管は、credential-wincred 。

git help -a | gawk '/credential-/ {print $1}'

git help -a | grep credential-




Gitの認証情報の保存先にWindowsの資格情報マネージャーを指定する

git config --global credential.helper wincred


Gitの認証情報の保存先を削除する
git configの削除には、--unset オプションを使用する。

git config --global --unset credential.helper

複数の値が登録されている場合、warning: credential.helper has multiple values エラーとなり削除できないことがある。その場合は、-unset-all オプションを使って削除する。

git config --global --unset-all credential.helper


参考

Git - 認証情報の保存
https://git-scm.com/book/ja/v2/Git-%E3%81%AE%E3%81%95%E3%81%BE%E3%81%96%E3%81%BE%E3%81%AA%E3%83%84%E3%83%BC%E3%83%AB-%E8%AA%8D%E8%A8%BC%E6%83%85%E5%A0%B1%E3%81%AE%E4%BF%9D%E5%AD%98


2018年11月27日火曜日

英語で名言

かっこいい英語・心に沁みる英語名言
 http://www.slangeigo.com/archives/cat_1209253.html
上記リンクより気になったものを抜粋


change starts with you.
変化はあなたから始まるものなの

「失敗こそ最高の師なのだ」
The greatest teacher, failure is.

The nobelest art is that of making others happy.
「最も崇高な芸術とは人を幸せにすることだ」


May the Force be with you.
「フォースの力が共にあらんことを」
→メールの〆に「健闘を祈る!」「ガンバレよ!」という意味


Do or do not. There is no try.
「やるか、やらぬかだ。やってみるなどいらん。」

Death is a natural part of life.
「死は生きることの一部だ。」



Who says you can't run away from your problems?
「問題から逃げちゃいけないなんて、誰が言ったか?」
「誰が問題から逃げることなどできないなんて言ったか?」


There is no finish line.
「ゴールなんてないんだ」


Everything you need is already inside.
「必要なものは全て君の中にあるんだ」


夢だけど、夢じゃなかった!
"It was only a dream!"
"It wasn't a dream!"


Nothing’s ever for sure. That’s the only sure thing I do know.
(ビューティフル・マインド)
→人生に確かなことなんてない。それだけが確かなことなのだ。


【心に留めておきたい"幸せを呼ぶ"10ステップ】
憎むより愛して。
心配するより踊って。
受け取るより与えて。
消費するより創り出して。
しかめっ面するより笑って。
話すよりよく聞いて。
恐れるより挑戦して。
批判するより受け入れて。
見ているより行動して。
文句を言うより感謝の気持ちをもって。
1. Hate less, love more.
2. Worry less, dance more.
3. Take less, give more.
4. Consume less, create more.
5. Frown less, smile more.
6. Talk less, listen more.
7. Fear less, try more.8. Judge less, accept more.
9. Watch less, do more.
10. Complain less, appreciate more.

think less, feel more;
and fear less, love more.
考えるより、感じて。
心配するより、もっと人を愛して。

"Learn more. See more."
「学ぶほどに見えるものが増える。」

You can reach the top of any mountain if you walk step by step. You don't have to walk fast; you only have to keep walking. There's no shortcut, no giving up. -Tabei Junko
「一歩一歩着実に歩けば、どんな山の頂上にもたどり着くことができます。速く歩く必要はありません。ただ歩き続けさえすればよいのです。近道はありません、あきらめないことが大切なのです。 田部井 淳子」

The trouble is, you think you have time.
「問題は、あなたが自分には時間があると考えていることだ。」(ブッダ)


"Things will work out". This is the words for those who are doing their jobs.
「何とかなる。それは、やることをちゃんとやってる人のセリフ。」(リトル・ミー)


I don't trust words. I only trust actions.
『言葉は信用しない。信用するのは、行動。』


Sometimes, we need to be hurt in order to grow. We must lose in order to gain. Sometimes, some lessons are learned best through pain.
『時に人は、成長するために傷つく必要があり、何かを得るために失わなければならないものもある。痛みを通して最高の教訓を得ることだってあるのだ。』(ウィル・スミス)

「あなたの存在に感謝します。」「あなたでいてくれてありがとう」
Thank you for being you.

2.「あなたのそばに立っているだけで幸せなの。」
I'm happy just standing here next to you.


Happiness is a state of mind. It's just according to the way you look at things.
「幸福とは心の状態のことを言うんだ。物事をどう見るかなんだよ。」

When you feel like quitting: think about why you started.
「もし何かをやめようと思ったら、どうして始めようと思ったのかを考えよう!」
 何かを諦めそうになったときに、いつも心に留めておきたい名言ですよね。


Pain makes you stronger
Fear makes you braver
Heartbrake make you wiser.
- Drake
「痛みはあなたを強くする。恐れはあなたを勇敢にする。傷心はあなたを賢くする。」



"Nobody knows when the last goodbye is."
「最後の別れがいつになるかなんて誰にも分からない。」
日々の関係を大切に!喧嘩や言い争いをしたまま家族や友達と別れてはダメ。

"If you can't find a way, create one."
「道を見つけられないのなら、作り出せ!」

Done is better than perfect.
「完璧を目指すより、まず終わらせろ!」
「やってみなはれ。やらなわからしまへんで」サントリー創業者の鳥井信治郎氏

1."Life is what you make it!"
「人生は自分次第」

2."Never a failure, always a lesson."
「失敗なんてない。全て教訓」(リアーナ)

Love the life you live, Live the life you love.
「自分の生きる人生を愛せ、自分が愛する人生を生きろ」レゲエの神様ボブ・マーリー

"Nothing is impossible, the word itself says 'I'm possible'!" - Audrey Hepburn
「不可能(impossible)な事なんてないのよ。だって言葉それ自体が言ってるでしょ、私はできる(I'm possible)って!」(オードリー・ヘップバーン)


"You never know how close you are. Never give up on your dreams."
「夢にどれだけ近づいているかなんて分かりやしない。だから決して夢をあきらめないで!」

"Don't follow majority, follow the right way."
「大勢の意見に流されるのではなく、自分が正しいと思った道を歩みなさい。」


"Don't cry because it's over, smile because it happened." -Dr. Seuss
「終わってしまったからといって嘆くのでなく、それを経験できたことを喜ぼう。」 (ドクター・スース)

"It is alright to cry. Crying is a natural response to pain."
「泣いてもいいんですよ。痛みに対する自然な反応です。」

Yesterday is a history. Tomorrow is a mystery. Today is a gift. That's why it's called the present.
「昨日はヒストリー、明日はミステリー、今日という日は贈り物。だから現在はプレゼント(present)と言うのです。」

I think we dream so we don't have to be apart for so long. If we're in each other's dreams, we can be together all the time.
「夢を見るのは、ぼくたちが長い間離ればなれにならなくてもいいように、という理由からだと思うんだ。もしぼくたちがお互いの夢の中に出てくれば、いつでも一緒にいられるからね。」
Winnie The Pooh


Never regret anything because at one time it was exactly what you wanted.
過ぎた事を後悔しないで。だってそれは、その時の君にとってまさに必要な経験だったのだから。


Everything happens for a reason.
→自分に起こる全てのことには意味がある

Don't judge me. I was born to be awesome,not perfect.
「勝手に決めつけないで。僕は完璧になる為じゃなく、素晴らしくなる為に生まれたんだから。」(ミニオン)

Who dares wins.
「あえて挑んだ者が勝つ!」「危険を冒す者が勝利する」 「立ち向かう勇気があれば勝てる」イギリスの特殊空挺部隊S.A.S.(Special Air Service)のモットー

What will be, will be. (なるようになるさ)
スペイン語ではQue Sera,Sera [ケセラセラ]


 If you quit ONCE it becomes a habit. Never quit!!
「一度でもあきらめてしまうと癖になってしまう。だから決してあきらめるな!」


Just be yourself.
「自分らしくしていればいいんだよ!」

How others see you is not important. How you see yourself means everything.
「他人が自分の事をどう見るかなんて重要ではない。自分が自分自身をどう見るかが全てなのだから。」

I can accept failure, everyone fails at something. But I can't accept not trying. -Michael Jordan
「失敗は誰しも何かしらするものだから受け入れられる。ただ挑戦しない事は受け入れられないんだ。」
(マイケル・ジョーダン)

All our dreams can come true - if we have the courage to pursue them.  Walt Disney
「どんな夢でも叶うんだ。夢を追い続ける勇気がある限り。」(ウォルト・ディズニー)


Don't cry over the past. Smile at the future.
「過去を振り返って嘆くのではなく、未来に向かって微笑もう。」

Do what you want to do,no matter what anyone tells you.
「人が何と言おうとあなたがしたいと思うことをしなさい。」(陽のあたる教室で)

The sky is the limit.
「可能性は無限だ!」


Here goes nothing.
(ダメもとでやってみるか)

「当たって砕けろ」
Gor for broke.


"Never say never!"(まだ可能性はあるよ!)夢をあきらめかけている友達に『絶対ないとは言えない=可能性はあるよ!』と励ます時に使えます!














2018年9月3日月曜日

多くの人がドレイファスモデルの中級者


ドレイファスモデルの第2段階:中級者
独力で仕事に当たれるが問題処理に手こずる。最近経験した似通った場面を参考にする。情報を手早く入手したがるが、理論・原則は望まない
現実は、大半が中級者から上へ上がれていない


熟練していない人の方が「実は自分はかなりのエキスパートである」と思い込む傾向がある「熟知よりも無知の方が自信の源になる」→「二次無能力」


二次無能力となるまで
マニュアルなどを基に中級者となる。
理論や原理原則を学んでいないことを気にしながら、入手した解決法を使って目の前の仕事を片付ける。
多くの仕事をこなす中で、だんだん理論や原理原則を学んでいないことを気にしなくなる。
多くの仕事をこなしたことが自信になり、熟練したと思い込む。
熟練者になった思い込んだ中級者となる。


参考

散歩よんぽ: 二次無能力
http://tomokogi00.blogspot.com/2010/11/blog-post_18.html

エンジニアの技能レベル~ドレイファスモデル~ http://www.02.246.ne.jp/~torutk/seway/dreyfus.html

中級者でいることの価値が急落していく(むしろ害に?) - 勘と経験と読経 http://agnozingdays.hatenablog.com/entry/2012/11/20/231435

TrelloのDescription(詳細)の変更履歴を確認する


Trello(トレロ)のDescription(詳細)は、修正履歴が記録されています。そのため、誤って削除してしまっても復元することが可能です。

Trello(トレロ)の画面から変更前のデータを参照することはできませんが、Web API経由で参照可能です。変更履歴はWeb APIといってもブラウザから参照可能です。

変更履歴を確認する方法

次のようにCardを開いた状態でURLを取得します。
https://trello.com/c/H23JBZZw/319-詳細履歴テスト
https://trello.com/c/H23JBZZw/319-%E8%A9%B3%E7%B4%B0%E5%B1%A5%E6%AD%B4%E3%83%86%E3%82%B9%E3%83%88
日本語かもしれませんし、暗号のような形式かもしれませんが、どちらでも構いません。

上記URLの赤字の部分を抜き取って、下のURLの赤字の部分を書き換えます。
https://trello.com/1/cards/H23JBZZw/actions?filter=updateCard:desc

このURLでアクセスすると画面に変更履歴が表示されます。



参考

カードの詳細説明の変更を元に戻す - Trelloヘルプ
https://help.trello.com/article/783-recovering-the-description-of-a-card-that-has-been-changed

2018年8月9日木曜日

Outlook 2016のデータファイル(.ost)の削除方法

Outlook 2016を開くと次のエラーが出るようになりました。

Outlookデータファイル(ost)の古いコピーが使用されています。Outlookを終了し、ファイルを削除して、Outlookを再起動してください。次回送受信を開始したときに、新しいファイルが自動的に作成されます。


エラーメッセージに従って、.ostファイルを消そう思ったのですが、どこにあるかわかりません。インターネットで調べても古いoutlookの情報しか出てこず場所がわかりませんでした。
色々調べていくうちに、場所が分かったのでメモしておきます。

メニューバーのファイルメニューから「アカウントの設定」を開きます。


新しく開いたウィンドウの中から「データファイル」のタブを選択し、「ファイルの場所を開く」を選択します。



開いたエクスプローラに.ostファイルがあります。
outook 2016を閉じると.ostファイルが消せるようになりますが、念のため違う場所に移動させた方がよいです。


オフライン Outlook データ ファイル (.ost) ファイルとは

ローカル コンピューター上のメールボックスの同期用のコピーデータです。メール サーバーへの接続できなくなった時にすべてのメール、予定表のデータ、連絡先、および以前にダウンロードされているタスクなどに.ostファイルのデータを使ってアクセスします。
.ostファイルには、メールサーバーと同期されない「メモ(このコンピューターのみ)」フォルダなどのデータも含まれています。そのため、.ostファイルを削除すると、これらのデータが永遠に失われてしまいます。

参考

デスクトップ版Outlookアプリのトラブルに振り回された日
http://www.atmarkit.co.jp/ait/articles/1703/29/news012_2.html

2018年8月1日水曜日

Nugetのpacagesフォルダを統合してディスク容量を節約


Nugetのpacagesフォルダは移動可能で、複数のソリューションで共有することができます。pacagesフォルダを移動する方法は次の2つの方法があります。移動した場合はパッケージの再インストールが必要になります。


ソリューションファイル(.sln)の位置を合わせる

Nugetのpacagesフォルダはソリューションファイル(.sln)と同じ階層に作られるため、複数のソリューションファイルを同じ階層においておけば、Nugetのpacagesフォルダは1か所にまとまります。



NuGet.configファイル で Nugetのpacagesフォルダの場所を指定する

NuGet.configファイルのrepositoryPathでNugetのpacagesフォルダのパスを指定できます。指定しておけば、そのパスにNugetのpacagesフォルダが作られます。NuGet.config ファイルは、ソリューションファイル(.sln)と同じもしくは、上の階層にあればOKです。(ドライブのルートまで再帰的に検索されるそうです。)

NuGet.configファイルの例

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="repositoryPath" value=".\packages" />
  </config>
</configuration>

注意

複数人で作業している場合、それぞれにNuGet.configを指定するとプロジェクトファイル(csproj )のHintPathなどのパスが人によって変わることになりGitで管理しにくくなります。


パッケージの再インストール

pacagesフォルダの位置を変更しても、リビルドなどでは参照の設定が変わらないため、パッケージを再インストールする必要があります。
パッケージマネージャーコンソールを開いて、次のコマンドを実行します。

Update-Package -Reinstall

このコマンドを実行することで、プロジェクトファイル(csproj )のHintPathが正しいパスに書き換えられ参照設定が正しくなります。

ただし、一部のパッケージはプロジェクトファイル(csproj )にHintPath以外のパス情報を持っている場合があり、それらがエラーになることがあります。Nugetのpacagesフォルダを移動させてビルドができなくなったプロジェクトがあれば、プロジェクトファイル(csproj )で、移動前のpacagesが指定されている箇所がないか検索してみてください。


参考

複数のソリューション間で NuGet のリポジトリを共有する - しばやん雑記

2018年7月4日水曜日

height:100%のtextareaとiframeでスクロールバーが出ないようにする方法


height:100%のtextareaとiframeでブラウザによってはスクロールバーが出ることがあります。その対策として親要素にoverflow:hiddenを追加するという記事が多く書かれています。

これまであまり気にせず、overflow:hiddenで処理してきたのですが、参考に記載したサイトの記事を読んで納得しました。

HTML5では inline 要素 (inline-block) の vertical-align は baseline となりますが、baseline の位置が決まっていないそうです。そのため、baseline が bottomではないブラウザの場合、textarea や iframe などの inline 要素を height:100% とするとスクロールバーが出てしまうそうです。

vertical-align を bottom にすればスクロールバーは表示されなくなります。



borderやpaddingも含めてheight:100%にするには、box-sizing:border-boxを指定します。
* {
    -webkit-box-sizing: border-box;
        -moz-box-sizing: border-box;
             -o-box-sizing: border-box;
           -ms-box-sizing: border-box;
                  box-sizing: border-box;
}

(CSS3に対応した少し古めのブラウザでも正しく表示されるようにベンダープレフィックス付きも指定する)


参考
Chromeのheight:100%がおかしい
http://var.blog.jp/archives/28299286.html

CSS3 の box-sizing が便利すぎる!! padding や border に依存しない width, height 指定
http://phiary.me/css3-box-sizing/

【CSS】box-sizing:border-boxの使い方|効かない時は?
https://saruwakakun.com/html-css/reference/box-sizing

2018年6月27日水曜日

Windowsで始める初めてのSSH

Windows 10 Fall Creaters Updateでもベータ版が、インストールすることができましたが、April 2018 Update(1803)から、ついにWindowsでもSSHクライアントが標準搭載されるようになりました。(SSHサーバーは、後述する簡単なインストール作業が必要です。)

以前から気になっていたので、SSHを触ってみました。

SSHとは

sshは、SSHクライアントで入力したコマンドが、暗号化された通信経路を通ってサーバーに伝わりSSHサーバー(SSHD)がコマンドを実行します。

クライアントとサーバーの認証方式としては公開鍵認証が使われます。(もちろん、パスワード認証もできますが、セキュリティレベルは低くなります。)

WindowsではSSHの環境を構成するサービスとして次の2つがあります。
ssh-agent(OpenSSH Authentication Agent)
初期状態:無効 
ssh-agent 公開鍵認証用の秘密鍵のパスフレーズの管理サービス

sshd(OpenSSH SSH Server)
初期状態:手動
SSHのサーバー機能を提供するサービス(OpenSSHサーバーをインストールすると追加される。)


SSHで接続する

コマンドライン(cmd.exe)で次のコマンドを入力することで、SSHDに接続することができる。コマンド実行後、指定したユーザーのパスワードを入力すれば接続できる。

 SSH  サーバーのユーザー@サーバー名
※初回接続時にサーバーの身元を表すキーを登録するか聞かれるメッセージが表示される。

サーバーのユーザー
サーバーのOSにログインできるアカウントでドメイン部分は次のように省略される。
省略した結果、重複した場合は、ローカルユーザーが優先される。

 マイクロソフトアカウント(例:aaa@outlook.jp) → aaa
 ドメインユーザー(例:aaa@company.co.jp)aaa
ローカルユーザー(例:aaa)aaa


サーバー名
サーバーのホスト名でもIPでもどちらでも構わない


OpenSSH サーバー(sshd)のインストール

①設定アプリから「OpenSSHサーバー」を選択する。

②SSHDサービスが待ち受ける22番ポートをファイアウォールの例外に追加する。
netsh advfirewall firewall add rule name="sshd" dir=in action=allow protocol=TCP localport=20022 profile=private


③SSHDサービスを開始する。
net start sshd
sc start sshd
sc config sshd start= Auto

sshdをインストールしてもSSHDサービスは自動で開始しないため、インストールしただけでは、他のSSHクライアントから、勝手に接続されることはない。

④SSHDの状態確認
試しに自分自身で接続してみる。
ssh localhost

SSHDサービスの状態確認
sc qc sshd
[SC] QueryServiceConfig SUCCESS
SERVICE_NAME: sshd
        TYPE               : 10  WIN32_OWN_PROCESS
        START_TYPE         : 3   DEMAND_START
        ERROR_CONTROL      : 1   NORMAL
        BINARY_PATH_NAME   : C:\Windows\System32\OpenSSH\sshd.exe
        LOAD_ORDER_GROUP   :
        TAG                : 0
        DISPLAY_NAME       : OpenSSH SSH Server
        DEPENDENCIES       :
        SERVICE_START_NAME : LocalSystem

OpenSSH サーバー(sshd)の各種ファイルの場所

C:\ProgramData\ssh\sshd_config
SSHDサーバーの設定ファイル。ログも同じ階層にある。

C:\Windows\System32\OpenSSH\sshd_config_default
設定ファイルの初期値ファイル。同じ階層にsshd.exeの実態もある。

C:\Users\ユーザー名\.ssh\known_hosts
SSHクライアントが過去に接続したことがあるSSHDサーバーのホストキーの一覧

OpenSSH サーバー(sshd)のセキュリティを強化する設定

SSHの歴史は古く過去との互換性のため、初期値は比較的セキュリティレベルが低いため、状況に合わせてsshd_config修正する。sshd_configファイル変更後は、SSHDサーバーを再起動すれば設定が反映される。

Protocol 2
プロトコルバージョン1にしか対応しないSSHクライアントはほぼ存在しないため、2に限定する。

PermitRootLogin no
root ログインの禁止
WindowsのSSHDサーバーでは、最初からサーバーのOSにログインできるアカウントで認証されるので、rootログインは不要


PermitEmptyPasswords no
空のパスワードユーザのリモートログインを拒否 

AllowUsers foo hoge fuga
接続ユーザを制限(例では、foo、hoge、fugaの3ユーザー

Port 22000
ポート番号22には、攻撃のターゲットになりやすいため

ClientAliveInterval 300
ClientAliveCountMax 0
アイドル状態(無応答状態)が指定した時間を過ぎると「Write failed: Broken pipe 」と表示しログアウトする。

パスワード認証禁止(公開鍵認証のみにする。)
1接続あたりの最大認証回数の制限

scpについて

SCPは、内部でSSHを使ってファイルを転送するコマンドです。
転送元ファイルはscpコマンドを実行したマシンになります。「転送元ファイルに転送元ユーザー@転送元サーバー」を記載すれば、転送元もリモートのサーバーにすることもできます。

 scp   転送元ファイル   転送先ユーザー@転送先サーバー:C:/foo/転送ファイル.txt


ファイルパスの区切りは「\」ではなく「/」にした方がよいです。sshdサーバーがwindows以外の時は「/」にしないとエラーにはならないがファイルが作られないという不思議な状態になることがあります。

転送先ファイルは、常に上書きされます。


SSH接続時のエラーの対処

Host key verification failed
SSHDサーバーのホストキーが、以前SSHクライアントが接続したときに保存したキーと異なっているため、SSHDサーバーのなりすまし防止のため発生したエラー

通常は次のコマンドで更新するのですが、Windows環境では「Updating known_hosts is not supported in Windows yet.」エラーとなり、ホストキーの書き換えができない。

ssh-keygen -R ルーターIP

SSH接続時のエラーメッセージ中にある通り次のエラーメッセージ部分に記載された「known_hosts」ファイルを直接修正する。(エラーメッセージ中のパスは、\マークが2重になっているので1つに書き直す。)

Add correct host key in C:\\Users\\ユーザー名/.ssh/known_hosts to get rid of this message.


参考

プロトコルバージョンを2に限定 root ログインの禁止 パスワード方式の許可/禁止 接続ユーザを制限 最大試行回数を制限
http://www14.plala.or.jp/campus-note/vine_linux/server_ssh/sshd_config.html

OpenSSHサーバーがWindows10に正式にやってきた(April 2018 Update/1803) | Webセキュリティの小部屋
https://www.websec-room.com/2018/05/12/2933

SSHサーバへ接続出来ない・遅い時の原因と対処法 | 俺的備忘録 〜なんかいろいろ〜
https://orebibou.com/2014/12/ssh%E3%82%B5%E3%83%BC%E3%83%90%E3%81%B8%E6%8E%A5%E7%B6%9A%E5%87%BA%E6%9D%A5%E3%81%AA%E3%81%84%E3%83%BB%E9%81%85%E3%81%84%E6%99%82%E3%81%AE%E5%8E%9F%E5%9B%A0%E3%81%A8%E5%AF%BE%E5%87%A6%E6%B3%95/

SSH接続エラー回避方法:.ssh/known_hostsから特定のホストを削除する/削除しないで対処する3つの方法
https://qiita.com/grgrjnjn/items/8ca33b64ea0406e12938

2018年5月17日木曜日

仮想マシンやVHDブートのOSイメージを作成するSysprepの使い方

仮想マシンやVHDブートの基になるOSイメージを作成するためのコマンド

次のコマンドを実行して、OSイメージを一般化する前にシステム監査モードで不要ユーザーの削除などを行う必要がないか検討すること

cd %SystemRoot%\System32\sysprep
sysprep  /oobe  /generalize  /quit



コマンドと同じ設定にしたSysprepの画面
        

Sysprepで一般化しないことによって生じる問題

Sysprepで一般化しないことにより、マシンSID(コンピュータSID)が重複しますが、これが直接的な原因となることはないといわれています。しかし、Sysprepで一般化しないことにより、マシンSIDなどを基に生成されたCIDやディスク署名などコンピュータ固有の情報もリセットされずに残ります。
これらの情報が重複していることによりフェールオーバークラスタ、MSDTC、VHDのマウントなどにトラブルが発生することが分かっています。

マシンSIDを調べる方法

ローカルアカウントでcmd.exeを起動し、「whoami /user」コマンドを実行するとユーザーSIDが取得できる。ユーザーのSIDは、マシンSID+αのため、+αを除くとマシンSIDとなる具体的には、最後のyyyyyを除いた部分がマシンSIDとなる。

S-1-5-21-xxxxxxxxx-xxxxxxxxx-xxxxxxx-yyyyy


※ドメインアカウントでログインしている場合、この方法でマシンSIDを取得できない。

Sysprepコマンド説明

/quit (画面の「終了」を選択したのと同じ)
Sysprep 実行後、コンピューターを再起動またはシャットダウンせずに、Sysprep ツールを閉じる。特に仮想環境ではSysprepでシャットダウンしても、勝手に再起動することがあるため、「終了」とする。Sysprep実行後は、OSのメニューから手作業でシャットダウンする。

/generalize (画面の「一般化する」を選択したのと同じ)
セキュリティ ID (SID) やWindows OSのライセンス認証の猶予期間のリセット、システムの復元ポイントやイベント ログの削除が行われ、OSイメージに適した状態になる。
OSのイメージとして使う場合は必ず「一般化する」にチェックを付けること

「一般化する」をオンにしてSysprepできる回数には次の制限がある。
  Windows Vista/7、Windows Server 2008/2008 R2   3回
  Windows 8/Windows Server 2012         1000回


/oobe (画面の「システムのOOBE(Out-of-Box Experience)に入る」を選択したのと同じ)次回OS起動時、ユーザー アカウントの作成、コンピューターの名前作成などの「ようこそ」画面のウィザードを実行します。


/mode:vm(GUIからは利用できない。)
次回OS起動時にハードウェアのチェックが省略され、初回の起動時間が短縮される。(同じ構成のハードウェアで起動する必要がある。)



システム監査モードのメリット

  • OS起動時に作成したOSイメージには不要なユーザーを削除できる。
  • sysprep済のイメージに対する追加の変更が手早く行える。(イメージ起動時にOOBE(ようこそ画面)の処理をスキップでき、イメージ変更後のユーザー削除も不要になる。)

システム監査モードの特徴

  • システム監査モードはOOBE(ようこそ画面)の直前で実行されるモード
  • 監査モードになると、再起動しても監査モードのままとなるため、監査モードを終了するには、sysprepでOOBEモードへ移行する。
  • 監査モード中はAdministratorアカウントで自動ログインされる。


システム監査モード中の注意点

  • 監査モード終了後はAdministratorのユーザープロファイル(ドキュメントやデスクトップ)が削除される。(監査モード中の再起動では削除されない。)
  • 監査モード中にスクリーンセーバー等でパスワードロックがかかると、再度ログオンできなくなる。その場合は、OSを再起動すると自動ログインされる。
  • ドメインに参加していても解除され、常にワークグループになる。


システム監査モードへ入る方法

  • OSセットアップ済の状態Sysprep /audit(システム監査モード)オプションで、システム監査モードに移行する。
  • OS新規インストール中最終段階のユーザー名を入力する画面でCtrl+Shift+F3」を押下する。
  • sysprepで生成したイメージを起動直後ようこそ画面で「Ctrl+Shift+F3」を押下する。

Ctrl+Shift+F3を押下すると再起動が始まる。そのまま待っていると自動的にログインが行われ、ログイン後の画面になる。(デスクトップにはシステム監査モードを終えるために必要なSysprep(システム準備ツール)が起動した状態となっている。)


システム監査モードを終了する方法

システム監査モードは、SysprepでOOBEに移行することで終了できる。
※上記、コマンドの説明の通り、OOBEに移行する際は、「一般化する」等も併せて実施すること

参考

監査モードで環境複製用のマスターイメージをカスタマイズする(Windows 7/Server 2008 R2編)
http://www.atmarkit.co.jp/ait/articles/1112/02/news132.html

sysprepで環境複製用のマスターイメージを作成する(Windows 7/8編)
http://www.atmarkit.co.jp/ait/articles/1307/12/news062.html

ディスク署名/識別子の重複実話(とSysprepが重要な理由)http://www.atmarkit.co.jp/ait/articles/1803/13/news010_2.html

コンピューターSIDを取得する方法
https://qiita.com/tosier/items/d195f0a8194c2895f799