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接続の設定でした。