VagrantでEC2にアクセスする

ベイグラントと読むらしい。Vagrantで AWS EC2インスタンス(RHEL5.5)を作成するだけが頼りです。

Vagrant のAWS-Provider インストールというのをしてみる。

$ vagrant plugin install vagrant-aws

結構時間かかる。時間かかるなー。まだ終わらないので、Vagrantfileに記述する情報を調べる。

参考サイトから引用。こういうVagrantfileを作る必要があるらしいけど、アクセスキーとかシークレットキーとかもらってないので調べる。

Vagrant.configure("2") do |config|
  config.vm.box = "dummy"

  config.vm.provider :aws do |aws, override|
    aws.access_key_id = 'アクセスキーID'
    aws.secret_access_key = 'シークレットキーID'
    aws.region = 'ap-northeast-1'
    aws.instance_type = 't1.micro'    
    aws.ami = 'ami-3ddd543c'
    aws.security_groups = ['仮想マシンに設定するセキュリティグループ名']
    aws.keypair_name = '仮想マシンに設定するキーペア名'
    aws.tags = { 
      'Name' => 'サーバ名等、EC2インスタンスの名前に相当する名称'
    }
    # aws.use_iam_profile = ''
    # aws.subnet_id = ''
    # aws.private_ip_address = ''
    override.ssh.username = "root"
    override.ssh.private_key_path = 'pvivatekey(*.pem)のフルパス'

  end
end

と思ってたらインストールが完了した。

$ vagrant plugin install vagrant-aws
Installing the 'vagrant-aws' plugin. This can take a few minutes...
Installed the plugin 'vagrant-aws (0.4.1)'!

AWS EC2 用のDummyBox 取得&初期化というのをしてみる。

$ vagrant box add dummy https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box
Downloading box from URL: https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box
Extracting box...e: 0/s, Estimated time remaining: --:--:--)--)
Successfully added box 'dummy' with provider 'aws'!

vagrant init
そして、上記のVagrantfileを作成する。なのでAPIのキーみたいの調べる。
ここにあるっぽい。

スクリーンショット 2014-02-26 4.08.41

Access Keys (Access Key ID and Secret Access Key)のCreate New Access Keyを押してみる。作成できた。rootkey.csvというのももらった。別にsecret access keyが書いてあるだけなのでしっかり保存しとけよっていうことらしい。

ではいざVagrantfileをつくってupしてみる。
amiがなかったから作ってみた。

vagrant 起動(= 仮想サーバ作成)をしてみる。

$ vagrant up --provider=aws

悲しいです。エラーでまくり。

Bringing machine 'default' up with 'aws' provider...
WARNING: Nokogiri was built against LibXML version 2.8.0, but has dynamically loaded 2.9.1
[fog][WARNING] Unable to load the 'unf' gem. Your AWS strings may not be properly encoded.
[default] Warning! The AWS provider doesn't support any of the Vagrant
high-level network configurations (`config.vm.network`). They
will be silently ignored.
An error occurred while executing multiple actions in parallel.
Any errors that occurred are shown below.

An unexpected error ocurred when executing the action on the
'default' machine. Please report this as a bug:

getaddrinfo: nodename nor servname provided, or not known (SocketError)

Nokogiriってなんだよ。。

unfっていうのをインストールしてみる。

$ sudo gem install unf
Password:
Fetching: unf_ext-0.0.6.gem (100%)
Building native extensions.  This could take a while...
Successfully installed unf_ext-0.0.6
Fetching: unf-0.1.3.gem (100%)
Successfully installed unf-0.1.3
Parsing documentation for unf_ext-0.0.6
unable to convert "\xCF" from ASCII-8BIT to UTF-8 for lib/unf_ext.bundle, skipping
Installing ri documentation for unf_ext-0.0.6
Parsing documentation for unf-0.1.3
Installing ri documentation for unf-0.1.3
2 gems installed

あんま関係ないかも。。エラー変わらず。

vagrantでawsのインスタンスを起動しようとしたときに、getaddrinfo: nodename nor servname provided, or not known (SocketError)と出る件

aws.region = “ap-northeast-1a”を、aws.region = “ap-northeast-1″したらいいらしい。

おおいい感じと思ったら別のエラーが出た。

[default] Waiting for instance to become "ready"...
[default] Waiting for SSH to become available...
[default] Machine is booted and ready for use!
[default] Rsyncing folder: /Users/hoge/vagrant/ => /vagrant
An error occurred while executing multiple actions in parallel.
Any errors that occurred are shown below.

An error occurred while executing the action on the 'default'
machine. Please handle this error then try again:

There was an error when attempting to rsync a share folder.
Please inspect the error message below for more info.

Host path: /Users/hoge/vagrant/
Guest path: /vagrant
Error: Warning: Permanently added '11.111.111.111' (RSA) to the list of known hosts.
protocol version mismatch -- is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at compat.c(181) [sender=3.0.9]

あーなんかAMIつくったときにもう1個インスタンスが出来てたらしくて一個止めたらなんか入れた。入れたけどこれって単純に接続してるだけじゃん。なんだこれ。

Vagrant 1.1 で EC2 を vagrant upなるほどー。おらが思ってたのとちゃう。。
単にVagrantつかってEC2にアクセスできるだけか。。

[AWS][Vagrant]vagrant-awsを利用したイイカンジ(?)のAWS開発フロー

なんかすごいけどまだよくわからない。
さくらにしても、AWSにしても俺はローカルと開発サーバと本番サーバを同じ環境にしたくて、しかもローカルの代わりにAWSは使いたくない。お金かかるし。だから本番サーバのAWSに合わせたVagrantのBOXを自分でつくりたい。

Packerっていうのでつくれそう。
https://speakerdeck.com/ryuzee/vagrant-plus-amazon-ec2これに下記があった。
スクリーンショット 2014-02-26 7.48.48

Packerというのをインストールしてみる。
PackerでVagrant用のBoxを作成したときのメモ

$ brew tap homebrew/binary
Cloning into '/usr/local/Library/Taps/homebrew-binary'...
remote: Reusing existing pack: 110, done.
remote: Total 110 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (110/110), 16.96 KiB, done.
Resolving deltas: 100% (51/51), done.
Warning: Could not tap homebrew/binary/cmucl over mxcl/master/cmucl
Warning: Could not tap homebrew/binary/grads over mxcl/master/grads
Warning: Could not tap homebrew/binary/jsl over mxcl/master/jsl
Warning: Could not tap homebrew/binary/lmutil over mxcl/master/lmutil
Warning: Could not tap homebrew/binary/perforce-proxy over mxcl/master/perforce-proxy
Warning: Could not tap homebrew/binary/perforce-server over mxcl/master/perforce-server
Warning: Could not tap homebrew/binary/perforce over mxcl/master/perforce
Tapped 10 formula

$ brew install packer
Error: Unsupported special dependency arch

インストールできない。
http://www.packer.io/downloads.htmlここにあった。

OSXでpackerでCentOS6.4のVirtualBox VMを作成する
インストールできた。
でどう使うんでしょうか?

今日全部覚えるのは無理だな。色々なツールがあるし、そもそもよくわかってないし。
どうしたらいいのじゃ!まいった!時間がないのに!

ただし「このLinuxをAmazonクラウド以外で使えますか?」という問いには「いいえ、Amazon EC2以外で利用可能ではありません」と記されています。

とどこかに書いてあった。まあそうなのか。じゃあローカルに仮想環境つくるもくそもないのか。全くおんなじじゃないと意味ないっすからねえ。でもamazon linuxはec2でしか使えないならローカルで実現できるわけないし。

VagrantとChefでチームの開発環境を共通化する

とりあえず便利そうなやつだけインストールしておこう。

$ vagrant plugin install sahara
$ vagrant plugin install vagrant-vbguest
$ vagrant plugin install vagrant-berkshelf

で、一旦amazon linuxという呪縛から離れて、CentOS release 6.5の仮想マシンを立ち上げてみよう。ということはboxをhttp://www.vagrantbox.es/で探してみよう。CentOS 6.5 x86_64かな??
ってことは、こんな感じでやるのかな?

vagrant init centos6.5 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.1/centos65-x86_64-20131205.box
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Box 'centos6.5' was not found. Fetching box from specified URL for
the provider 'virtualbox'. Note that if the URL does not have
a box for this provider, you should interrupt Vagrant now and add
the box yourself. Otherwise Vagrant will attempt to download the
full box prior to discovering this error.
Downloading box from URL: https://github.com/2creatives/vagrant-centos/releases/download/v6.5.1/centos65-x86_64-20131205.box
Extracting box...te: 1443k/s, Estimated time remaining: --:--:--)
Successfully added box 'centos6.5' with provider 'virtualbox'!
[default] Importing base box 'centos6.5'...
[default] Matching MAC address for NAT networking...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Booting VM...
[default] Waiting for machine to boot. This may take a few minutes...
[default] Machine booted and ready!
GuestAdditions versions on your host (4.3.6) and guest (4.3.4) do not match.
Loaded plugins: fastestmirror
Determining fastest mirrors
 * base: www.ftp.ne.jp
 * epel: mirror01.idc.hinet.net
 * extras: www.ftp.ne.jp
 * updates: centos.tt.co.kr
Setting up Install Process
No package kernel-devel-2.6.32-431.el6.x86_64 available.
Package gcc-4.4.7-4.el6.x86_64 already installed and latest version
Package 1:make-3.81-20.el6.x86_64 already installed and latest version
Package 4:perl-5.10.1-136.el6.x86_64 already installed and latest version
Nothing to do
Copy iso file /Applications/VirtualBox.app/Contents/MacOS/VBoxGuestAdditions.iso into the box /tmp/VBoxGuestAdditions.iso
Installing Virtualbox Guest Additions 4.3.6 - guest version is 4.3.4
Verifying archive integrity... All good.
Uncompressing VirtualBox 4.3.6 Guest Additions for Linux............
VirtualBox Guest Additions installer
Removing installed version 4.3.4 of VirtualBox Guest Additions...
Copying additional installer modules ...
Installing additional modules ...
Removing existing VirtualBox non-DKMS kernel modules[  OK  ]
Building the VirtualBox Guest Additions kernel modules
The headers for the current running kernel were not found. If the following
module compilation fails then this could be the reason.
The missing package can be probably installed with
yum install kernel-devel-2.6.32-431.el6.x86_64

Building the main Guest Additions module[FAILED]
(Look at /var/log/vboxadd-install.log to find out what went wrong)
Doing non-kernel setup of the Guest Additions[  OK  ]
Installing the Window System drivers[FAILED]
(Could not find the X.Org or XFree86 Window System.)
An error occurred during installation of VirtualBox Guest Additions 4.3.6. Some functionality may not work as intended.
In most cases it is OK that the "Window System drivers" installation failed.
Restarting VM to apply changes...
[default] Attempting graceful shutdown of VM...
[default] Booting VM...
[default] Waiting for machine to boot. This may take a few minutes...
[default] Machine booted and ready!
[default] Mounting shared folders...
[default] -- /vagrant
Failed to mount folders in Linux guest. This is usually beacuse
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:

mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` /vagrant /vagrant
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` /vagrant /vagrant

エラーがいっぱいでてるけど、vagrant sshしたらとりあえず入れる。

$ cat /etc/redhat-release 
CentOS release 6.5 (Final)

ここに、Apache 2.2.15、Mysql 5.5.33、PHP 5.3.3これをchefで構築できるようにしたい。
でも時間かかるから、とりあえず普通にインストールしちゃって次のことするか。
次のことっていうのは、AMIを落として別のアカウントのEC2に適用するっていうのをしたいです。
あるいは、scpでソースコード移管して、DBに関しても移動させるか。システムログを消しても大丈夫かどうかだけど一般的にログは消しても大丈夫だからな。

さっきの、sudo yum groupinstall -y “Web Server” “MySQL Database” “PHP Support”をやってみたらmysqlがインストールできなかった。

http://qiita.com/srockstyle/items/8bed9550be75bf2e5e14これのとおりにやってみる。

## EpelとRemiを入れる
sudo -i
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

## MySQLの5.5をremiから
yum –enablerepo=remi install mysql-server mysql mysql-libs mysql-devel

できた。でも5.5.33がよかったんだけど、5.5.36だった。どうでもいいか。いいのかな?

AWSで色々やってみる

サインインします。
https://portal.aws.amazon.com/gp/aws/developer/registration/
サインインできました!

AWS Management Consoleを開きます。
スクリーンショット 2014-02-26 1.07.00

EC2に入ってサーバをつくります。Launch Instanceというボタンを押してみます。Amazon Linux AMI 2013.09.2を選んでみます。64bitにしてみます。正直64bitって高機能っぽいって感じにしか分かりませんが。Step 2: Choose an Instance Typeにやってまいりました。最初はMicro instancesでいいです。これはサーバのスペックを色々選べるようです。

スクリーンショット 2014-02-26 1.13.19

Review and Launchというボタンを押してみます。いきなりStep 7: Review Instance Launchにやってまいりました。さすが俺。仕事はやい。 Click Launch to assign a key pair to your instance and complete the launch process.と書いてありますので、Launchを押すと、晴れてインスタンス作成が完了するようです。

スクリーンショット 2014-02-26 1.17.08

Improve your instance’s security. Your security group, launch-wizard-1, is open to the world.と書いてありますので、launch-wizard-1というグループにipアドレスの制限とか使えるアプリの制限とかをかけないと危ないよということらしいです。設定しましょう。

Step 6: Configure Security Groupに戻ってきました。
スクリーンショット 2014-02-26 1.20.26

sshは自宅からしかできないようにしてみます。sourceをMy IPにしたら自分のIPを自動で設定してくれました。Step7に戻って、Launchを押してみます。すると謎のウインドウが表示されました。

スクリーンショット 2014-02-26 1.25.09

SSH接続用のやつらしいです。create new keypair といった感じのやつを選んでcreateしてdownloadしたらpemファイルが貰えました。

Launch instanceボタンを押してみます。インスタンスの作成が完了しました。
スクリーンショット 2014-02-26 1.29.53

つくったサーバはどのリージョンで動いているのかよくわからない。
とりあえずサーバにssh接続してみます。

ssh -i hogehoge.pem ec2-user@11.111.111.11

入りました。
スクリーンショット 2014-02-26 1.46.50

sudo yum updateしました。

phpとかmysqlとかは入っていません。perlとpythonは入ってますが。

これからやりたいのは、phpとかmysql、apacheとか入れて設定して、同じ環境をローカルにvagrantつかって作りたいと思います。あとはS3に画像を格納するようにしたり、ロードバランサーとかいうを使ってみたりしたいです。
ということで、一旦下記の本をずっと昔に買っていたので斜め読みします。

スーパー斜め読みが完了しました。いい感じですねえ。色々できるんですね。心配なのはお金です。。必要のないときはサーバを停止しないとお金かかりますし、停止してもお金かかるので本当に不要なときはインスタンスを削除しないといけないようです。

ところでリージョンがどこになってるのか確認したいです。選択した記憶がありません。
シンガポールになってました。右上のやつで変えたら変わるんですかね。まあいいや。

チュートリアル: LAMP ウェブサーバーのインストール

phpとかをインストールします。

sudo yum groupinstall -y "Web Server" "MySQL Database" "PHP Support"

インストールされました。
スクリーンショット 2014-02-26 2.37.33

apacheの設定をします。
セキュリティグループで80portをあける必要があります。
www グループをインスタンスに追加し、そのグループに /var/www ディレクトリの所有権を与え、グループの書き込み許可を追加します。

$ sudo groupadd www
$ sudo usermod -a -G www ec2-user

パスワードでログインはできないらしい。

mysqlの設定をします。
$ sudo service mysqld start
$ mysql_secure_installation

dead-letter

なんとも忌まわしい存在を知ってしまいました。dead-letterです。
いつも使っているサクラサーバにデプロイしたらお問い合わせのフォームで送信しようとしたらエラーになってしまっている状態です。そして、サーバのエラーログに下記のようなものが出てきました。

malformed header from script. Bad header=/home/hoge/dead.letter… S: index.php, referer:フォームのURL

スクリプトからのメールフォームのヘッダーが行けてないよ。といったことでしょうか?意味不明です。いつもと同じプログラムだったと思ったのですが。何とも忌まわしいです。

あ、もしかして、ドメイン登録してるけど、メアドはgoogleで登録してるから、そんなメアド登録してないじゃん!みたいなことをずうずうしくもサクラサーバはいっているのかもしれない。それくらいしか変化がない。

やはりそうっぽい。
WordPressのマルチサイトでユーザー追加時に500エラー
PHPMailerでGmailのメール送信

なにこれすごいめんどくさい。でもgoogle apps使ってる理由ってなんだっけ?サクラでいい気がする。google apps解除して、さくらに移すかな。

さくらサーバにメールアドレスを追加してみる

今例えばinfo@hoge.comというメアドがgoogle appsで登録されているにも関わらず、hoge.comをサクラで運用しているとしましょう。その場合、info@hoge.comというメアドでスクリプトからメール送信しようとするとエラーになるわけです。さくらにとってinfo@hoge.comは知らないからであります。であるならば、さくらに知らせてあげようということです。登録してみました。いざ確認してみます。にしても2つのサーバで1つのメアドを登録するとどうなるんでしょうか??怖いです。

おお!さくらのプログラムはエラーがなくなりました。サクラちゃんは上記メアドを認知したからです。しかし一方でこのメアドが使えなくなるような不具合は困ります。

テスト送信してみましたが、今のところ問題なくメール送受信できてます。まあ恐らく大丈夫だろう。取得ドメインのメールのネームサーバ?とかいうやつはgoogleで全部設定したし、ということはgoogleにいくということじゃ。確かにそうだ。お手軽な解決策があってよかった。

さくらサーバにgitをインストールする

https://code.google.com/p/git-core/downloads/list

ここから最新版をローカルに落として、サクラサーバにSCPでコピーします。

ここに書いてある通りにインストルします。

$ tar xvfz git-1.9.0.tar.gz
$ cd git-1.9.0
$ ./configure --enable-pthreads=-pthread --prefix=$HOME/local
$ gmake all install

インストールまで出来たら、パスをとおします。

/home/hogehoge/.cshrcを編集します。
下記のset pathというところの最後に、$HOME/local/binを追加します。

set path = (/sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin $HOME/bin $HOME/local/bin)

そして、下記をやるとcshrcの再読み込みになるようです。

$ source .cshrc

これでgitと打つとgitがでてきます。

AWSにジオトラストのSSLを設定する

Apache + OpenSSL ジオトラスト クイックSSL プレミアム インストール手順 (新規)

このとおりやったんですが、うまくいかない。httpsでアクセスするとこのウェブページにアクセスできませんってエラーになる。

環境は、下記です。
・Amazon Linux AMI release 2013.09
・Apache/2.2.26 (Unix)
・OpenSSL 1.0.1e-fips 11 Feb 2013

netstat -a | grep https

とかやってみるってどこかに書いてあったからやったけど、下記のようなの出てくるし、他のサーバでhttpsでアクセスできるやつでも同じ結果だから問題なさげ。

tcp 0 0 *:https *:* LISTEN

wget https://localhost

とやってみると、下記のようなのが出てくるので443に接続できてるし、証明書も読み込まれているっぽい。

–2014-02-12 16:03:39– https://localhost/
localhost (localhost) をDNSに問いあわせています… 127.0.0.1
localhost (localhost)|127.0.0.1|:443 に接続しています… 接続しました。
エラー: 証明書に記載されている別名とホスト名 `localhost’ が一致しません
localhost に安全の確認をしないで接続するには、`–no-check-certificate’ を使ってください。

wget https://ホスト名

ってやると、タイムアウトで接続できなかった。

AmazonEC2のサーバにSSLを設定する手順を見てたら、下記のように書いてあった。

ec2の管理画面のセキュリティーグループを修正
SSLには443ポートを使うので、インスタンスのセキュリティーグループをチェックし、そのセキュリティーグループのInboundの443番を解放する。

AmazonEC2サーバの443ポートをあける

参考:セキュリティーグループにルールを追加する (サーバーのポートを開放する)

このサイトのとおりに443あけたらできた。
(リージョン毎に表示されるインスタンスとか違うのか)

さくらVPS CentOS6.5でSSLをつかってみる

さくらサーバでSSLつかってみましょう。環境は下記になります。

・FreeBSD 9.1-RELEASE-p7 amd64
・さくらのレンタルサーバ スタンダード
・Apache/2.2.25

あら独自SSLを使えるのは、ビジネスプロ以降らしい。http://www.sakura.ne.jp/
では、VPSを使ってやってみよう。環境は下記になります。

・CentOS release 6.5 (Final)
・Apache/2.2.15 (Unix)
・OpenSSL 1.0.1e-fips 11 Feb 2013

mod_sslをインストールする

$ yum -y install mod_ssl

mod_ssl.x86_64 1:2.2.15-29.el6.centosというのがインストールされた。

CA用秘密鍵(ca.key)の作成

$ openssl genrsa -des3 -out /etc/httpd/conf/ca.key -rand rand.dat 1024

CA用証明書(ca.crt)の作成

$ openssl req -new -x509 -days 365 -key /etc/httpd/conf/ca.key -out /etc/httpd/conf/ca.crt

サーバ用秘密鍵(server.key)の作成

$ openssl genrsa -des3 -out /etc/httpd/conf/server.key -rand rand.dat 1024

署名要求書(server.csr)の作成

$ openssl req -new -key /etc/httpd/conf/server.key -out /etc/httpd/conf/server.csr

サーバ用秘密鍵(server.key)からのパスフレーズ削除

オリジナルをバックアップしてから、server.keyからのパスフレーズ削除

$ cp /etc/httpd/conf/server.key /etc/httpd/conf/server.key.bak
$ openssl rsa -in /etc/httpd/conf/server.key.bak -out /etc/httpd/conf/server.key

サーバ用証明書(server.crt)の作成

$ openssl x509 -req -signkey /etc/httpd/conf/server.key -days 3650 -in /etc/httpd/conf/server.csr -out /etc/httpd/conf/server.crt

ssl設定ファイル(ssl.conf)の変更

$ vim /etc/httpd/conf.d/ssl.conf

100 #   Server Certificate:
101 # Point SSLCertificateFile at a PEM encoded certificate.  If
102 # the certificate is encrypted, then you will be prompted for a
103 # pass phrase.  Note that a kill -HUP will prompt again.  A new
104 # certificate can be generated using the genkey(1) command.
105 
106 #SSLCertificateFile /etc/pki/tls/certs/localhost.crt
107 SSLCertificateFile /etc/httpd/conf/server.crt #<--これに変更
108 
109 #   Server Private Key:
110 #   If the key is not combined with the certificate, use this
111 #   directive to point at the key file.  Keep in mind that if
112 #   you've both a RSA and a DSA private key you can configure
113 #   both in parallel (to also allow the use of DSA ciphers, etc.)
114 
115 #SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
116 SSLCertificateKeyFile /etc/httpd/conf/server.key #<--これに変更

Apache再起動

/etc/rc.d/init.d/httpd restart

これでhttpsでアクセスすると反映されてた。

参考:はじめての自宅サーバ構築 – Fedora/CentOS –

AWSでCSRを作成する

AWSサーバに入るための鍵がppkという拡張子になっている。下記を見ながら変更してみる。
Putty の鍵ファイル .ppk を Linux ssh 用に変換してみる

yumが使えないから、下記を見ながらやってみる。
Run Putty on Mac OS X 10.6.8

sudo port install puttyってやっても、下記のエラーになった。
Error: Processing of port putty failed

sudo port selfupdateでportをアップデートしてみた。
テザリングでやってるから超おそい。
そもそもputtyとはなにか?

Windows OSで稼働するSSHクライアント。TTSSHとは異なり,SSHプロトコルversion2にも対応している。さらに,ファイル転送のためのscpや公開鍵認証のためのagentなど,UNIX版SSHクライアントの機能を多数サポートしている。

これがMacでも使えるらしい。SSHクライアントなんていらないんだけどな。やっぱり変換したい。
それにしてもUpdating the ports treeから動かない。諦めるか。一回とめてもう一回やってみる。やっぱり動かない。

そもそも変換したいわけだから、Putty自体は不要だし、どうもputtygenというのがあればいいらしい。
MacでPutty形式の秘密鍵を変換するこれみてもう一度やってみる。
brew install putty
おお出来たっぽい。

ppkを下記で変換できた。

puttygen putty_key.ppk -O private-openssh -o ~/.ssh/from_putty_key_rsa

SSHで接続しようとしてもPermission denied (publickey).ってでてエラーになる!
おーできた。ユーザ名指定してなかった笑

■CSRの作成(ジオトラスト)
サーバー証明書の作成、アップロード、削除
CSRの生成方法

CSRとは?企業の社会的責任ではない。CSRとは、お客様が生成し、認証局に提出する署名リクエスト(Certificate Signing Request)です。

ここで一旦お昼ご飯にする。

sshで接続してるときに短時間でタイムアウトにならないようにする

sshでサーバに接続してるときに非常にイライラさせられるので、調べた。

参考:ssh 接続をタイムアウトしないようにする

設定は、クライアント側・サーバ側のどちらかのみすればよいとのこと。
とりえあずサーバ側を設定してみる。

vim /etc/ssh/sshd_config

sshd_configに、下記を追加してみた。

ClientAliveInterval 10
ClientAliveCountMax 10

どうもできてるっぽい。と思ったらできていない!

参考:NATな環境で放置したSSH接続が切断される問題について

よくわからないが、とりあえず解決したいので次に、クライアント側の設定もしてみる。
できてる。

XserverにcakePHP置くのが難しかった

4時間くらいかかってしまった。
久しぶりにブログ書く。でも細かくかきたくない。

public_htmlの.htaccessの中身がよろしくなかった。
PHPのバージョンは5.4にしているのだが、

AddHandler x-httpd-php5.4 .php .phps
これの.4が抜けていて、真っ白状態が続いていた。
.4つけたら、すっかり問題なく動いた。

SSH (Secure SHell) の仕組み

SSHとは、ネットワークを介して他のコンピュータに安全にアクセスする仕組み。
telnetは暗号化されてないので盗聴の危険性があるが、sshは暗号化されているので安全。

SSHはRSA暗号方式かDSA暗号方式のどちらかで暗号化した公開鍵と秘密鍵のペアを用いる。公開鍵は暗号化のみ可能であり、秘密鍵は復号のみを行う。暗号化のみ可能で復号ができない為、公開鍵は公開されても問題がない。公開鍵は公にして問題ないことから、複数のリモートコンピュータと接続する場合も、公開鍵・秘密鍵のペアは一つあればよい。

SSHを使って、リモートコンピュータにアクセスしようとする場合、アクセス元のコンピュータで公開鍵・秘密鍵のペアを作成し、公開鍵をリモートコンピュータに渡しておく必要がある。

リモートコンピュータに、公開鍵を渡した後で、ssh接続をしようとすると、

  • sshが、RSA認証プロトコルを使用する旨をリモートコンピュータに伝える。
  • すると、リモートコンピュータが、乱数を生成し、その乱数を渡された公開鍵を基に暗号化し送信してくる。
  • 接続元コンピュータは、受信した暗号を秘密鍵で復号し、復号結果をリモートコンピュータに送信する。
  • リモートコンピュータは受信した内容が生成した乱数と一致すれば、秘密鍵保有者であることが確認されたためアクセスを許す。

秘密鍵が他人に渡った場合あらゆるアクセス権限が渡ってしまうことになる為、秘密鍵作成時にはパスフレーズを登録すべき。これによって、万一他人に秘密鍵が渡っても、パスフレーズがない限りはそれを使用できない。

ただ、SSHで公開鍵・秘密鍵を利用する目的の一つにパスワード入力を不要にするという点があるが、パスフレーズを登録した場合、パスワードの代わりにパスフレーズの入力が必要となる為、その目的に合致しない。そこで、パスフレーズ入力を回避したい場合は、ssh-agentを利用する。macには、キーチェーンという仕組でパスフレーズ入力が回避できる。

#実際の公開鍵・秘密鍵の作成方法
cd ~/.ssh
ssh-keygen -t rsa

#作成した公開鍵をリモートコンピュータに渡す
scp id_rsa.pub ユーザ@リモートコンピュータのホスト:

#リモートコンピュータにログインする
ssh ユーザ@リモートコンピュータのホスト
パスワード入力
ログイン完了
cat id_rsa.pub >> ~/.ssh/authorized_keys
rm id_rsa.pub

また、/etc/hosts.allow、/etc/hosts.denyを編集することで、接続元を制限することができる。hosts.denyはhosts.allowよりも先に見られる。hosts.denyに、ALL:ALLと書くことで、「全てダメ」になる。hosts.allowに下記にように書くことで、記載した対象のみ接続可となる。

ALL : 127.0.0.1
ALL : 192.168.1.1

参考:
http://e-words.jp/w/ssh.html
http://www.atmarkit.co.jp/flinux/special/ssh/ssh.html
http://www.turbolinux.com/support/document/knowledge/152.html
SSH-KEYGEN
OpenSSH キー (鍵) の管理