TelnetやSSHでDSMにアクセスする~DiskStation DS218j

Synology DiskStation DS218jCUI, DSM, NAS, Synology, Windows, セキュリティ, ネットワーク, 通信

Synology DiskStation DS218jはファイルサーバーとしてだけではなく、Webサーバーやメールサーバーの他、マルチメディア系の様々なサーバーとして利用できます。

実際にUNIX系のOSでサーバーを構築されたことのある方はご存知と思いますが、ほとんどの構築作業は設定ファイルの書き換えとコマンド操作で行うことができるので原則CUIでやります。例えばこんな感じの画面ですね。地味です。

CUI画面|TelnetやSSHでDSMにアクセスする~DiskStation DS218j

さて、ここ十年くらいでパソコンを扱い始めた人は、CUIという言葉は馴染みがないと思います。

キャラクタユーザインタフェース

キャラクタユーザインタフェース (character user interface, CUI)[1]キャラクタベースユーザインタフェース (character-based user interface, CUI) [2]コンソールユーザインタフェース (console user interface, CUI) [3]、またはコマンドラインインタフェース (command line interface, CLI) [4]は、キーボード[5]からの文字列[6]を入力とし、文字列が表示されるウィンドウや古くはラインプリンタで印字される文字などを出力とする、ユーザインタフェースの様式である。もっぱらグラフィカルユーザインタフェース (GUI) の対義語として使われる。

出典:ウィキペディア

CUIの欠点は、ある程度コマンドの機能と書式を覚えないと使い始められない、つまりGUIに対して「敷居が高い」ことにあります。

しかしCUIに慣れていない人々にはそのままでは扱い難いので、最近のサーバーはグラフィカルな設定画面を開いて必要項目にチェックを入れたり、選択したり、パラメータを入れたりして「保存」とか「実行」とかをクリックすると、バックグラウンドでテキストファイルの設定値が書き換わってコマンドが実行される、という作りになっています。

Synology社がNASやルーターに実装させている、Webブラウザ経由でのそのオリジナルの操作体系がDSMというわけです。

DSMでの設定例|TelnetやSSHでDSMにアクセスする~DiskStation DS218j

DSMで【Web Stationの設定~DiskStation DS218j】や【自宅内DNSサーバーの構築~DiskStation DS218j】なんかをやっていると、「ああ、ここの設定はApacheの設定ファイルのあのあたりを書き換えているんだろうなぁ」とか「ここはBINDのゾーンファイルのPTRレコードを書き換える画面なんだろうなぁ」とか思ったりします。そもそもDSM、というかSynologyのNASはLinuxベースのオリジナルOSで作られていますから、サーバープログラムもLinux用のものが多く使われています。

とはいえ、DSMのベースであるLinuxは、もともとコマンドで操作することが前提になっているシステムですから、グラフィカルな画面で操作できるように工夫しても、どうしてもうまくやれない部分がでてくるのは致し方ないところですね。

例えば大勢のユーザーアカウント情報をテキストファイルに書いておいてコマンドで流し込むとか、たくさんのファイルの名前を規則に従って一気に書き換えるとか、いわゆる一括処理が苦手なので、そういう場合は一人ずつ、一つずつ、ちまちま設定していかなければならないわけです。

幸いなことにDSMはCUIでの操作も可能です。DSMの画面から直接CUI操作はできませんが、ネットワークでつながっているパソコンなどからリモートで接続して操作できます。

Windowsの場合、ネットワークでつながっているパソコンに、"Tera Term"とか"PuTTY"などのリモート接続用ターミナルコンソールをインストールしたりすればOKです。

Tera Term (テラターム) プロジェクト日本語トップページ – OSDN

Download PuTTY – a free SSH and telnet client for Windows

Macintoshの場合は標準でインストールされている「ターミナル」から接続できます。

MacintoshのベースはUNIX系OSのBSDですから、同じUNIX系のLinuxがベースのDSMとは相性が良いです。

Windowsの場合、コントロールパネルの「プログラムと機能」から「Windowsの機能の有効化または無効化」で「Telnetクライアント」を有効にすると「コマンドプロンプト」からTelnetで接続できるようになりますが、DSMと日本語文字コードが異なり相性が良くないので使用はお勧めしませんし、その方法はここでは紹介しません。あしからず。

SSH接続をWindowsのコマンドプロンプトから行うには、以前はOpenSSHをインストールする必要がありましたが、Windows10の場合は2018年4月のアップデートから正式にOpenSSHが組み込まれていますので、OpennSSHをインストールすることなく簡単に接続できるようになりました。これは後述します。

DSMにターミナルコンソールで接続できるように設定するのは簡単です。

DSMにログインし、コントロールパネルを開きます。

「端末とSMNP」を開く|TelnetやSSHでDSMにアクセスする~DiskStation DS218j

「端末とSMNP」を開きます。

TelnetとSSHを有効にする|TelnetやSSHでDSMにアクセスする~DiskStation DS218j

「Telnetサービスを有効化する。」と「SSHサービスを有効化する。」の二つの項目があり、利用したいサービスにチェックを入れて「適用」をクリックするとサービスが起動します。

「詳細設定」はSSHサービスを使用するときの暗号化アルゴリズムのレベルを変更したいときに設定しますが、通常は何もしないでOKです。

「ポート:」は、SSHサービスに用いるポート番号の指定で、デフォルトはWell-Knownの"22″です。通常はそのままで問題ありませんが、自宅ルーターにSSHのポートフォワーディングを設定して直接接続する場合で、かつ、自宅ルーターに22番ポートが開いていることをネット上に晒したくない場合、桁数の多いオリジナルのポート番号に変更したほうが良いでしょう。

ちなみにTelnetはポート23番で変更不可のようです。

さて、Telnetは古いサービスで多くの機器が実装していて非常に汎用性が高いのですが、通信経路が暗号化されないため、入力した内容や表示された内容を傍受される危険がありますから、注意が必要です。

Telnet

Telnetテルネット Teletype network)とは、汎用的な双方向8ビット通信を提供する端末間およびプロセス間の通信プロトコルである。RFC 854で規定されている。

より具体的には、IPネットワークにおいて、遠隔地(リモート)にあるサーバ端末から操作できるようにする仮想端末ソフトウェア(プログラム)、またはそれを可能にするプロトコルのことを指す。

現在では、認証も含めすべての通信を暗号化せずに平文のまま送信するというTelnetプロトコルの仕様はセキュリティ上問題とされ、Telnetによるリモートログインを受け付けているサーバは少なく、リモート通信方法としての利用は奨励できない。
リモートログインの代替プロトコルとしては、情報を暗号化して送信するSSHが知られている。

出典:ウィキペディア

とはいえ自宅内のLANから接続するのであれば、Telnetで接続しても通常は問題はありません。

自宅内にあなたの通信を傍受しようとたくらんでいるご家族がいれば問題ですが...。

外出先からTelnet接続する場合、自宅ルーターにTelnetの23番ポートをポートフォワーディング設定して直接接続することは可能ですが、間違いなくポートスキャン攻撃を食らいますのでこれは絶対ダメです。

外出先からTelnet接続をしたい場合は、VPNで自宅LANに接続後にTelnet接続するようにします。するとVPNが通信経路をまるごと暗号化してくれますから安心ですよね。

一方、SSHは通信経路が暗号化されるため、Telnetと違って単独で安全な接続が可能です。

Secure Shell

Secure Shell(セキュアシェル、SSH)は、暗号認証の技術を利用して、安全にリモートコンピュータと通信するためのプロトコルパスワードなどの認証部分を含むすべてのネットワーク上の通信が暗号化される。

出典:ウィキペディア

外出先からSSH接続する場合、自宅ルーターに"22″または"桁数の多いオリジナルのポート番号"をポートフォワーディング設定して直接接続することは可能です。

SSHは通信経路が暗号化されるためTelnetより安心ですが、自宅のネットワークの入り口に、いずれかのポート番号が開いていることを晒すことになりますからできれば控えたほうが良いです。Telnetの場合と同じく、自宅LANへのVPN接続が可能であればポートフォワーディング設定をせず、VPNで自宅LANに接続後にSSH接続するようにするのがベターですね。

では、接続です。

“TeraTerm"や"PuTTY"のパソコンへのインストール方法は山ほど出回っているので割愛します。以下、"TeraTerm"の場合です。

まず、TeraTermを起動します。Telnetの場合、

TeraTermでTelnet接続|TelnetやSSHでDSMにアクセスする~DiskStation DS218j

「ホスト(T)」にはDS218jのIPアドレス、「サービス」はTelnetを選択します。「TCPポート#(P)」は自動的に"23″になるはずですので、「OK」をクリックします。するとログインするユーザーを聞いてきますので、

NAS0 login: nomi ←管理者のアカウント名を入力
Password: ←管理者のパスワードを入力
— nomi: /var/services/homes/nomi: change directory failed: No such file or directory
Logging in with home = “/".
nomi@NAS0:/$

でログイン完了となります。ただこの段階ではまだ管理者権限がありませんので、

nomi@NAS0:/$ sudo -i
Password: ←もう一度パスワードを入力
root@NAS0:~#

で管理者権限になります。

SSHの場合は、

TeraTermでSSH接続1|TelnetやSSHでDSMにアクセスする~DiskStation DS218j

「ホスト(T)」にはDS218jのIPアドレス、「サービス」はSSHを選択します。「TCPポート#(P)」は自動的に"22″になりますが、「端末とSMNP」のSSHの設定で別のポート番号に変えている場合は変えた値に変更し、「OK」をクリックします。

TeraTermでSSH接続2|TelnetやSSHでDSMにアクセスする~DiskStation DS218j

初めてDSMに接続するときは、このような公開鍵(フィンガープリント)の受け入れ画面が表示されます。「このホストをknown hostリストに追加する(A)」にチェックを入れたまま「続行」をクリックすると次回からこの画面は表示されません。

TeraTermでSSH接続3|TelnetやSSHでDSMにアクセスする~DiskStation DS218j

SSH認証のダイアログが表示されたら、[ユーザ名(N):]に管理者のアカウント名を、[パスフレーズ(P):]に管理者のパスワードを入力し、「OK」をクリックします。

Could not chdir to home directory /var/services/homes/nomi: No such file or directory
nomi@NAS0:/$

管理者権限への変更はTelnetの場合と同じです。

TelnetとSSHは接続方法が異なるだけで、ログインした後の操作方法は全く同じになります。

Windows10のコマンドプロンプトからSSHで接続するには、2018年4月のアップデートでOpenSSHが組み込まれている必要があります。

組み込まれていることを確認するには、「設定」→「アプリ」→「オプション機能の管理」を開き、

OpenSSHクライアントの確認|TelnetやSSHでDSMにアクセスする~DiskStation DS218j

「OpenSSHクライアント」が追加されていることを確認します。

コマンドプロンプトはTeraTermのような接続ダイアログはないので、sshコマンドを使って、

ssh [管理者のアカウント名]@[IPアドレスまたはホスト名]

で接続します。

コマンドプロンプトでSSH接続|TelnetやSSHでDSMにアクセスする~DiskStation DS218j

The authenticity of host '192.168.77.201 (192.168.77.201)’ can’t be established.
ECDSA key fingerprint is SHA256:"フィンガープリントの値"
Are you sure you want to continue connecting (yes/no)?yes ←"yes"を入力
nomi@192.168.77.201’s password: ←管理者のパスワードを入力
Could not chdir to home directory /var/services/homes/nomi: No such file or directory
nomi@NAS0:/$

公開鍵(フィンガープリント)の受け入れの可否を問われますので"yes"で受け入れるとパスワード入力となり、ログインできます。

さて、ルートディレクトリに移動してファイルを一覧してみます。

DS218のディレクトリ構成|TelnetやSSHでDSMにアクセスする~DiskStation DS218j

最初に説明した通り、DSMはグラフィカルな設定画面から行った設定をテキストに書き込む形で動作体系を作っていますから、CUIでコマンド操作や設定ファイルの書き換えを行った場合、DSMから行った設定との不整合などがおこり、システムを破壊する危険があります。

おそらく操作して問題ないのはファイルマネージャーで操作できる範囲のデータです。場所は"/volume"で始まるディレクトリですので、それ以外の部分は下手に触らないほうが良いかもしれませんね。

それから、SSHやTelnetはコマンド操作体系であるため、不正アクセスに利用されると大変なことになります(自動プログラムが攻撃し易い)。利用する際は設定後に"セキュリティ アドバイザー"でチェックを行うことをお勧めします。

便利なものほど危険と隣り合わせ、ということですね。