part7 今回が最終回です。 前回は、GNOME環境を整えるところまでやりました。
Windows AzureのOpenLogic CentOS 6.3 で GNOME (X Window)を使うまでセットアップをしてみる part1 Windows AzureのOpenLogic CentOS 6.3 で GNOME (X Window)を使うまでセットアップをしてみる part2 Windows AzureのOpenLogic CentOS 6.3 で GNOME (X Window)を使うまでセットアップをしてみる part3 Windows AzureのOpenLogic CentOS 6.3 で GNOME (X Window)を使うまでセットアップをしてみる part4 Windows AzureのOpenLogic CentOS 6.3 で GNOME (X Window)を使うまでセットアップをしてみる part5 Windows AzureのOpenLogic CentOS 6.3 で GNOME (X Window)を使うまでセットアップをしてみる part6
目次はこちら。 今回は、ssh tunnelを介してVNCで接続します。これでGUIで操作ですねー。
- Open Logic CentOS 6.3のインスタンス作成と接続
- yum更新とRemi Repositoruの導入
- ssh 公開鍵暗号での接続に切り替え
- zshのインストール
- gccなどDevelopment Toolsをインストール
- GNOMEの導入
- VNCの導入
VNCの導入
サーバーサイドに、VNC serverをインストールすることで、クラインとのVNC ViewerでGUI接続できるようになります。 この時、VNCはデフォルトでは TCP 5900 + (デスクトップ番号 ≒ VNCServer起動プロセスの順番数 ) となります。 例えば、一つだけVNC Serverプロセスを上げたら5901です。 Windowsでは一般にTCP 5900 なので、少し印象が違いますね。 しかしこのままでは、外部に対していくつも余計なポートを開ける必要があります。 そこで、せっかくあるSSH接続を利用して、SSH Tunnelingで 外部にはTCP 22のみ開けてSSH接続。 SSH接続内部で、手元の Teratermにて TCP 適当番号 で待ち受けて、SSHリモート先では TCP 5901にフォワードしましょう。 SSH接続してからでないとVNC接続できませんが、外部には公開鍵認証のままで、VNC接続の際はVNCのパスワード認証となるのでまぁいいかなと思います。
VNC Serverのインストール
サクッとyumで
sudo yum install vnc-server
VNC Serverの開始
初回のみVNCログイン用のパスワード設定をします。
vncserver -geometry 800x600
初期設定ファイル編集
vimでgnomeにつなげるようにちょちょいと直します。
vim ~/.vnc/xstartup
# 以下のセクションをxterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & twm &# これに修正xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & gnome-session &
VNCserverの待ち受け設定
待ち受け設定をvimで修正します。
sudo vim /etc/sysconfig/vncservers
# 以下のセクションをVNCSERVERS="2:myusername" VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -localhost"# これに修正VNCSERVERS="1:azureuser" VNCSERVERARGS[1]="-geometry 800x600 -nolisten
VNC Serverの自動起動 daemon化
自動起動してほしいので。
sudo chkconfig vncserver on
runlevel 2,3,4,5がonになっていることを確認します。
chkconfig | grep vnc
こうなっていればokです。
vncserver 0:off 1:off 2:on 3:on 4:on 5:on 6:off
teraterm で ssh接続中に ssh転送をかける
外部はtcp22 のssh のみで他に解放せずにリモートセッションをTunnelingします。 1. まずは、Teratermで接続します。 2. 続いて、接続しているCent OSのIP Addressを調べます。 後程、トンネリングのリモート側のホストに指定することになります。 IP Addressは、ifconfigでチェックしておきます。
ifconfig
IPv4アドレスは、 inet addrの箇所です。
[office src="https://skydrive.live.com/embed?cid=D0D99BE0D6F89C8B&resid=D0D99BE0D6F89C8B%211437&authkey=AAocPuQfUMjXZCw" width="319" height="160"]
3. Tunnelingの設定をTeratermにします。
Teratermで接続 -> 設定 -> SSH転送 -> 追加を選択
[office src="https://skydrive.live.com/embed?cid=D0D99BE0D6F89C8B&resid=D0D99BE0D6F89C8B%211434&authkey=AJodGwT1xovVDnE" width="319" height="212"] 4. 追加を選択します。 [office src="https://skydrive.live.com/embed?cid=D0D99BE0D6F89C8B&resid=D0D99BE0D6F89C8B%211435&authkey=APPBzpVCNl1IdZQ" width="320" height="227"] 5. 設定をしましょう。 [office src="https://skydrive.live.com/embed?cid=D0D99BE0D6F89C8B&resid=D0D99BE0D6F89C8B%211436&authkey=AJujG7_odRYsJz0" width="319" height="180"]
- ローカルのポート : VNCで自分い向けてしてするポート (VNCデフォの5900とかおすすめ)
- リッスン : 不要 空欄でOK
- リモート側ホスト : ホストの local ipを入力。 ifconfigで表示された IPv4アドレス
- ポート : VNC Serverのデフォルト(Serverプロセス起動一つの場合 5901 なので 5901おすすめ)
こんな感じになるかと思います。 [office src="https://skydrive.live.com/embed?cid=D0D99BE0D6F89C8B&resid=D0D99BE0D6F89C8B%211438&authkey=AHCclt5c0UuvcLU" width="318" height="182"] 6. okを押して保存します。 7. VNC Viwerで、手元のパソコンから接続してみましょう。 接続先は、ローカルのTCP 5900なので、このようになります。 (TCP 5900は VNCのデフォルトなので入力不要) [office src="https://skydrive.live.com/embed?cid=D0D99BE0D6F89C8B&resid=D0D99BE0D6F89C8B%211439&authkey=AJjuXQheFBNrWkY" width="320" height="313"] 8. VNCのパスワード入力 接続してみると...... パスワードが聞かれれば通信設定に問題ありません。 VNC Serverの初回起動時に設定したパスワードを入力しましょう。 [office src="https://skydrive.live.com/embed?cid=D0D99BE0D6F89C8B&resid=D0D99BE0D6F89C8B%211442&authkey=AJVYIsHPKv70Bcg" width="319" height="116"] 9. CentOSのパスワードを入力 無事にVNCのパスワードが通れば、CentOSのログイン画面です。 Azureインスタンス作成時の、azureuserのパスワードを入力してログインします。 [office src="https://skydrive.live.com/embed?cid=D0D99BE0D6F89C8B&resid=D0D99BE0D6F89C8B%211441&authkey=AJ_mKmq_CjNwtHI" width="320" height="252"] 10. GUI ログイン成功 このようにGNOMEデスクトップが見えましたか? おめでとうございます! [office src="https://skydrive.live.com/embed?cid=D0D99BE0D6F89C8B&resid=D0D99BE0D6F89C8B%211440&authkey=AKIBcAq-GFr24Kc" width="319" height="249"] 接続時に出ているrootパスワードは、Azureでは分からないので大人しく閉じましょう (白目
VNCのパスワード変更
以下のコマンドでできます。忘れた場合などにどうぞ。
vncpasswd
まとめ
以上で、連載は終了です。 これで、GUI操作できますね!
P.S. おまけ
全体の流れをザクッと。 正直これで十分だとは思います。 (別に簡単実行シェルスクリプト書けなんて言わない)
# Azureへの接続 # linuxからssh 接続の場合 ssh azureuser@Azureのhost名-o ServerAliveInterval=180 # Windowsからssh 接続の場合 Teratermなどで hostnameにAzureのホスト名 ssh2を選択 ユーザー名は、azureuser パスワードにAzureインスタンス生成時のパスワード # 最新へ更新 sudo yum update # yumの自動更新ツールを入れる sudo yum -y install yum-cron # 自動更新設定 sudo vim /etc/sysconfig/yum-cron ♯--------------------------------以下を記入 SERVICE_WAIT_TIME=86400 ♯--------------------------------以上まで # 自動実行デーモン化 sudo chkconfig yum-cron on # サービス開始 sudo service yum-cron start # 外部リポジトリ Remi の管理 # yum-prioritiesのインストール sudo yum install yum-priorities # 標準レポジトリに優先順位づけ # Baseとupdateは priority=1をセクション末尾に追加 # 他は priority=2をセクション末尾に追加 sudo vim /etc/yum.repos.d/CentOS-Base.repo # remiのインストール (LAMP 向け / 不要ならなくても…) # epel sudo rpm -Uvh http://ftp-srv2.kddilabs.jp/Linux/packages/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm # remi sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm # rpmforge sudo rpm -Uvh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm # repo.dの確認 ls -l /etc/yum.repos.d/ # サンプル [azureuser@cherishacquire ~]$ ls -l /etc/yum.repos.d/ total 44 -rw-r--r--. 1 root root 1359 May 3 18:58 CentOS-Base.repo -rw-r--r--. 1 root root 637 Jun 26 2012 CentOS-Debuginfo.repo -rw-r--r--. 1 root root 626 Jun 26 2012 CentOS-Media.repo -rw-r--r--. 1 root root 2593 Jun 26 2012 CentOS-Vault.repo -rw-r--r--. 1 root root 957 Nov 5 03:52 epel.repo -rw-r--r--. 1 root root 1056 Nov 5 03:52 epel-testing.repo -rw-r--r--. 1 root root 739 Mar 20 14:24 mirrors-rpmforge -rw-r--r--. 1 root root 717 Mar 20 14:24 mirrors-rpmforge-extras -rw-r--r--. 1 root root 728 Mar 20 14:24 mirrors-rpmforge-testing -rw-r--r--. 1 root root 1020 Feb 12 18:50 remi.repo -rw-r--r--. 1 root root 1128 Mar 20 14:24 rpmforge.repo # remi.repo の有効化 [remi] のenabledを0 => 1へ priority=1も追記 sudo vim /etc/yum.repos.d/remi.repo #変更後 enabled=1 priority=1 # yumでrepo追加されたか確認し更新 yum repolist # remiを使ったyumの例 # sudo yum --enablerepo=remi install パッケージ名 # cronでのremiでいれたパッケージの定期アップデート #シェルを作成 sudo vim /root/update.sh ♯--------------------------------以下を記入 #!/bin/bash date; yum --enablerepo=remi -y update パッケージ名 ♯--------------------------------以上まで # 実行権限付与 sudo chmod +x /root/update.sh # crontabで定期実行指示 毎朝6時に実行 結果は/root/result.txtに出力 crontab -e ♯--------------------------------以下を記入 00 6 * * * sh /root/update.sh > /root/result.txt ♯--------------------------------以上まで # SSHの設定 (共有鍵方式への変更) # 設定ファイルの編集 vim /etc/ssh/sshd_config ♯--------------------------------以下を記入 # 1. IPv4の許可 #ListenAddress 0.0.0.0 ListenAddress 0.0.0.0 # 2. rootログイン禁止 #PermitRootLogin yes PermitRootLogin no # Allow Groupなどはお好きにどうぞ ♯--------------------------------以上まで #iptableは設定済みなので不要 # 公開鍵の生成 # azureuserでのsshログイン su - azureuser # ~/.ssh フォルダ生成 mkdir ~/.ssh chmod 700 ~/.ssh # 公開鍵をLinuxで生成 ssh-keygen -t rsa -C "SSH Connection User : azureuser" Generating public/private rsa key pair. Enter file in which to save the key (/home/users/sshuser/.ssh/id_rsa): [Enter] Created directory '/home/users/sshuser/.ssh'. Enter passphrase (empty for no passphrase): パスフレーズ Enter same passphrase again: パスフレーズ再入力 # ~/.ssh/id_rsa に秘密鍵が生成されるので、手元にWinSCPやteraterm scpで持ってくる。 # 公開鍵を認証キーとしてCentOS内部に配置。 mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys # sshd再起動 sudo /etc/init.d/sshd restart # 設定ファイルの編集 (パスワードログインの廃止) vim /etc/ssh/sshd_config ♯--------------------------------以下を記入 # パスワードログイン 禁止 #PasswordAuthentication yes PasswordAuthentication no ♯--------------------------------以上まで # zshのインストール sudo yum zsh # 利用可能Shellの確認 cat /etc/shells # zsh プロファイルの作成 cd ~ vim .zshrc # 適当に設定を入れる autoload -U compinit compinit setopt auto_cd setopt auto_pushd setopt correct # 現在のshellを確認 echo $SHELL # shellの変更 sudo chsh azureuser bin/zsh # 一度ログオフして入り直しで適用 # 初期のままでは gccをはじめとするコンパイラがインストールできない sudo yum install gcc # Error # sudo yum install glibc-headers-2.12-1.80.el6_3.7.x86_64 # 原因は、/etc/yum.conf kernelがyum update対象外としてexcludeされているので更新するように変更 sudo vim /etc/yum.conf exclude=kernel* #exclude=kernel* それか、これで sudo sed -e "s/exclude=kernel/#exclude=kernel/" /etc/yum.conf -i 戻す時はこれで sudo sed -e "s/#exclude=kernel/exclude=kernel/" /etc/yum.conf -i # 改めてgcc などなどをインストール sudo yum install gcc-c++ autoconf automake kernel制限を戻す時はこれで (戻したら、yumで出た時は直してね) sudo sed -e "s/#exclude=kernel/exclude=kernel/" /etc/yum.conf -i # desktop (GNOME)のインストール (groupinstall が効かないので個別インストール) # 相当かかるので、自動インストールで。 -y sudo yum install gnome* -y # X Windows のインストール (groupinstall が効かないので個別インストール) sudo yum install "xorg*" -y # GUIを初期起動に変更 () sudo vim /etc/inittab # 以下を 3 から 5に変更 id:3:initdefault: # 変更後 id:5:initdefault: # VNC Serverのインストール sudo yum install vnc-server # VNC Serverの開始 #初回のみVNCログイン用のパスワード設定 vncserver -geometry 800x600 # VNCの終了 vncserver -kill :1 # 初期設定ファイル編集 vim ~/.vnc/xstartup # 以下のセクションを xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & twm & # これに修正 xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & gnome-session & # VNCserverの待ち受け設定 sudo vim /etc/sysconfig/vncservers # 以下のセクションを、 VNCSERVERS="2:myusername" VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -localhost" # これに修正 VNCSERVERS="1:azureuser" VNCSERVERARGS[1]="-geometry 800x600 -nolisten # VNC SERVERの自動起動 sudo chkconfig vncserver on # daemonを開始 sudo /etc/rc.d/init.d/vncserver start # VNCのパスワード変更は、以下のコマンドを入力でOK. vncpasswd # teraterm で ssh接続中に ssh転送をかける (外部はtcp22 のssh のみで他に解放せずにリモートセッションをTunneringする) Teratermで接続 -> 設定 -> SSH転送 -> 追加を選択 ・ローカルのポート : VNCで自分い向けてしてするポート (VNCデフォの5900とかおすすめ) ・リッスン : 不要 空欄でOK ・リモート側ホスト : ホストの local ipを入力。 ifconfigで表示された IPv4アドレス ・ポート : VNC Serverのデフォルト(Serverプロセス起動一つの場合 5901 なので 5901おすすめ) # TeratermでSSH接続している時に、VNC Viwerで、宛先 127.0.0.1 で実行 # パスワードがきかれれば成功, そのまま接続して azureuserのログインパスワードでログイン # root のauthenticationは打つ手ないので、ほっとくこと。