sshの設定で楽々接続
今回はssh設定まわりを書いていこうと思います。
ここに関してはMacかLinuxの各ディストリビューションをお使いの方が対象になります。
もし、Windowsをご利用の方でしたら、PuttyやRLogin、Tera Termといったフリーのターミナルソフトを利用して作成する事ができます。
この記事では割愛させていただきます。(気が向いたら書きます。)
前回のリポジトリの追加が気になる方はこちらからどうぞ。
はじめに
まず、sshですが主流はssh2だと認識しております。(間違っていたらごめんなさい)
細かい説明を書き出すと面倒なのでググってください。
とりあえず、ssh2で話は進めます。
こちらにOpenSSHのサイトがあるので確認できます。(英語)
そもそもSSH接続って?
簡単に説明するとマシン同士を鍵を使用して安全(認証して)に接続する仕組みです。
鍵は秘密鍵(接続元)、公開鍵(接続先)が存在し接続元と接続先に設置します。
この秘密鍵と公開鍵がペアになっているので、鍵が一致しないと接続できないため公開鍵だけ盗まれても秘密鍵がなければ接続できません。
逆に秘密鍵を紛失すると入れなくなります。
鍵の種類
ざっくりですが、鍵の種類は下記がございます。
暗号化の仕組みとか堅牢性が変わってくるので興味のある方は調べてみてください。
dsa / ecdsa / ed25519 / rsa / rsa1
※rsa1以外はssh2対応だったはず。(記憶が曖昧で申し訳ない)
鍵を作成する上で注意点
オプション'b'でビット数を指定できます。値が大きいほど堅牢性が高まります。
rsaならデフォルトは2048ビット、最小で1024です。
事前準備
鍵を作成する前に鍵の保存場所を作成しておきます。
作成するディレクトリ
ホームディレクトリ以下に.sshという隠しディレクトリを作成します。
先ずはディレクトリが既に存在するか確認します。
もし、ディレクトリが存在する場合は既に鍵があるので上書きされないように退避しておくなど対応が必要です。
ls -la ~
保存先のディレクリ作成
パーミッションも指定して作成します。
>mkdir -m 0700 ~/.ssh
作ってみる
冒頭の説明にもありましたが、私の環境がMacなのでターミナルを立ち上げてコマンドを打てば鍵を作成できる状態です。
今回は下記の条件で鍵を作成します。
秘密鍵・公開鍵作成
>ssh-keygen -b 4096 -N "" -t rsa -C "コメント" -f {鍵のファイル名}
例)ssh-keygen -b 4096 -N "" -t rsa -C "開発環境用" -f ~/.ssh/id_rsa_centos7_master_20170623
-Cは何のために作成した鍵か書いておくと管理し易いです。
-fは上書き防止のためファイル名を指定した方が無難です。※
※~/ssh_keygen/rsa_20xxmmddのようにディレクトリパス込みで指定できます。
下記のファイルが生成されます。
秘密鍵: .ssh/id_rsa_centos7_master_20170623
公開鍵: .ssh/id_rsa_centos7_master_20170623.pub
公開鍵を接続先へコピー
Linuxをご利用の方なら既にssh-copy-idコマンドがインストール済みかも知れませんがMacには無いのでインストールが必要です。
また、ssh-copy-idをインストールするのにbrewがインストールされていないとインストールできません。
brewのインストール
>ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
ssh-copy-idのインストール
公開鍵を接続先へコピー
ssh-copy-idを使用します。
オプション-iを指定してコピーすると自動的に追記してくれます。
>ssh-copy-id -i .ssh/{渡したい公開鍵.pub} {UserName}@xxx.xxx.xxx.xxx
接続先に下記のようなファイルが作成されます。
.ssh/authorized_keys
パスフレーズ接続からssh接続へ
漸く本題のssh接続に入ります。
ざっくり流れだけ先に説明します。
設定ファイルの書き換え
下記がsshの設定ファイルになっております。
設定ファイルを編集
作業にはroot権限が必要です。
rootでのログインを禁止
PermitRootLogin no
パスワードによる認証を禁止
PasswordAuthentication no
パスワード無し(空パスワード)を許可※
※プライベートな開発環境なので許可しています。
PermitEmptyPasswords yes
その他
プライベートな開発環境なので切ってしまいます。
GSSAPIAuthentication no
UseDNS no
再起動
>systemctl restart sshd
再接続
リモートからログアウトして再びssh接続する。
その際にパスワードを聞かれず接続できれば設定完了です。
ここまでの設定で仮想マシンのマスタを完成とします。
あとは、用途に合わせて仮想マシンのクローンを作成して作業していきます。
次回予告
Rubyの複数バージョンを切り替えて使用するrbenvの環境構築を取り上げたいと思います。
最後までお読みいただきありがとうございます。
以上、ssh接続の設定でした。
リポジトリの追加
今回はリポジトリ(パッケージの取得先)を追加してみます。
yumコマンドによるCentOS7のアップデートはこちら
はじめに
追加するリポジトリは下記の通りです。
・EPEL
FedoraのパッケージをRed Hat Enterprise Linuxやその互換ディストリビューションに使用するため有志の方が用意してくださっているリポジトリです。(感謝です)
詳しくはEPEL/ja - FedoraProjectよりご確認ください。
・IUS
Red Hat Enterprise Linuxやその互換ディストリビューション用の新しいRPMパッケージを提供するコミュニティです。(こちらも感謝です)
詳しくはIUS(英語)よりご確認ください。
・nginx
WEBサーバーであるnginxがEPEL、IUSに含まれていないので、個別にリポジトリを追加します。
予め知っておく事
リポジトリ追加後に"/etc/yum.repos.d"以下に各リポジトリの設定ファイルが生成されてリポジトリが有効な状態になっているので無効(enable=0)にします。
※意図しないパッケージのインストールを防ぐためです。
対象ファイル
epel.repo
ius.repo
nginx.repo
リポジトリのインストール
・EPEL
>yum install epel-release -y
・IUS
>rpm -ivh https://centos7.iuscommunity.org/ius-release.rpm
・nginx
>rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
インストールしたリポジトリのパッケージを使用
>yum install -enablerepo={リポジトリ名} {インストールするパッケージ}
次回予告
公開鍵認証によるssh接続について
以上、リポジトリの追加でした。
最後までお読みいただきありがとうございます。
CentOS7のアップデート
これまでの作業で仮想マシンの構築とCentOS7のインストールが完了しました。
次にやる事はCentOS7のアップデートです。
IPアドレスの設定はこちらになります。
手順1. アップデートの前にやる事
今までの手順では外部に接続できません。
下記の設定ファイルを編集して外部接続できるようにしましょう。
/etc/sysconfig/network-scripts/ifcfg-enp0s3
※NATの設定ファイル
変更前:ONBOOT=no
変更後:ONBOOT=yes
ネットワークの再起動です。
>systemctl restart network
これをやらないとこうなります。
手順2. CentOS7のアップデート
アップデート前にアップデートがある事を確認します。
>yum check-update
アップデートします。(暫く時間が掛かります。)
※毎回アップデートが必要か聞かれるのが面倒なので"-y"オプションを付加します。
>yum update -y
↓こんな感じでアップデートが進行します。
おまけ
下記のパッケージは使用頻度が高いので予めインストールしておくと後ほど便利になります。
>yum install git gcc bzip2 openssl-devel readline-devel zlib-devel -y
次回予告
yumでインストールするrpmパッケージの取得先を追加する。
以上、CentOS7のアップデートでした。
デバイスとIPアドレスの紐付け
NAT、ホストオンリーアダプターの設定後にCentOS7をインストールしたらIPアドレスの設定をします。
NAT、ホストオンリーアダプターの設定はこちらを参照ください。
手順1. デバイスの確認をする
下線のMACアドレスでホストオンリーアダプターであるか確認する。
>ip a
手順2. IPアドレスの編集画面を開く
"NetworkManager TUI"を開き編集していきます。
>nmtui
手順3. Ethernetの選択
"ip a"で確認したMACアドレスから編集するEthernetを選択する。
手順4. IPアドレスを指定
Addressesに使用したいIPアドレスを指定する。
例)192.168.51.101/24
下記の項目にチェックを付ける。
[X] Never use this network for default route
[X] Require IPv4 addressing for this connection
IPv6 CONFIGURATION <Automatic>
[X] Automatically connect
[X] Available to all users
"OK"を選択して設定する。
手順5. 設定確認
ネットワークの再起動を行います。
>systemctl restart network
設定されたか確認します。
※青色帯の箇所に設定したIPアドレスが表示されれば設定されております。
>ip a
手順6. 接続確認
ターミナルからsshコマンドで接続できるか確認します。
>ssh {user name}@xxx.xxx.xxx.xxx
これで接続できれは設定完了です。
次回予告
外部接続してyumコマンドで色々更新してみたいと思います。
以上、IPアドレスの設定になります。
CentOS7をインストール
VirtualBoxで箱を作成したので、CentOS7をインストールしたいと思います。
↓に手順あります。
手順1. 作成したCentOS7_Masterを起動
初回起動時にイメージ選択します。
先ほどミラーサイトでDLしたCentOS-7-x86_64-DVD-1611.isoを選択します。
手順2. インストールメニューの選択
インストールまたはメディアのテスト&インストールといった選択肢があります。
テストが面倒なので、そのままインストールします。
手順3. 言語の選択
日本語を選択します。
手順4. インストールの概要について
下記のイメージにはありませんが、最初にインストールソースとインストール先がオレンジ色で警告のようなものが出ることがあります。(その時は対象を探しているようです。)
インストールソースは放置していても勝手に見つけてくれましたが、インストール先は一度選択してディスクにチェックが入っている事を確認してから"完了"を押下後、この画面に戻ると直ります。
これらが解決するとインストールの開始が押下できるようになります。
手順5. rootパスワードとユーザー作成
インストールが始まるとrootのパスワードとユーザーの作成が同時進行で出来ます。(便利になってる...)
手順6. rootパスワードを入力
推測され難いパスワードを設定します。(入力時に強度が表示される)
私は外部に公開しないので特に注意しません。
その場合、確認の為に完了を2回押下するように要求されます。
手順7. ユーザーの作成
root以外のユーザーを作成できます。
フルネーム入力時にユーザー名も自動入力されますが、ユーザー名は別名に編集する事も可能です。
こちらもパスワードが貧弱だと完了を2回要求されます。
手順8. インストール中
私のマシンはスペック高めなので数分で終わります。
スペックによって多少時間が変わるかと思います。
手順9. インストール完了
これでCentOS7がインストール完了です。
再起動を押下すると起動後にログイン画面になります。
手順10. ログイン画面
再起動後、下記の画面になったら作成したユーザー名とパスワードでログインできる事を確認します。
まとめ
これでCentOS7のインストールは終了です。
特質して難しい事はなかったと思います。
次回予告
VirtualBoxの設定に戻ってネットワーク周り(NAT/ホストオンリーアダプター)を編集したいと思います。
以上、CentOS7のインストールでした。
NAT、ホストオンリーアダプタの設定
表題通りの設定をしたいと思います。
手順1. ホストオンリーネットワークを追加
VirtualBoxを起動する
VirtualBox > 環境設定 > ネットワークの順に選択する
ホストオンリーネットワークを選択する
- "1"で追加
- "2"で編集
手順2. NAT、ホストオンリーアダプタの確認
作成した仮想マシンの箱を選択して歯車マークの設定を選択すると下記のようなメニューが表示される。
アダプター1にNATが指定されている事を確認する。
アダプター2にホストオンリーアダプターを追加する。
手順3. ホストオンリーアダプターとホストオンリーネットワークを紐付け
手順1で作成したホストオンリーネットワークを割り当てしたアダプター2で選択する。
こちらを設定しておくとターミナルからssh接続できるなど便利です。
次回予告
nmtuiによる"IPアドレスの設定"になります。
以上、NATおよびホストオンリーアダプターの設定についてでした。
開発環境構築の備忘録
CentOS7の開発環境がほしいのでVirtualBoxを用いて構築した手順です。
ホストはMacです。
先ずはVirtualBoxをDL
Oracle VM VirtualBoxからDLできます。
注2. この手順は2017/06/19時点で手に入る最新のVirtualBoxで作業のため、今後も同じ画面構成とは限りません。
CentOS7をDL
下記にミラーサイトの一覧があるのでお好みで利用します。
https://www.centos.org/download/mirrors/
※今時点で最新のCentOS-7-x86_64-DVD-1611.isoを選択しております。
CentOS7をインストールする仮想マシン(箱)を作成
手順1. 先ずは仮想マシン名を命名(今回はCentOS7_Master)
注1. 状況に合わせ、この仮想マシンを複製する可能性があるのでMasterと分かり易く命名しておきます。
注2. 今後はこのマシンに必要最低限の設定しかしません。
手順2. メモリサイズの選択
ご自身の環境やお好みで構いません。
手順3. ハードディスクを選択
インストール先の仮想ハードディスクを選択します。
今回は新たに環境構築するので"仮想ハードディスクを作成する"を選択しております。
手順4. ハードディスクのタイプを選択
他の仮想ソフトウェアも視野にいれるなら状況にあったタイプを選択してください。
私はVirtualBox一択なのでVDIを選択します。
手順5. 物理ハードディスクにあるストレージを選択
固定サイズだと高速だという事なのですが、パフォーマンスよりも開発環境の構築が目的です。
パフォーマンスを求める場合は検証環境(ステージング)を本番と同じ条件で構築して確認するので、ここでは速度を犠牲にして使いやすさ重視のため"可変サイズ"を選択します。
手順6. ファイルの場所とサイズを選択
新しい仮想ハードディスクファイルの名前はデフォルトのままで設定します。
ハードディスクの容量に関しては構築する環境に応じて作成します。
私はディスクに余裕があるので60GBまで設定しております。
恐らくこんなに必要は無いです。
手順7. 仮想マシンの出来上がり
これでCentOS7をインストールする箱の完成です。
次はネットワーク(NAT/ホストオンリーアダプタ)の設定です。
以上、仮想マシンの作成です。