耳で情報を入れよう

図解!SSH接続の手順

SSHの接続方法を解説

フィヨルドブートキャンプに入会していますが、SSH接続をする機会があったので、記録を残します。

SSH接続とはなんだ?

リモートサーバーにローカル(クライアント側)から安全に操作するための機能です。

ローカルと言ったり、クライアントと言ったりしますが同じものだと思って良いです。あとフロントサイドなんて言い方もしますがローカル≠フロントサイドなので注意。

手順と方法

手順は図に表すとこんな感じです。

SSHの設定と接続手順

いろんなサイトに手順は書かれているのですが、初学者が見ると「これはどっちで操作すればいいのか?」とちんぷんかんぷんになるかなと思ってそれぞれ図で列ごとに分けました。

私の環境に依存しているので、クライアントサイドはmacのターミナルとして、サーバーサイドはさくらのVPSを使用しています。

手順としては、

  1. sshインストール
  2. 設定ファイルコピー
  3. ポートやパーミッションの変更
  4. 設定にそのファイルの再起動
  5. キーペア作成
  6. キーペア登録
  7. .bashrcに記載
  8. 作成した鍵のコピーとリモートサーバーに登録
  9. リモートログイン
  10. chmodで鍵のパーミッション変更
  11. exit リモートログイン抜ける

こんな感じです。

サーバーで設定する

サーバーサイドで設定するのは①〜④となります。なので、⑧’は自分が.sshのディレクトリを用意してなければ適宜作る必要があります。

①sshをインストール

$ sudo apt install ssh
$ sudo apt update

インストールしましょう。そして今インストールしたの大丈夫ですが、念の為適宜アップデートをしておきます。

②設定ファイルsshd_configのコピー

sshd_configの内容を今から編集しますが、内容を変更して上書き保存:wqをした後に色々削除orミスが生じたら危ない。ということでバックアップとしてコピーをとっておきます。

$ cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org

③ポートやパーミッションの編集

sshd_configの内容を今から編集しますが、内容を変更して上書き保存:wqをした後に色々削除orミスが生じたら危ない。ということでバックアップとしてコピーをとっておきます。

$ vi /etc/ssh/sshd_config
# Port 何かしら番号
# PermmitRootLogin no
# PasswordAuthentication no

ポートは任意のウェルノウン以外の番号で設定します。
ルートでログインできないように設定も行います。
そしてパスワード認証は初回のみでOKという記述をしています。

※接続ができなかったらひとまずポートは22のままで、
接続できた後にポート変更して、③④⑨を順に試す。

④設定完了したらリスタートを行う

先程のsshd_configファイルの変更ができたら次のコマンドでファイルの再起動をかけます。

$ sudo /etc/init.d/ssh restart

私はviのコマンドで:wqがうまく効かなかったので、強制的に保存終了するコマンドを使いました。

ここまでがサーバーサイドでの設定手順です。

クライアント(ローカル)サイドの設定

ここからはmac側のターミナルの作業となります。

⑤キーペアの作成

SSHには公開鍵と秘密鍵を用いるのですが、秘密鍵は作って登録して終わり。公開鍵は作ったらリモートのサーバーに受け渡す作業があります。鍵の仕組みはややこしいけれど、同一の鍵をクライアントとサーバーそれぞれに持っている状態!というよりは、

初期ではお互い違うものを送受信したけれど、お互いに共通するとある暗号式をそれにかけて、最終的に共通の鍵を持つようにしているイメージです。(あ、これSSLの話か)

とりあえず作業に進みます。

$ cd ~/.ssh
$ ssh-keygen -f client_rsa -t rsa -b 2048

まず初めに.sshのディレクトリに移動します。

.sshのディレクトリに入ったらまずssh-keygenでキーペアを作成します。

それぞれのオプションの意味はこうです。↓

-fキーの名前を設定します。今回はclient_rsaという名前ですね。
-tキーの種類です。今回はrsa
-bキーの、つまりは暗号鍵の強度をつけます。
ssh-keygenコマンドオプション内容

ちゃんと作れてるか不安な方はこの後にlsコマンド実施で名前通りキーがあるかみてみましょう。

あれ?ないぞ!って方はls -aで確認してそれでもないならもう一度。

⑥キーペアの登録

鍵を登録しておきましょう〜

$ sudo eval `ssh-agent`
$ ssh-add -K ~/.ssh/client-rsa 鍵の登録
$ ssh-add -l 登録確認

⑦.bashrcに記載

鍵を登録しておきましょう〜

$ vi ~/.bashrc
この1行を記載↓
`ssh-agent`&&ssh-add ~/.ssh/client-rsa
:wqで保存終了しましょう

$ source ~/.bashrc これで再読み込み

設定ファイルは必ず変更後は再読み込みが必要となる。再読み込みや設定ファイルの再起動を忘れていたら、反映されないままコマンドが実行される。

⑧鍵をコピーしてリモートサーバーに登録

作成した鍵をリモートサーバーにコピーして飛ばしてあげましょう。ただ、この時にサーバー側で.sshのディレクトリを作成していなければ作成しておきましょう。

また、飛ばしたけれどどのディレクトリ直下にあるかわからんという場合や、.ssh直下にAuthorized_keysがない場合は適宜移動してあげましょう。

$ scp -i ~/.ssh/client_rsa.pub ユーザー名@IPアドレス:Authorized_keys

指定するアドレスについては、

  • ユーザー名@IPアドレス
  • ユーザー名@サーバーアドレス

このどちらかで指定してあげます。そしてAuthorized_keysというのは公開鍵。

サーバーアドレスはたとえばos3~…で始まり、ne.jpまで入ります。これはさくらVPSの場合です。

⑨リモートログイン

$ ssh -p ポート番号 ~/.ssh/client_rsa ユーザー名@IPアドレス

そしてローカルからログインします。うまくいけばターミナルで先頭の文字が接続したサーバーのアドレスになっており、$から#に変わっていると思います。

また、ポート番号を22番のままの場合は-p ポート番号は不要です。

ポート番号を変更しているなら上記のような記述で接続できます。

後はここからポート番号やパーミッションを変更して再度接続したいという場合には③④⑨を繰り返し行い、トライアンドエラーです。

⑩chmodでパーミッション

Authorized_keysのパーミッションを変更しておきます。誰でも読み書き実行できる状態であると困るので

# chmod 600 Authorized_keys

お気づきとは思いますが、#になってるのでローカルからサーバーへの接続している状態で、ローカルからコマンドを実行しています。

ここまでがssh接続の手順と流れです^^

まとめ

今回自分でssh接続を行ったのですが、結構詰まる詰まる・・・笑

まだ書きたいことはあるのですが、ひとまずあとで見返せるように整理しました。

そして参考にしたサイトのリンクは以下に貼っておきます。これらをまとめたのが今回の記事です。

参考リンク

https://qiita.com/kazokmr/items/754169cfa996b24fcbf5

https://wa3.i-3-i.info/word12904.html

あとchmodについて知りたいなら↓

https://qiita.com/ntkgcj/items/6450e25c5564ccaa1b95

コメントを残す

メールアドレスが公開されることはありません。