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

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