いーほろよいの技術ブログ

IT技術ブログになります。

sshの設定で楽々接続

今回はssh設定まわりを書いていこうと思います。

ここに関してはMacLinuxの各ディストリビューションをお使いの方が対象になります。

もし、Windowsをご利用の方でしたら、PuttyやRLogin、Tera Termといったフリーのターミナルソフトを利用して作成する事ができます。

この記事では割愛させていただきます。(気が向いたら書きます。)

 

前回のリポジトリの追加が気になる方はこちらからどうぞ。

e-horoyoi.hatenablog.com

 

はじめに

まず、sshですが主流はssh2だと認識しております。(間違っていたらごめんなさい)

細かい説明を書き出すと面倒なのでググってください。

とりあえず、ssh2で話は進めます。

こちらにOpenSSHのサイトがあるので確認できます。(英語)

www.openssh.com

 

そもそもSSH接続って?

簡単に説明するとマシン同士を鍵を使用して安全(認証して)に接続する仕組みです。

鍵は秘密鍵(接続元)公開鍵(接続先)が存在し接続元と接続先に設置します。

この秘密鍵と公開鍵がペアになっているので、鍵が一致しないと接続できないため公開鍵だけ盗まれても秘密鍵がなければ接続できません。

逆に秘密鍵を紛失すると入れなくなります。

 

鍵の種類

ざっくりですが、鍵の種類は下記がございます。

暗号化の仕組みとか堅牢性が変わってくるので興味のある方は調べてみてください。

dsa / ecdsa / ed25519 / rsa  / rsa1

※rsa1以外はssh2対応だったはず。(記憶が曖昧で申し訳ない)

 

鍵を作成する上で注意点

オプション'b'でビット数を指定できます。値が大きいほど堅牢性が高まります。

rsaならデフォルトは2048ビット、最小で1024です。

 

事前準備

鍵を作成する前に鍵の保存場所を作成しておきます。

作成するディレクト

ホームディレクトリ以下に.sshという隠しディレクトリを作成します。

先ずはディレクトリが既に存在するか確認します。

もし、ディレクトリが存在する場合は既に鍵があるので上書きされないように退避しておくなど対応が必要です。

ls -la ~

 保存先のディレクリ作成

パーミッションも指定して作成します。

>mkdir -m 0700 ~/.ssh

 

作ってみる

冒頭の説明にもありましたが、私の環境がMacなのでターミナルを立ち上げてコマンドを打てば鍵を作成できる状態です。

今回は下記の条件で鍵を作成します。

  1. パスフレーズなし
  2. 鍵のタイプはrsa
  3. ビット数は4096 

 

秘密鍵・公開鍵作成

>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のインストール

>brew install ssh-copy-id 

 

公開鍵を接続先へコピー

ssh-copy-idを使用します。

オプション-iを指定してコピーすると自動的に追記してくれます。

>ssh-copy-id -i .ssh/{渡したい公開鍵.pub} {UserName}@xxx.xxx.xxx.xxx

接続先に下記のようなファイルが作成されます。

.ssh/authorized_keys

 

パスフレーズ接続からssh接続へ

漸く本題のssh接続に入ります。

ざっくり流れだけ先に説明します。

  1. リモート先にパスフレーズで接続
  2. sshの設定ファイルを書き換えて
  3. sshを再起動
  4. 一旦リモートから抜けてssh接続できるか確認 

 

設定ファイルの書き換え

下記がsshの設定ファイルになっております。

/etc/ssh/sshd_config

 

設定ファイルを編集

作業にはroot権限が必要です。

>vi /etc/ssh/sshd_config

 

rootでのログインを禁止

PermitRootLogin no

 

パスワードによる認証を禁止

PasswordAuthentication no

 

パスワード無し(空パスワード)を許可※

※プライベートな開発環境なので許可しています。

PermitEmptyPasswords yes

 

その他

ssh接続に時間が掛かる場合、DNSとかが怪しいです。

プライベートな開発環境なので切ってしまいます。

GSSAPIAuthentication no

UseDNS no

  

再起動

>systemctl restart sshd

 

再接続

リモートからログアウトして再びssh接続する。

その際にパスワードを聞かれず接続できれば設定完了です。

 

ここまでの設定で仮想マシンのマスタを完成とします。

あとは、用途に合わせて仮想マシンのクローンを作成して作業していきます。

 

次回予告

Rubyの複数バージョンを切り替えて使用するrbenvの環境構築を取り上げたいと思います。

 

最後までお読みいただきありがとうございます。

 

以上、ssh接続の設定でした。

 

 

リポジトリの追加

今回はリポジトリ(パッケージの取得先)を追加してみます。

 yumコマンドによるCentOS7のアップデートはこちら 

e-horoyoi.hatenablog.com

 

はじめに

追加するリポジトリは下記の通りです。

・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アドレスの設定はこちらになります。

e-horoyoi.hatenablog.com

 

手順1. アップデートの前にやる事

今までの手順では外部に接続できません。

下記の設定ファイルを編集して外部接続できるようにしましょう。

/etc/sysconfig/network-scripts/ifcfg-enp0s3

※NATの設定ファイル

 変更前:ONBOOT=no

変更後:ONBOOT=yes

 

ネットワークの再起動です。

>systemctl restart network

 

これをやらないとこうなります。

f:id:e-horoyoi:20170621142917p:plain

 

手順2. CentOS7のアップデート

アップデート前にアップデートがある事を確認します。

>yum check-update

f:id:e-horoyoi:20170621143235p:plain

 

アップデートします。(暫く時間が掛かります。)

※毎回アップデートが必要か聞かれるのが面倒なので"-y"オプションを付加します。

>yum update -y

 

↓こんな感じでアップデートが進行します。

f:id:e-horoyoi:20170621143625p:plain

 

おまけ

下記のパッケージは使用頻度が高いので予めインストールしておくと後ほど便利になります。

>yum install git gcc bzip2 openssl-devel readline-devel zlib-devel -y

 

次回予告

yumでインストールするrpmパッケージの取得先を追加する。

 

以上、CentOS7のアップデートでした。

 

デバイスとIPアドレスの紐付け

NAT、ホストオンリーアダプターの設定後にCentOS7をインストールしたらIPアドレスの設定をします。

 

 NAT、ホストオンリーアダプターの設定はこちらを参照ください。

e-horoyoi.hatenablog.com

 

 

手順1. デバイスの確認をする

下線のMACアドレスでホストオンリーアダプターであるか確認する。

>ip a

f:id:e-horoyoi:20170621003102p:plain

 

手順2. IPアドレスの編集画面を開く

"NetworkManager TUI"を開き編集していきます。

>nmtui

f:id:e-horoyoi:20170621080352p:plain

 

手順3. Ethernetの選択

"ip a"で確認したMACアドレスから編集するEthernetを選択する。

f:id:e-horoyoi:20170621081513p:plain

 

手順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"を選択して設定する。

f:id:e-horoyoi:20170621081002p:plain

f:id:e-horoyoi:20170621082300p:plain

 

手順5. 設定確認

ネットワークの再起動を行います。

>systemctl restart network

 

設定されたか確認します。

※青色帯の箇所に設定したIPアドレスが表示されれば設定されております。

 >ip a

 

f:id:e-horoyoi:20170621082834p:plain

 

手順6. 接続確認

ターミナルからsshコマンドで接続できるか確認します。

>ssh {user name}@xxx.xxx.xxx.xxx

 

これで接続できれは設定完了です。

 

次回予告

外部接続してyumコマンドで色々更新してみたいと思います。

 

以上、IPアドレスの設定になります。

 

CentOS7をインストール

VirtualBoxで箱を作成したので、CentOS7をインストールしたいと思います。

↓に手順あります。

e-horoyoi.hatenablog.com

 

手順1. 作成したCentOS7_Masterを起動

初回起動時にイメージ選択します。

先ほどミラーサイトでDLしたCentOS-7-x86_64-DVD-1611.isoを選択します。

f:id:e-horoyoi:20170619092932p:plain

 

手順2. インストールメニューの選択

インストールまたはメディアのテスト&インストールといった選択肢があります。

テストが面倒なので、そのままインストールします。

f:id:e-horoyoi:20170619093210p:plain

 

手順3. 言語の選択

日本語を選択します。

f:id:e-horoyoi:20170619093535p:plain

 

手順4. インストールの概要について

下記のイメージにはありませんが、最初にインストールソースとインストール先がオレンジ色で警告のようなものが出ることがあります。(その時は対象を探しているようです。)

インストールソースは放置していても勝手に見つけてくれましたが、インストール先は一度選択してディスクにチェックが入っている事を確認してから"完了"を押下後、この画面に戻ると直ります。

これらが解決するとインストールの開始が押下できるようになります。

f:id:e-horoyoi:20170619093629p:plain

 

手順5. rootパスワードとユーザー作成

インストールが始まるとrootのパスワードとユーザーの作成が同時進行で出来ます。(便利になってる...)

f:id:e-horoyoi:20170619094200p:plain

 

手順6. rootパスワードを入力

推測され難いパスワードを設定します。(入力時に強度が表示される)

私は外部に公開しないので特に注意しません。

その場合、確認の為に完了を2回押下するように要求されます。

f:id:e-horoyoi:20170619094527p:plain

 

手順7. ユーザーの作成

root以外のユーザーを作成できます。
フルネーム入力時にユーザー名も自動入力されますが、ユーザー名は別名に編集する事も可能です。
こちらもパスワードが貧弱だと完了を2回要求されます。

f:id:e-horoyoi:20170619094839p:plain

 

手順8. インストール中

私のマシンはスペック高めなので数分で終わります。

スペックによって多少時間が変わるかと思います。

f:id:e-horoyoi:20170619095025p:plain

 

手順9. インストール完了

これでCentOS7がインストール完了です。

再起動を押下すると起動後にログイン画面になります。

f:id:e-horoyoi:20170619095210p:plain

 

手順10. ログイン画面

再起動後、下記の画面になったら作成したユーザー名とパスワードでログインできる事を確認します。

f:id:e-horoyoi:20170619095516p:plain

 

まとめ

これでCentOS7のインストールは終了です。

特質して難しい事はなかったと思います。

 

次回予告

VirtualBoxの設定に戻ってネットワーク周り(NAT/ホストオンリーアダプター)を編集したいと思います。

 

以上、CentOS7のインストールでした。

 

NAT、ホストオンリーアダプタの設定

表題通りの設定をしたいと思います。

 

CentOS7のインストールについてはこちら参照ください。

 

e-horoyoi.hatenablog.com

 

 

手順1. ホストオンリーネットワークを追加

VirtualBoxを起動する

VirtualBox > 環境設定 > ネットワークの順に選択する

ホストオンリーネットワークを選択する

  • "1"で追加
  • "2"で編集

f:id:e-horoyoi:20170619224509p:plain

 

手順2. NAT、ホストオンリーアダプタの確認

作成した仮想マシンの箱を選択して歯車マークの設定を選択すると下記のようなメニューが表示される。

アダプター1にNATが指定されている事を確認する。

f:id:e-horoyoi:20170619224628p:plain

 

アダプター2にホストオンリーアダプターを追加する。

f:id:e-horoyoi:20170619225034p:plain

 

手順3. ホストオンリーアダプターとホストオンリーネットワークを紐付け

手順1で作成したホストオンリーネットワークを割り当てしたアダプター2で選択する。

f:id:e-horoyoi:20170619225247p:plain

 

こちらを設定しておくとターミナルからssh接続できるなど便利です。

 

次回予告

nmtuiによる"IPアドレスの設定"になります。

 

以上、NATおよびホストオンリーアダプターの設定についてでした。

開発環境構築の備忘録

CentOS7の開発環境がほしいのでVirtualBoxを用いて構築した手順です。

ホストはMacです。

 

先ずはVirtualBoxをDL

Oracle VM VirtualBoxからDLできます。

注1. こちらのインストールについては省略します。

注2. この手順は2017/06/19時点で手に入る最新のVirtualBoxで作業のため、今後も同じ画面構成とは限りません。

CentOS7をDL

下記にミラーサイトの一覧があるのでお好みで利用します。

https://www.centos.org/download/mirrors/

※今時点で最新のCentOS-7-x86_64-DVD-1611.isoを選択しております。

 

CentOS7をインストールする仮想マシン(箱)を作成

手順1. 先ずは仮想マシン名を命名(今回はCentOS7_Master)

f:id:e-horoyoi:20170619083424p:plain

注1. 状況に合わせ、この仮想マシンを複製する可能性があるのでMasterと分かり易く命名しておきます。

注2. 今後はこのマシンに必要最低限の設定しかしません。

 

手順2. メモリサイズの選択

ご自身の環境やお好みで構いません。

f:id:e-horoyoi:20170619084054p:plain

 

手順3. ハードディスクを選択

インストール先の仮想ハードディスクを選択します。

今回は新たに環境構築するので"仮想ハードディスクを作成する"を選択しております。

f:id:e-horoyoi:20170619084255p:plain

 

手順4. ハードディスクのタイプを選択

他の仮想ソフトウェアも視野にいれるなら状況にあったタイプを選択してください。

私はVirtualBox一択なのでVDIを選択します。

f:id:e-horoyoi:20170619084540p:plain

 

手順5. 物理ハードディスクにあるストレージを選択

固定サイズだと高速だという事なのですが、パフォーマンスよりも開発環境の構築が目的です。

パフォーマンスを求める場合は検証環境(ステージング)を本番と同じ条件で構築して確認するので、ここでは速度を犠牲にして使いやすさ重視のため"可変サイズ"を選択します。

f:id:e-horoyoi:20170619085257p:plain

 

手順6. ファイルの場所とサイズを選択

新しい仮想ハードディスクファイルの名前はデフォルトのままで設定します。

ハードディスクの容量に関しては構築する環境に応じて作成します。

私はディスクに余裕があるので60GBまで設定しております。

恐らくこんなに必要は無いです。

f:id:e-horoyoi:20170619085800p:plain

 

手順7. 仮想マシンの出来上がり

これでCentOS7をインストールする箱の完成です。

f:id:e-horoyoi:20170619090415p:plain

 

次はネットワーク(NAT/ホストオンリーアダプタ)の設定です。

 

以上、仮想マシンの作成です。