読者です 読者をやめる 読者になる 読者になる

tech.guitarrapc.cóm

C#, PowerShell, Unity, Cloud, Serverless Technical Update and Features

Windows AzureのOpenLogic CentOS 6.3 で GNOME (X Window)を使うまでセットアップをしてみる part7

Azure

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で操作ですねー。

  1. Open Logic CentOS 6.3のインスタンス作成と接続
  2. yum更新とRemi Repositoruの導入
  3. ssh 公開鍵暗号での接続に切り替え
  4. zshのインストール
  5. gccなどDevelopment Toolsをインストール
  6. GNOMEの導入
  7. 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は打つ手ないので、ほっとくこと。