vncを導入する。
パッケージにvncに該当するものはいくつか種類はあるが、これに関してはどれを選んでも問題ないと思う。(思う。)
問題は、etchにしてから、sargeの際には何の問題も無かった以下のコマンドでエラーが出たこと。
$vncstart :1 -geometry 800x600 -depth 16
geometry 800x600 is invalid
とのことである。では画面サイズをどうすればいいのか。
/etc/vnc.conf
にgeometryとdepthを設定する項目がある。(コメントアウトされているかもしれない)
考えようによっては、毎回引数で指定するよりもコンフィグファイルで決めておいたほうが楽だ。ここはありがたくvnc.confで設定をしよう。
各種パッケージ
vnc debian etch でのインストールを超初心者でもわかりやすく
vnc を debian etch 環境で導入する事に関して結構需要があるので詳しく書いてみる。
vnc とはなんだろう?vnc はグラフィカルなリモートアクセスを実現するソフトウェアです。GUI。OSに依存しません。
vnc はどういう仕組み?
使う側から説明すれば、サーバ側で vncserver を実行しクライアントの接続を待ちます。クライアント側が vncviewer でアクセスする使い方になります。まず最初にサーバーの設定をする必要があります。
ソフトに種類はあるの?
debian etch stable では、vncserver,tightvncserver,vnc4server 等が見受けられます。使用環境によりますが、シンプルな vncserver は使いやすく設定も簡単でした。
vnc の使い方の例
どのマシンをサーバにしたいか(=遠隔操作をされる側にしたいか)でソフトウェアも変わってきます。私の使い方は debian Linux にローカルエリア内からWINDOWS2000 マシンを使って接続すると言うものです。
debian etch には vncserver を、win2k には UltraVNCViewer をインストールしています。
セキュリティまずいんじゃないの?
別途ルータや iptables 等のファイアウォールを利用したり、SSHポートフォワーディングを用いると効果的でしょう。デフォルトでは暗号化されていない通信ですので注意。
インストール方法は?
○debian 用サーバー
#aptitude -install vncserver
関連ファイルの vnccommon 等も自動でインストールされます。
○windows 用クライアント
http://www.uvnc.com/index.html
上記ページ真ん中〜下のほうからダウンロードします。exeファイルを実行して vncviewer をインストールします。
使い方は?
○サーバ側
root での使用は認められません。一般ユーザで、
$vncserver :1
と入力します。これで一番の番号で遠隔操作を受け付けます。番号は任意です。終了するときは、
$vncserver -kill :1
とします。
また、初回コマンド実行時にはパスワードを設定せよと求められますので、設定します。
○クライアント側
アプリケーションを実行してサーバマシンに接続します。相手のIPアドレスまたはドメインを指定します。
192.168.100.10:1
の用に、サーバで指定した番号をコロンの後に加えます。connectで接続します。パスワードを聞かれますので、設定したパスワードを入力しましょう。
クライアント側は×ボタンなどでいつでも接続を切って大丈夫です。再度接続すると、先ほどの作業の途中から再開できます。
以上で vnc の導入は終了です。
ディスプレイサイズなどの設定は別記事を参考までにどうぞ。
もしこれでもわかり辛かったらコメントなど頂けましたら書き加えさせていただきます。
vnc とはなんだろう?vnc はグラフィカルなリモートアクセスを実現するソフトウェアです。GUI。OSに依存しません。
vnc はどういう仕組み?
使う側から説明すれば、サーバ側で vncserver を実行しクライアントの接続を待ちます。クライアント側が vncviewer でアクセスする使い方になります。まず最初にサーバーの設定をする必要があります。
ソフトに種類はあるの?
debian etch stable では、vncserver,tightvncserver,vnc4server 等が見受けられます。使用環境によりますが、シンプルな vncserver は使いやすく設定も簡単でした。
vnc の使い方の例
どのマシンをサーバにしたいか(=遠隔操作をされる側にしたいか)でソフトウェアも変わってきます。私の使い方は debian Linux にローカルエリア内からWINDOWS2000 マシンを使って接続すると言うものです。
debian etch には vncserver を、win2k には UltraVNCViewer をインストールしています。
セキュリティまずいんじゃないの?
別途ルータや iptables 等のファイアウォールを利用したり、SSHポートフォワーディングを用いると効果的でしょう。デフォルトでは暗号化されていない通信ですので注意。
インストール方法は?
○debian 用サーバー
#aptitude -install vncserver
関連ファイルの vnccommon 等も自動でインストールされます。
○windows 用クライアント
http://www.uvnc.com/index.html
上記ページ真ん中〜下のほうからダウンロードします。exeファイルを実行して vncviewer をインストールします。
使い方は?
○サーバ側
root での使用は認められません。一般ユーザで、
$vncserver :1
と入力します。これで一番の番号で遠隔操作を受け付けます。番号は任意です。終了するときは、
$vncserver -kill :1
とします。
また、初回コマンド実行時にはパスワードを設定せよと求められますので、設定します。
○クライアント側
アプリケーションを実行してサーバマシンに接続します。相手のIPアドレスまたはドメインを指定します。
192.168.100.10:1
の用に、サーバで指定した番号をコロンの後に加えます。connectで接続します。パスワードを聞かれますので、設定したパスワードを入力しましょう。
クライアント側は×ボタンなどでいつでも接続を切って大丈夫です。再度接続すると、先ほどの作業の途中から再開できます。
以上で vnc の導入は終了です。
ディスプレイサイズなどの設定は別記事を参考までにどうぞ。
もしこれでもわかり辛かったらコメントなど頂けましたら書き加えさせていただきます。
sshd : openssh-server の導入
ssh サーバを導入する。
debian etchでのパッケージ名は
openssh-server
実行時のプロセス名は
sshd
となる。
#aptitude install openssh-server
これでパッケージのインストールは完了。
/etc/ssh/sshd_config
上記設定ファイルを編集する。
PermitRootLogin no
以下でrootでのログインを不許可にする。
PasswordAuthentication no
Linuxパスワードでのログインを禁止し、秘密鍵を持っていないとログインできなくなる。(後述*1)
PermitEmptyPasswords no
空パスワードを禁止する。
RSAAuthentication yes
RSA認証を許可(ssh1)
PubkeyAuthentication yes
公開鍵認証を許可(ssh2)
UsePAM yes
ユーザ単位でアクセスを許可する場合にyesとしておく。下記参照。
以上がセキュアな設定だ。以下のように再起動させれば ssh サーバ自体の設定は終了。
#/etc/rc.d/init.d/sshd restart
続いて、ユーザ単位でアクセスを許可する場合を説明する。
/etc/pam.d/sshd
を編集する。
account required pam_access.so
の一行が記述されていることを確認する。無ければ、記述する。
/etc/security/access.conf
の設定が有効になるので、さらにこの設定ファイルを編集する。(*2)
-:ALL except ユーザ名:ALL
このように書くと、特定ユーザ名のみを許可することができる。
仮にローカルネットワークからの接続のみに限定するといった場合、鍵方式での認証はまどろっこしいなどといった場合は、先の sshd_config 内の記述を以下のようにする。
PasswordAuthentication yes
この場合、設定はここで終了。
SSH のポートを外部に開放して自宅外からもアクセスしたい場合には鍵認証方式が必須。
次回はOPENSSHによる鍵作成について触れてみようと思います。
*1
パスワード方式の場合、ユーザ名とパスワードさえわかれば、アクセスが可能となります。
鍵認証方式の場合、サーバとクライアントにそれぞれ鍵が必要となります。次回詳しく書こうと思います。
*2
permission:users:origins
の書式で構成されるファイル。
permission は、許可なら + 、不許可なら -
users は、設定する ユーザー または グループ名 を記述。 ALL と記述すると、全てが対象になる。 EXCEPT 〜 は、対象から除外する ユーザー OR グループ名 を指定する。
origins は、端末やネットワークなどを指定する。tty名、ホスト名、IPアドレス、ALL、LOCAL が指定できる。
debian etchでのパッケージ名は
openssh-server
実行時のプロセス名は
sshd
となる。
#aptitude install openssh-server
これでパッケージのインストールは完了。
/etc/ssh/sshd_config
上記設定ファイルを編集する。
PermitRootLogin no
以下でrootでのログインを不許可にする。
PasswordAuthentication no
Linuxパスワードでのログインを禁止し、秘密鍵を持っていないとログインできなくなる。(後述*1)
PermitEmptyPasswords no
空パスワードを禁止する。
RSAAuthentication yes
RSA認証を許可(ssh1)
PubkeyAuthentication yes
公開鍵認証を許可(ssh2)
UsePAM yes
ユーザ単位でアクセスを許可する場合にyesとしておく。下記参照。
以上がセキュアな設定だ。以下のように再起動させれば ssh サーバ自体の設定は終了。
#/etc/rc.d/init.d/sshd restart
続いて、ユーザ単位でアクセスを許可する場合を説明する。
/etc/pam.d/sshd
を編集する。
account required pam_access.so
の一行が記述されていることを確認する。無ければ、記述する。
/etc/security/access.conf
の設定が有効になるので、さらにこの設定ファイルを編集する。(*2)
-:ALL except ユーザ名:ALL
このように書くと、特定ユーザ名のみを許可することができる。
仮にローカルネットワークからの接続のみに限定するといった場合、鍵方式での認証はまどろっこしいなどといった場合は、先の sshd_config 内の記述を以下のようにする。
PasswordAuthentication yes
この場合、設定はここで終了。
SSH のポートを外部に開放して自宅外からもアクセスしたい場合には鍵認証方式が必須。
次回はOPENSSHによる鍵作成について触れてみようと思います。
*1
パスワード方式の場合、ユーザ名とパスワードさえわかれば、アクセスが可能となります。
鍵認証方式の場合、サーバとクライアントにそれぞれ鍵が必要となります。次回詳しく書こうと思います。
*2
permission:users:origins
の書式で構成されるファイル。
permission は、許可なら + 、不許可なら -
users は、設定する ユーザー または グループ名 を記述。 ALL と記述すると、全てが対象になる。 EXCEPT 〜 は、対象から除外する ユーザー OR グループ名 を指定する。
origins は、端末やネットワークなどを指定する。tty名、ホスト名、IPアドレス、ALL、LOCAL が指定できる。
sshd : openssh-server の導入その2
前回の続きです。
さて、鍵方式でのログインを可能にするためには、サーバ側クライアント側双方に設定が必要となります。その際に用いるソフトウェアにおいて、sshの方式の違いがあり、設定方法が変わってきます。まずは現在使われる方式の解説から。
以下は設定にはあまり関係ありませんが、知識としてざっくりと。現在主に用いられているソフトウェアとして、サーバ側、クライアント側ともに2系列存在します。
OpenSSH サーバ
ssh2 サーバ
OpenSSH クライアント
ssh2 クライアント
Openssh とは、SSH の FREE バージョンです。プロトコル1と2が利用でき、ssh1 と ssh2 に該当すると言えます。
今回は、openssh-server の導入と言うことで、サーバ側は OpenSSH に限った設定と言うことで話を進めます。今回の例ではクライアント機はWindowsマシンです。
1)クライアント側が OpenSSH に対応している場合の設定
例 UTF-8 TeraTerm Pro with TTSSH2 を使う
2)クライアント側が ssh2 に対応している場合の設定
例 WinSCP(PuTTY) を使う
以上二つのパターンが考えられます。
1)クライアント側が OpenSSH に該当する場合の設定
まずはサーバ側で鍵を作成します。鍵を作成するユーザになって下さい。
以下三通りのコマンドがありますが、一番下のプロトコルバージョン2のDSA鍵が最も安全性が高いそうです。
・プロトコルバージョン1のRSA鍵
ssh-keygen -t rsa1
・プロトコルバージョン2のRSA鍵
ssh-keygen -t rsa
・プロトコルバージョン2のDSA鍵
ssh-keygen -t dsa
上記コマンドを入れますと、問い合わせが三回ありますが一度目はそのままENTERキー、二度目と三度目は任意のパスワードを入れてください。作成に成功すると、以下のディレクトリに公開鍵と秘密鍵が生成されます。
/home/ユーザ名/.ssh/
公開鍵を鍵束に追加します。
cat /home/ユーザ名/.ssh/id_dsa.pub >> /home/ユーザ名/.ssh/authorized_keys
鍵束にパーミッションを設定します。
$chmod 600 /home/ユーザ名/authorized_keys
公開鍵を削除します。
$rm /home/ユーザ名/.ssh/id_dsa.pub
ここまでがサーバ側の鍵の設定です。
前述の鍵生成コマンドによって、 ~/.ssh 内に秘密鍵 id_dsa が生成されています。これをクライアント側に渡します。
ローカルエリア内であればFTPなどのネットワークを用いてもいいのですが、WANを経由したやり取りは極力控え、FDやUSBメモリでやり取りしましょう。
クライアント側には、UTF-8 TeraTerm Pro with TTSSH2 がインストールされているものとします。窓の杜にあります。
ログインの際、「Use RSA/DSA key to log in」にチェックをつけ、 「Private key file」を押下し、先ほど準備した秘密鍵のファイル「id_dsa」を選択します。後は普通にユーザ名とパスワードを入力すればOKです。
2)クライアント側が ssh2 に該当する場合の設定
クライアントに WinSCP を用いる場合です。WinSCPが導入済みであるとします。以下が公式です。Multilanguage installation package をDLすると良いでしょう。
http://winscp.net/eng/download.php
クライアント側で鍵を作成します。
スタートメニュー → 全てのプログラム → WinSCP → PuTTYgen
を選択します。Parameter欄で暗号方式を選び、Generateで生成開始です。先ほどの例と同じように、今回はDSA方式を選択するものとします。マウスを動かすことで暗号を生成する仕組みになっているそうです。
「Save public key」「Save private key」をそれぞれ選択し、任意の場所に任意の名前で保存します。今回は、公開鍵を「id_dsa_1024_a.pub」、秘密鍵を「id_dsa.ppk」とします。
公開鍵をサーバにコピーします。先ほどの例のように極力オフラインから持ち込みましょう。以下に保存します。
/home/ユーザ名/.ssh/
OpenSSH用の公開鍵に変換し、同時に鍵束の追加をします。
$/home/ユーザ名/.ssh/ssh-keygen -X -f id_dsa_1024_a.pub >> /home/ユーザ名/.ssh/authorized_keys
これで鍵の準備は整いました。WinSCPからアクセスする際に、先ほどの秘密鍵「id_dsa.ppk」を「秘密鍵」欄に追加してアクセスします。
今回のまとめとしますと、sshサーバに openssh-server を用いる場合、
・クライアントに OpenSSH を用いる場合、鍵をサーバ側で作成
・クライアントに ssh2 を用いる場合、鍵をクライアント側で作成し、サーバ側で公開鍵の変換を行うということになります。
さて、鍵方式でのログインを可能にするためには、サーバ側クライアント側双方に設定が必要となります。その際に用いるソフトウェアにおいて、sshの方式の違いがあり、設定方法が変わってきます。まずは現在使われる方式の解説から。
以下は設定にはあまり関係ありませんが、知識としてざっくりと。現在主に用いられているソフトウェアとして、サーバ側、クライアント側ともに2系列存在します。
OpenSSH サーバ
ssh2 サーバ
OpenSSH クライアント
ssh2 クライアント
Openssh とは、SSH の FREE バージョンです。プロトコル1と2が利用でき、ssh1 と ssh2 に該当すると言えます。
今回は、openssh-server の導入と言うことで、サーバ側は OpenSSH に限った設定と言うことで話を進めます。今回の例ではクライアント機はWindowsマシンです。
1)クライアント側が OpenSSH に対応している場合の設定
例 UTF-8 TeraTerm Pro with TTSSH2 を使う
2)クライアント側が ssh2 に対応している場合の設定
例 WinSCP(PuTTY) を使う
以上二つのパターンが考えられます。
1)クライアント側が OpenSSH に該当する場合の設定
まずはサーバ側で鍵を作成します。鍵を作成するユーザになって下さい。
以下三通りのコマンドがありますが、一番下のプロトコルバージョン2のDSA鍵が最も安全性が高いそうです。
・プロトコルバージョン1のRSA鍵
ssh-keygen -t rsa1
・プロトコルバージョン2のRSA鍵
ssh-keygen -t rsa
・プロトコルバージョン2のDSA鍵
ssh-keygen -t dsa
上記コマンドを入れますと、問い合わせが三回ありますが一度目はそのままENTERキー、二度目と三度目は任意のパスワードを入れてください。作成に成功すると、以下のディレクトリに公開鍵と秘密鍵が生成されます。
/home/ユーザ名/.ssh/
公開鍵を鍵束に追加します。
cat /home/ユーザ名/.ssh/id_dsa.pub >> /home/ユーザ名/.ssh/authorized_keys
鍵束にパーミッションを設定します。
$chmod 600 /home/ユーザ名/authorized_keys
公開鍵を削除します。
$rm /home/ユーザ名/.ssh/id_dsa.pub
ここまでがサーバ側の鍵の設定です。
前述の鍵生成コマンドによって、 ~/.ssh 内に秘密鍵 id_dsa が生成されています。これをクライアント側に渡します。
ローカルエリア内であればFTPなどのネットワークを用いてもいいのですが、WANを経由したやり取りは極力控え、FDやUSBメモリでやり取りしましょう。
クライアント側には、UTF-8 TeraTerm Pro with TTSSH2 がインストールされているものとします。窓の杜にあります。
ログインの際、「Use RSA/DSA key to log in」にチェックをつけ、 「Private key file」を押下し、先ほど準備した秘密鍵のファイル「id_dsa」を選択します。後は普通にユーザ名とパスワードを入力すればOKです。
2)クライアント側が ssh2 に該当する場合の設定
クライアントに WinSCP を用いる場合です。WinSCPが導入済みであるとします。以下が公式です。Multilanguage installation package をDLすると良いでしょう。
http://winscp.net/eng/download.php
クライアント側で鍵を作成します。
スタートメニュー → 全てのプログラム → WinSCP → PuTTYgen
を選択します。Parameter欄で暗号方式を選び、Generateで生成開始です。先ほどの例と同じように、今回はDSA方式を選択するものとします。マウスを動かすことで暗号を生成する仕組みになっているそうです。
「Save public key」「Save private key」をそれぞれ選択し、任意の場所に任意の名前で保存します。今回は、公開鍵を「id_dsa_1024_a.pub」、秘密鍵を「id_dsa.ppk」とします。
公開鍵をサーバにコピーします。先ほどの例のように極力オフラインから持ち込みましょう。以下に保存します。
/home/ユーザ名/.ssh/
OpenSSH用の公開鍵に変換し、同時に鍵束の追加をします。
$/home/ユーザ名/.ssh/ssh-keygen -X -f id_dsa_1024_a.pub >> /home/ユーザ名/.ssh/authorized_keys
これで鍵の準備は整いました。WinSCPからアクセスする際に、先ほどの秘密鍵「id_dsa.ppk」を「秘密鍵」欄に追加してアクセスします。
今回のまとめとしますと、sshサーバに openssh-server を用いる場合、
・クライアントに OpenSSH を用いる場合、鍵をサーバ側で作成
・クライアントに ssh2 を用いる場合、鍵をクライアント側で作成し、サーバ側で公開鍵の変換を行うということになります。