Windows」カテゴリーアーカイブ

Yubikey (スマートカード)に入れた秘密鍵を使ってSSHにログインする

ラノベのタイトルみたいになってしまった

すったもんだしてYubikeyにSSHの秘密鍵を入れるところまで行ったのだが、これを利用して、ローカルのハードディスクに秘密鍵を置かずに、SSHのログインを使用という話。クライアントはWindows,Mac,Linuxを想定している。
いままで、公開鍵暗号でのSSH接続ができていたことが前提。

Mac,Linux

Yubicoのページ( https://developers.yubico.com/PIV/Guides/SSH_with_PIV_and_PKCS11.html )のStep 4 からほぼそのままでいけた。

まずはOpenSCのインストール。Mac OSX の場合はhomebrewでインストールするのがよさ気。

brew install opensc

これだけでいける。インストール先は/usr/local/opt/openscになる。環境によっては、/usr/local/Cellar/openscになることもある。インストールされたディレクトリは以下のコマンドでも確認できる。

brew --prefix opensc

OSXはメジャーバージョンアップの際に/usr/localにものがあるとしくじる前科があるので若干心配だ。Linuxの場合は、それぞれのパッケージ管理ソフトに従う。

次に参考したページにはssh-keygenで公開鍵を取り出して、リモートホストのauthorized_keysに追加せよとあるが、今まで同じ鍵でサーバ運用していた場合は関係なし。

必要なのはpkcs11のライブラリの場所を調べてそいつがスマートカードを読み取れるかどうか。ちなみに手近のLinuxクライアントはVMware Player のDebianしかないのだが、VMのゲストOSがスマートカードを認識できないので確認できない。(no slotsというエラーが出る)

あとはsshコマンドを叩くときにIオプションでpkcs11ライブラリの場所を指定するだけ。

ssh -I /usr/local/opt/opensc/lib/opensc-pkcs11.so remotehost

こうするとYubikeyの中の秘密鍵を使ってセッションを確立します。しかしこれを毎回打つのは面倒なので、~/.ssh/configに記述しておきます。私の場合はこんな感じ。

Host hoge
        Hostname          hoge.example.jp
        Port              12345
        PKCS11Provider    /usr/local/opt/opensc/lib/opensc-pkcs11.so

 

4行目に書いてあるPKCS11Providerが追加されたところ。

Windows

WindowsのSSHクライアントといえば、TeratermかPuttyが思い浮かぶ。そんな人に手っ取り早いのが、Puttyの中に入っているPageantを使う方法。認証エージェントですが、スマートカード対応版があります。Puttyシリーズをスマートカード対応にしているPutty-CACというプロジェクトがあってバイナリを公開しています。

SSHサーバに接続するだけなら、Putty本体とTeratermでも使えるPageantをダウンロードするだけで大丈夫です。

Puttyそのものの使い方は割愛しますが、接続先ホストの設定でConnection-SSH-Certificationとすすみ、Attempt Certification Authentication にチェックを入れて、Set CAPI certで証明書を選び、PIN入力が出てくれば接続可能です。

同じようにpageantにも証明書を指定しておき、Teratermで接続する際にSSH認証で、pageantを使う、でPIN入力が出てくれば接続可能です。

pageantはOS起動時に起動させれば良いと思います。

その他

それにしてもECDSAの鍵を使えないのが痛い。。。

Windows 8 の記憶域プールの覚書2

前回からのつづきになります。

記憶域プールはプールに物理ディスクを次々と追加できるのがメリットですが、WIndows 8 で用意されているGUIはあまり追加削除が考慮されていないように感じます。GUIだけではできないことも多数で、 PowerShell という管理用のコマンドが必須になります。

Power Shell は WIndows 8 では標準でインストールされており、 検索で探しだしてタスクバーにでもピン止めしておくと便利でしょう。起動したら右クリックで管理者で起動が必要なようです。

続きを読む

Photoshopで「仮想タイルはこれ以上割り当てられません。」の対処法

Windows 7 64bit で Photoshop CS5 を使っているのだけれど、ある日から「仮想タイルはこれ以上割り当てられません。」というエラーを見かけるようになった。少し重たい作業をやるときに出るようで、仮想メモリあたりの問題らしい。

こういった現象が出る前後でPCの環境が変わっており、HDDからSSDへの換装を行い、複数ドライブあったディスクの構成がCドライブだけになった。もとは仮想メモリのディスクをDに割り当てており、これが原因だとは推測できていた。

予想はつくのだけれど、日本語の情報がほとんどなく、「仮想タイルはこれ以上割り当てられません。」の元のエラーメッセージ「No more virtual tiles can be allocated.」で検索をしたら、結構あっさりと見つかった。参考にしたのは以下のURL。

http://forums.adobe.com/thread/375917

仮想メモリがCドライブになったことで、パーミッションが書き込み負荷になって仮想メモリが確保できないのが理由のようだ。 Windows がXPの時は問題にならなかったようなので、Windows Vista あたりから厳しくなったセキュリティの問題と思われる。そもそもCのルートにいきなりファイルを作る Photoshopに問題があり、環境変数でTEMPを指定してるにもかかわらず、それを見ないというなかなか傲慢な作りなのだが、文句言っても始まらない。

上のURLで解決法として3つ示されていて、1つめがPhotoshopをAdministrator権限で動かす。2つめがCドライブのルートにEveryoneの書き込み権限を与える。3つめがドライブに新パーティションを作り仮想メモリの指定を変える。である。WindowsのセキュリティではCドライブ以外のルートの書き込み制限は厳しくないようで、うちでも当初Dドライブのルートに仮想メモリのファイルが存在しても問題は起きていなかった。

1と2はセキュリティを甘くすることなので、3で解決したい。でも本当にパーティションを作るのは得策ではないので、substコマンドによる仮想的なドライブを作成する。

具体的にはコマンドプロンプトで「 subst t: c:¥temp 」といった感じでテンポラリ用のドライブを作って、Photoshop側で仮想メモリのドライブ(この例ではTドライブ)を変更する。

substの結果は再起動によって初期化されるので、スタートアップにバッチファイルを作り毎回指定することで回避。ちなみにWindows 7 の場合のスタートアップの場所は、C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startupです。