2020/09/29

RLoginでOpenVMSに接続した際の端末タイプの設定方法

先日インストールしたOpenVMS Alpha 8.4-2L1にRLoginで接続すると、端末タイプが「VT500相当」になります。VT500相当ではいけないという事ではありませんが、VT100などにはならないのか、そもそも任意に変更できるのか、不明でした。

$ show term

Terminal: _OPA0:      Device_Type: VT500_Series  Owner: SYSTEM


RLoginのWebサイトにある「エスケープシーケンス一覧」によると、「DA1」の応答はTermID設定によって変化すると書かれています。その「TermID設定」とは「3.6.1 ESC/CSI/DCSの設定」によれば次のように書かれています。

各種IDでは、DA1,DA2,DA3で応答する番号の初期値を設定できます。


試してみたところ、次のように変化しました。

  1. TermIDを「10」とした場合「VT500_Series」になる。
  2. TermIDを「9」とした場合「VT400_Series」になる。
  3. TermIDを「7」か「8」とした場合「VT300_Series」になる。
  4. TermIDを「5」か「6」とした場合「VT200_Series」になる。
  5. TermIDを「2」か「3」か「4」とした場合「VT102」になる。
  6. TermIDを「0」か「1」とした場合「VT100」になる。

OpenVMSに接続する場合、どのVT互換として利用すれば良いのかは、迷うところです。VT220などのキーボードは、IBM-PCのキーボードとは(似ていますが)重要なキー(DOキーなど)に差異があります。このハンドリングをRLoginで対応できるのかを、見極めなければならないと思います。

avahiを利用すると何が出来るようになる?

自宅にはアーキテクチャの異なるマシンが何台かあります。それらの多くは必要な時だけ電源を入れています。24×365で電源が入りっぱなしなのは、FreeBSD/amd64です。またWindows10のデスクトップPCはクライアント環境として使っており、就寝時には電源を落としています。


自宅LANには、他にもNetBSD、OpenBSD、OpenVMSや、VirtualBoxとかVMwareにインストールしたCentOSなどが接続されます。基本的にはTCP/IPの固定アドレスを割り当てるようにしていますが、DHCPを使う場合もあります。そのひとつがdynabook SS SX/15AにインストールしたNetBSD/i386です。自宅で使う場合は固定アドレスを割り当てることも可能ですが、外出先に持って行くことがあるので、その場合はDHCPを利用することになります。自宅か外出先かに依って設定を切り替えるのは面倒なので、自宅でもDHCPを使うことにしています。そうしておけば設定を切り替えずに済むからです。


ここで問題になるのが、自宅LANでDHCPを利用した際に割り当てられたアドレスが変動することです。なにしろDHCPなのですから、同じマシンに同じアドレスが割り当てられるとは限りません。それがDHCPというものなので、それはやむを得ないのですが、自宅LANにある他のマシンから接続しようとした際に、アドレスが決まっていないと、不便です。


なんとか解決方法はないものかとWebを検索していたら、avahiというものが見つかりました。技術的にはmDNSという仕組みに基づく実装のようです。僕が必要としているものよりも大掛かりで、必要のない機能も含まれていますが、概念としては求めているものです。


どのようなものなのか、ちょっと試してみようと思います。しかしavahiの想定している環境構築の概念がはっきりしません。問い合わせをおこなうデーモンが動くようですが、LAN上に一つだけ存在すればよいのか、各マシン上に各々配置する必要があるのか、全体像が見えてきません。


Webを探ると事例が見つかるのですが、「そもそもavahiとは」というような情報がみつかりません。とにかく試してみるしかないのかと思っているところです。

2020/09/27

SSHのエージェント転送をTera TermやRLoginで実行

SSHの秘密鍵を多数の接続先に置かないで済むため、エージェント転送をおこなうにはU*IXならば次のような手順となります。

  1. ssh-agentを実行しておく。
  2. ssh-addで秘密鍵を登録しておく。
  3. sshで接続する際にオプション「-A」を指定する。


これは接続元がU*IXの場合の手順ですが、もし接続元がWindowsなら手順はどうなるのでしょうか。


端末エミュレータとしてRLoginを使うなら、接続設定において「サーバー」>「プロトコル」で「エージェント転送を有効にする」を指定するだけです。とても簡単です。


端末エミュレータとしてTera Termを使う場合はどうでしょう。RLoginのように簡単なのかと思って、SSH認証において「エージェント転送する」を指定しましたが、これでは駄目で、以下のようなエラーが出てしまいました。

Permission denied (publickey,keyboard-interactive).


どうやらU*IXの手順で必要だったssh-agentssh-addに相当するものが無いと駄目のようです。

  1. ssh-agentに相当するのはPageantというソフトのようです。これはWinSCPに不増kしていたものを使いました。元々はPuTTYに付属するようですが、事情はよくわかりません。
  2. ssh-addに相当するのはPageantに秘密鍵を登録することです。
  3. Tera Termで「エージェント転送する」を指定するという行為は、オプション「-A」を指定することに相当するのでしょう。

Tera Termの挙動はU*IXでの手順とおなじですが、RLoginの方が使い勝手が良い気がします。

SSHを鍵認証する場合の鍵作成の方針とは?

SSHで鍵認証を利用する際に必要となる秘密鍵・公開鍵は、どのような方針で作成するものなのでしょうか?ssh-keygenで鍵を作成するわけですが、コマンドを打てば鍵が出来てしまいますが、それがSSH鍵認証で想定している方針に合致しているとも限らないわけです。


ssh-keygenで作成した公開鍵は、以下のような形をしています。右端にあるのはコメントでオプションで変更することができますが、デフォルトでは鍵を作成したユーザ名が入ります。

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABErI+RbZ foo@bar.com


このデフォルトで与えられるコメントを考えると、鍵は「ユーザ(とホスト)」を単位に作成されるものと考えるのが基本なのかと思います。SSH鍵認証の入門レベルの説明としては、それで構わないと思います。しかし現実の環境において、多数のサーバを扱う管理者であれば、どうなってしまうのでしょうか。サーバが何十台もあったとしても、各サーバでssh-keygenを用いて鍵を作成することは可能でしょう(サーバ上に秘密鍵を置くことの是非はあるかもしれませんが)。作成された公開鍵を全サーバに配置していく作業は(できるかもしれませんが)大変です。さらに作業が大変か否かという実務的な問題だけではなく、各サーバに秘密鍵が置かれていることがセキュリティ的に妥当といえるのかという問題もあるでしょう。


このような問題はssh-agentssh-addを利用することで解決できそうです。「エージェント転送」を使えば、クライアントマシンだけに秘密鍵を置いておけば、その他のサーバに秘密鍵を置く必要がなくなるようです。


管理者が使用しているクライアントマシンで鍵を作成しておけば、全サーバでは鍵を作成しなくて良くなるのですから、これで疑問は解消したと言えるのでしょうか。つまり鍵は「個人」を特定するものなのでしょうか。


それでは管理者が複数のマシンをクライアントとして利用している場合には、どうなるのでしょうか。鍵が「個人」を特定するのであれば、同一管理者が使用する全クライアントマシンでは、秘密鍵を使いまわすことになります。それでも構わないのかもしれませんが、そのような運用を認めると、複数の管理者で秘密鍵を使いまわすことに繋がる恐れもないとは言えません。


運用次第で何とでもなるという話ではなく、SSH鍵管理の発想とは何だったのかという事を知りたいと思います。

2020/09/23

Tera TermでもRLoginでもOpenVMSの利用に問題はないのか

Microsoft Windows上で使う端末エミュレータは、昔からTera Termを利用していました。しかし接続先の日本語環境をUTF-8にすると、(何かの設定が悪いのだと思いますが)ちゃんと日本語が出なくなりました。そこで代わりとなる端末エミュレータを探すとRLoginに辿りつきました。それ以来、Tera Termを使うことは無く、もっぱらRLoginを利用していました。


最近OpenVMS Alpha 8.4-2L1をインストールし始めた際にも、RLoginで接続していました。コマンドライン操作をしている分にはRLoginでも別に差し支えありません。ところがスクリーンエディタを利用しようとすると、ちょっと問題が出てきました。


OpenVMSのスクリーンエディタは、VT端末のキーボード配置を期待して操作するようになっています。今日のパソコンのキーボードと似ていますが、ファンクションキーの配置など多少キー配置が異なっています。RLoginでVT端末と同一の操作をするためには、何か設定すれば良いのか、そもそも不可能なのか、よくわかりません。そこで最近は利用していなかったTera Termを使ってみました。VT端末のキーボードとの対応関係を理解しておく必要はありますが、少なくともVT端末と同等の操作をすることができます。


接続先によってTera TermとRLoginを使いわける事は避けたいと考えています。できればRLoginに統一したいのですが、そううまくいくかどうか調査してみようと思います。

2020/09/22

OpenVMS Alpha 8.4-2L1に対してSSHでログインする方法は何か?

Digital PersonalWorkstation 500auにVSI版OpenVMS Alpha 8.4-2L1をインストールしました。この時点で次のようなプロダクトがインストールされています。

------------------------------------ ----------- ---------

PRODUCT                              KIT TYPE    STATE

------------------------------------ ----------- ---------

VSI AXPVMS AVAIL_MAN_BASE V8.4-2L1   Full LP     Installed

VSI AXPVMS CDSA V2.4-320A            Full LP     Installed

VSI AXPVMS DECNET_OSI V8.4-D         Full LP     Installed

VSI AXPVMS DWMOTIF V1.7-F            Full LP     Installed

VSI AXPVMS DWMOTIF_SUPPORT V8.4-2L1  Full LP     Installed

VSI AXPVMS HPBINARYCHECKER V1.1-A    Full LP     Installed

VSI AXPVMS KERBEROS V3.1-152A        Full LP     Installed

VSI AXPVMS OPENVMS V8.4-2L1          Platform    Installed

VSI AXPVMS SSL V1.4-502A             Full LP     Installed

VSI AXPVMS SSL1 V1.0-2JA             Full LP     Installed

VSI AXPVMS TCPIP V5.7-13ECO5F        Full LP     Installed

VSI AXPVMS TDC_RT V2.3-1220          Full LP     Installed

VSI AXPVMS VMS V8.4-2L1              Oper System Installed

------------------------------------ ----------- ---------

13 items found

PAKは既に入れてありますが、それ以外の設定は何もしていません。ひとまず次のような設定を済ませておきました。

  1. アカウント作成
  2. DECnet-Plusの設定
  3. バッチキューの設定
  4. TCP/IP Services for OpenVMSの設定

DECnet IVとしての設定を済ませましたので(DECnetとして)リモートログインは出来るのですが、DECnetで繋がるのは自分自身だけです。TCP/IPならMicrosoft Windows10やFreeBSD/amd64などから接続できるはずなので、その設定を済ませたいと思います。TELNETなら以前に設定したことがあるので、今回はSSHで接続する環境を設定してみようと思います。しかしながら、TCP/IP Services for OpenVMSの場合、どうすれば良いのでしょう?


FreeBSDやNetBSD、またはLinuxであれば、接続したいアカウントの「~/.ssh」において、公開鍵を「authorized_keys」に追加すれば良い訳ですが、OpenVMSの場合は、どうなるのでしょう?


『TCP/IP Services for OpenVMS Guide to SSH』というマニュアルを見つけたので、目を通してみました。些細なことかもしれませんが、やはり違いがあるようです。

  1. SYS$LOGINの下にある「[.SSH2]」が使われるようです。
  2. RSAかDSAしか選べないようです。普段はED25519を使っているので、同じ鍵は使えないですね。

試しにSSHで接続してみましたが、うまく行きませんでした。問題の所在をつきとめて、接続できるようにしたいと思います。

2020/09/20

CentOS7のインストールで作成されるLVM

 VMwareを利用して、CentOS7をインストールした際のデフォルトの挙動を調べてみました。

使用したのは「CentOS-7-x86_64-DVD-1708.iso」です。これはCentOS 7.4です。インストール中に選択する項目はありますが、まずはデフォルトのままにしてみます。インストール完了後、ブートしてディスクの割り当て状況を確認してみました。LVMが使われている事は承知していましたが、「/dev/mapper/centos-root」と「/dev/mapper/centos-home」が出来ていました。


もしインストール中にネットワーク設定をおこない、(例えば「myhost」のように)ホスト名を指定すると、論理ボリューム名が変わるようです。「/dev/mapper/centos_myhost-root」のようにホスト名が入るようです。


ここで気になったのは、別のところで使っているCentOS7の論理ボリューム名とは違っていたことです。そこでは「/dev/mapper/cl-root」となっています。この名前は、どのようにして付けたのでしょうか。インストール中に指定する箇所は無かったはずです。


もしやと思い、「CentOS-7-x86_64-DVD-1611.iso」を使ってインストールしてみました。これはCentOS 7.3です。やはりデフォルトのままでインストールを完了したところ、論理ボリューム名が「/dev/mapper/cl-root」のようになっていました。要するにCentOS7.3と7.4とで挙動が変わったということでしょうか。この件はリリースノートには書かれていないようです。どういう理由で変更されたのでしょうか?