以下の内容はhttps://tech.guitarrapc.com/entry/2013/05/07/220557より取得しました。


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

part7今回が最終回です。 前回は、GNOME環境を整えるところまでやりました。

今回は、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は打つ手ないので、ほっとくこと。



以上の内容はhttps://tech.guitarrapc.com/entry/2013/05/07/220557より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14