CentOS
Ansible
Conoha

vpsにssh接続してansibleのpingを通すまで

More than 1 year has passed since last update.

VPSはConohaを使いました。
サーバーOS [CentOS Linux release 7.2.1511 (Core)]
手元のPCはmacです。

macは$
サーバーは#
で表示わけしていきます。

ssh鍵認証の設定

.sshディレクトリに移動して、
$ cd ~/.ssh
ssh鍵を生成。
$ ssh-keygen -t rsa

Generating public/private rsa key pair.
Enter file in which to save the key (~/.ssh/id_rsa):#名前を変えないならenter
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

passphraseについて

これでid_rsaとid_rsa.pubが生成できました。
id_rsaをmacに登録して、id_rsa.pubをサーバーの方に登録します。
次にconfigファイルを編集。
$ vi config

~/.ssh/config
host (サーバーのホスト名)
  HostName (サーバーのIPアドレス)
  User (ログインするユーザー名)
  IdentityFile (生成した秘密鍵のパス) ここでは (~/.ssh/id_rsa)

続いて/private/etc/hostsも編集します。

$ vi /private/etc/hosts

/private/etc/hosts
(サーバーのIPアドレス) (サーバーのホスト名) #これを追記する

でmac側の設定は大丈夫です。

次にサーバーの設定をしていきます。
最初はsshでユーザー名などを指定してサーバーに入ります。

$ ssh -l (ユーザー名) (サーバのIPアドレス)
(ユーザー名)@(サーバーのIPアドレス)'s password:

入ったら、公開鍵を登録します。

# cd /root/.ssh

に移動して、

# vi authorized_keys

authorized_keysを開いて,id_rsa.pubの中身をコピーします。

パーミッションの確認をします。
自分の環境では適切になっていました。

SSH で Permission Denied となる傾向と対策

つぎは/etc/ssh/sshd_configの設定を変えます。

/etc/ssh/sshd_configについて

# vi /etc/ssh/sshd_config

で開いて、

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

上記の3箇所のコメントアウトを解除すればよさそうです。
最後にsshサービスの再起動をすれば設定完了です。
# service sshd restart

以下のコマンドでサーバーに入れたら成功です。
$ ssh (サーバーのホスト名)

ansibleのpingを通す

$ brew install ansible

でansibleをインストールします。

現在のカレントディレクトリをfooとします。
$ pwd ~/foo

ansibleのpingモジュールを使って疎通の確認をします。

$ ansible (サーバーのホスト名) -m ping
[WARNING]: provided hosts list is empty, only localhost is available

エラーで調べてみるとansible-tutorialを見つけました。ここを見ながらやるとよさそうです。

どうやらデフォルトの場所に(/etc/ansible/hosts)と(/etc/ansible/ansible.cfg)が無いようです。

カレントディレクトリでも良いそうなので作ります。

$ touch hosts ansible.cfg

でファイルを作って、ansible.cfgの方はgithubにあるものの内容をコピーします。
ansible.cfg

$ vi hosts

~/foo/hosts
(サーバーのホスト名) # これを追記

$ vi ansible.cfg

~/foo/ansible.cfg
#inventory      = /etc/ansible/hosts
↓ #以下に書き換える
inventory = hosts

編集し終わったら、再度pingを試す。

 $ ansible (サーバーのホスト名) -m ping
(サーバーのホスト名) | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

上記のようになれば成功です。