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トンネルを介して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起動プロセスの順番数 ) となります。例えば、1つだけVNC Serverプロセスを上げたら5901です。 Windowsでは一般にTCP 5900なので、少し印象が違いますね。しかしこのままでは、外部に対していくつも余計なポートを開ける必要があります。
そこで、せっかくあるSSH接続を利用してSSHトンネルで外部には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のみで他に解放せずリモートセッションをトンネリングします。 まずは、Teratermで接続します。 続いて、接続しているCent OSのIP Addressを調べます。 後程、トンネリングのリモート側のホストに指定します。
IP Addressはifconfigでチェックしておきます。
ifconfig
IPv4アドレスはinet addrの箇所です。トンネリングの設定をTeratermにします。
Teratermで接続 -> 設定 -> SSH転送 -> 追加を選択
- ローカルのポート : VNCで自分い向けてしてするポート (VNCデフォの5900とかおすすめ)
- リッスン : 不要空欄でOK
- リモート側ホスト : ホストのlocal ipを入力。 ifconfigで表示されたIPv4アドレス
- ポート : VNC Serverのデフォルト(Serverプロセス起動1つの場合5901なので5901おすすめ)
okを押して保存します。VNC Viwerで、手元のPCから接続してみましょう。 接続先は、ローカルのTCP 5900なので、このようになります。 (TCP 5900はVNCのデフォルトなので入力不要)
VNCのパスワード入力接続してみると...... パスワードが聞かれれば通信設定に問題ありません。 VNC Serverの初回起動時に設定したパスワードを入力しましょう。
CentOSのパスワードを入力無事にVNCのパスワードが通れば、CentOSのログイン画面です。 Azureインスタンス作成時の、azureuserのパスワードを入力してログインします。
GUIログイン成功このようにGNOMEデスクトップが見えましたか? おめでとうございます
接続時に出ている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は打つ手ないので、ほっとくこと。