移転しました。
2013年2月〜
http://kanonji.info/blog/

2008年11月〜2013年1月
http://d.hatena.ne.jp/kanonji/

はてなダイアリーに移転してたけど、そっからさらにWordPressでのブログに移転しました。
 
201302061607
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
別窓 | スポンサー広告
----------
VMware Server上にSSHポートフォワーディング専用の仮想マシンを作る
VMware Serverの仮想マシンに外部からアクセスする SSH編 - プログラマのチラシの裏

上記記事で、VMware ServerのNAT機能を使いポートフォワーディングを設定した。
しかし、仮想マシンをいくつも立てる場合、実マシンのポートをたくさん空けないといけないし、Manage Virtual Networksの設定も割りと面倒。
Manage Virtual NetworksのPort Forwardingはあまり高機能ではない。
そこで外部からsshでログインする仮想マシンを1つに絞り、SSHポートフォワーディングで各仮想マシンやホストOSにアクセスすることにする。

まずは専用の仮想マシンを新しく作る。
OSはCentOS 4.5を使うのでほぼ前回の手順でインストールする。
CentOS 4.5 on VMware Serverインストールメモ - プログラマのチラシの裏

sshしか動かさないので、メモリやHDDはなるべく小さく設定する。
メモリを32MBにしたら少なすぎてインストールできなかった。
64MBなら問題なく勧められる。
ただ、64MBのインストール作業はもたつくので、インストール中は256MB程度で進めて、インストール後に64MBに設定しなおすことにする。
インストール後に64MBに直すことを想定し、Swapは128MBに設定する。
Swap不足でパフォーマンスが出ない旨の警告が出るが、無視して進める。
HDDは1GBだと微妙に不足するため2GBを用意した。
当然、パッケージは最小構成。

後は上記記事と同じように設定し、続いてSSHも下記と同様に設定していく。
SSHdの設定 CentOS4.5 on VMware Server - プログラマのチラシの裏

一通り設定しsshが利用可能になったら、下記記事の手順で外部からsshでログインできるようにポートフォワーディングを設定する。
VMware Serverの仮想マシンに外部からアクセスする SSH編 - プログラマのチラシの裏
前回設定したポートフォワーディングは一旦削除し、今回作ったSSHポートフォワーディング用の仮想マシンのみ外部からアクセス可能に設定。

次に外部からsshでアクセスするためのクライアントを設定する。
Puttyを使っているので、Puttyを使った場合の手順で解説。

例として以下を前提にする。
mydomain.examole.com:ホストOSに外部からアクセスするためのアドレス。
192.168.0.10:SSHポートフォワーディング用の仮想マシンのローカルIPアドレス。
192.168.0.11以降:その他、各々の目的で作成した仮想マシンローカルIPアドレス。

まず、Puttyで普通にmydomain.examole.com:22にアクセス出来るよう設定する。
公開鍵認証を使っているので秘密鍵もクライアントに配置。
Puttyの設定項目[接続->SSH->トンネル]を開き、ポートフォワーディングの設定を行う。

・設定例(設定Base)
源ポート:10022
送り先:192.168.0.11:22
ラジオボタンはローカルを選択

上記を設定したら、今度は192.168.0.11の仮想マシンにPuttyでアクセスする設定を行う。

・設定例(設定A)
ホスト名(またはIPアドレス):localhost
ポート:10022

このようにlocalshotにアクセスするように設定したが、当然このままではインターネット越しにある192.168.0.11の仮想マシンにはアクセスできない。
まずは設定BaseでSSHポートフォワーディング用の仮想マシンにアクセスしセッションを確立する。
設定Baseにはlocalhost:10022へのアクセスをポートフォワードするよう設定されているので、設定Aでアクセスすると192.168.0.11にsshでアクセスが可能。

これにより、外部からsshアクセスを許可する仮想マシンは1個だけになり、実マシンのポート開放も少なくて済む。
アクセスしたい仮想マシンが複数ある場合は、設定Baseの[接続->SSH->トンネル]に必要なだけ追加する。

また、ホストOSにもポートフォワードすることが可能なので、例えばホストOSにVNC Serverがあれば以下のようなことも可能。

・設定例(設定Base)
源ポート:5900
送り先:192.168.0.1:5900
ラジオボタンはローカルを選択

設定BaseのSSHセッションを確立した状態でVNC クライアントでlocalhost:5900にアクセスすることで、仮想マシンを経由して実マシンをVNCで操作出来る。

※VMware Serverのデフォルトでは、ホストアドレス1(192.168.xxx.1)がホストOSになっている。
ホストアドレス2(192.168.xxx.2)がゲートウェイ。
それ以降が各仮想マシンになる。
DHCPは基本的にホストアドレス128以降。(192.168.xxx.128以降)
スポンサーサイト
別窓 | VMware | コメント:0 | トラックバック:0
200709260157
VMware Serverの仮想マシンに外部からアクセスする SSH編
SSHdの設定 CentOS4.5 on VMware Server - プログラマのチラシの裏

上記でSSHが使えるようになったので、外部から仮想マシンにsshでログインできるように設定する。

前提条件として、ホストOSとゲストOSはNATで繋がっている必要がある。
ブリッジを使った場合の設定方法は、分からない。
また、VMwareの仮想NICを設定する付属のツール、Manage Virtual Networks(vmnetcfg.exe)を使う。
これはVMware Serverと一緒にインストールされている。

設定の流れは以下。
イメージとしてはホストOSとゲストOSの間に仮想ルータがあるようなもの。


  • Manage Virtual Networksを起動し[NAT]タブを開く。

  • [NAT]タブ内の項目[NAT]内にある[Edit]をクリック。

  • [NAT Setting]が開くので、中ほどにある[Port Forwording...]をクリック。

  • 項目[Incoming TCP ports]内の[Add...]をクリックし、フォワードしたいポートなどを入力する。



例えば外部からホストOSのポート22にアクセスがあった場合、仮想マシンのポート22に転送するなら、以下のようになる。
Host port:22
Virtual Machine IP Address:192.168.0.10(等、仮想マシンのIP)
Port:22

これで外部から仮想マシンにsshでログイン可能になる。
ホストOSがポート22を既に使っているなら、以下のようにHost portを使っていないポートに変更し、外部からはそのポートにアクセスすればよい。

Host port:10022

UDPのほうも同様に設定が可能だが、SSHはUDPを使用しないので今回は設定しない。

この設定を使えば、ちょっと一時的に外部からアクセスできるwebサーバなんかも簡単に作れそう。
VMware Serverという名称なので、そのままサーバ用途にもある程度耐えられるのかも。
別窓 | VMware | コメント:1 | トラックバック:0
200709252211
SSHdの設定 CentOS4.5 on VMware Server
CentOS 4.5 on VMware Serverインストールメモ - プログラマのチラシの裏

上記でインストールしたCentOSにsshでアクセスできるように設定する。

/etc/ssh/sshd_config

なお、少し古い情報だけどsshd_configで設定するパラメータのデフォルト値は、プログラムにハードコーディングされていて確認が難しいようだ。
manのマニュアルに記載があるようだが、情報が古いこともある。
ハードコーディングされたデフォルト値はバージョンアップ時に変更されることがあり、デフォルト値で利用する場合も極力sshd_configで明示的に設定したほうがいい。

設定の方向性は、基本的に公開鍵認証だけを許可してrootログインはしない。

参考:OpenSSH 日本語マニュアルページsshd_config

主な設定点の抜粋

#ポートはセキュリティ上デフォルトから変更するが、iptablesの設定もあるのでとりあえず22。
Port 22
#Protocolは1をサポートする必要は無いので2 only。
Protocol 2

#コメントアウトのままデフォルト値で問題なさそうだけど一応。
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key

#記録するログのレベルを指定する。うまく認証できない場合は DEBUG にすると情報が得やすい。
LogLevel INFO

#sshで直接rootでログインするのはセキュリティ上好ましくない。
PermitRootLogin no
#ログインを許可する前に、ユーザのファイルおよびホームディレクトリの所有権とパーミッションをチェックする。
#これは初心者が、自分のディレクトリを誰でも書き込めるようにしてしまう事故を防ぐために有効。
StrictModes yes

#RSAAuthenticationはプロトコル1でのRSA公開鍵認証をon/off
RSAAuthentication no
#PubkeyAuthenticationはプロトコル2でのRSA/DSA公開鍵認証をon/off
PubkeyAuthentication yes
#余談だがauthorized_keys2は非推奨になった。
AuthorizedKeysFile .ssh/authorized_keys

#パスワードによる認証は使用しない。
#いわゆる普通のパスワードによるログイン。
# To disable tunneled clear text passwords, change to no here!
PermitEmptyPasswords no
PasswordAuthentication no

#チャレンジ・レスポンス認証は使用しない。
#公開鍵認証だけを使用するので、これも不要。
#参考:チャレンジ/レスポンス認証 【challenge and response authentication】 | セキュリティ用語辞典
# Change to no to disable s/key passwords
ChallengeResponseAuthentication no

#GSSAPI認証は使用しない。
#GSSAPI認証については良く分からなかった。
#公開鍵認証だけを使用するので、とりあえずnoに設定。
# GSSAPI options
GSSAPIAuthentication no
#GSSAPI認証でのログアウト時に、証明書のキャッシュを削除する。
#GSSAPI認証は使用しないが、使用するならyesのほうが安全か。
GSSAPICleanupCredentials yes

#UsePAM yesはPasswordAuthenticationかChallengeResponseAuthenticationを使用する場合、その認証をPAMを使って行う。
#公開鍵認証のみを使用する場合UsePAM noにする。
UsePAM no

#X Window Systemを使用しないのでX11転送も不要
#X11Forwardingはセキュリティ的にもリスクが高い。
X11Forwarding no

#SFTPは使用する。
# override default of no subsystems
Subsystem sftp /usr/libexec/openssh/sftp-server


設定全文

Port 22
Protocol 2
#ListenAddress 0.0.0.0
#ListenAddress ::

# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key

# Lifetime and size of ephemeral version 1 server key
#KeyRegenerationInterval 1h
#ServerKeyBits 768

# Logging
#obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
SyslogFacility AUTHPRIV
LogLevel INFO

# Authentication:

#LoginGraceTime 2m
PermitRootLogin no
StrictModes yes
#MaxAuthTries 6

RSAAuthentication no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#RhostsRSAAuthentication no
# similar for protocol version 2
#HostbasedAuthentication no
# Change to yes if you don\'t trust ~/.ssh/known_hosts for
# RhostsRSAAuthentication and HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don\'t read the user\'s ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes

# To disable tunneled clear text passwords, change to no here!
PermitEmptyPasswords no
PasswordAuthentication no

# Change to no to disable s/key passwords
ChallengeResponseAuthentication no

# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no

# GSSAPI options
GSSAPIAuthentication no
GSSAPICleanupCredentials yes

# Set this to \'yes\' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication mechanism.
# Depending on your PAM configuration, this may bypass the setting of
# PasswordAuthentication, PermitEmptyPasswords, and
# "PermitRootLogin without-password". If you just want the PAM account and
# session checks to run without PAM authentication, then enable this but set
# ChallengeResponseAuthentication=no
UsePAM no

#AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding no
#X11DisplayOffset 10
#X11UseLocalhost yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#UsePrivilegeSeparation yes
#PermitUserEnvironment no
#Compression yes
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS yes
#PidFile /var/run/sshd.pid
#MaxStartups 10
#ShowPatchLevel no

# no default banner path
#Banner /some/path

# override default of no subsystems
Subsystem sftp /usr/libexec/openssh/sftp-server
別窓 | VMware | コメント:0 | トラックバック:0
200709250541
freeSSHd
freeSSHd

Windowsで動作するSSHサーバ。
インストールの際広告のようなものが表示されるけど無料で使えるいわゆるフリーウェア。

MOONGIFTの記事はこちら

微妙なのは公開鍵の置き場所。
デフォルトでは「$HOME\ssh_public_keys」と書いてあるが、
これは「ssh_public_keys」というファイルを指すのではなく
「ssh_public_keys」というフォルダになる。
そのフォルダの配下に、「%username%」という名前の公開鍵を配置する形になる。
これがすごく分かり難かった。
※%username%とはログインしてるWindowsのユーザ名

例えばAdministratorの場合、全てデフォルト設定なら以下のようになる。

C:\Documents and Settings\Administrator\ssh_public_keys\Administrator

この最後のAdministratorが拡張子なしの公開鍵ファイル。

あと、公開鍵はOpenSSH形式のものを使う。

別窓 | ツール | コメント:0 | トラックバック:0
200610220122
| プログラマのチラシの裏 |
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。