SSH 自分にとって大事なとこ

前にもSSHについて何か書いたような気もするけど今の自分にとって何が大事、どこがポイントなのか整理しとく。

 

何故使うか

割りと安全にリモートサーバーを動かせる。

ファイルの操作や編集とかこれでできる。

リモートにSSHサーバがインストールされてる必要がある(LinuxOSなら入ってる)

ローカルにSSHクライアントがインストールされてる必要がある(MacOSなら入ってる)

要は普通に使えて安全なssh通信でリモートの設定しようねって話。

 

どうやって使うか

ターミナルからサーバーにログインして、ターミナルから遠隔操作するわけなんだけれども、どうやってsshログインするかについては2通り方法があり、2つ目が推奨される。

1パスワード認証でログインする

IPアドレスを指定してSSHコマンドを打つだけ。

ssh [ログインユーザー名]@[IPアドレス]

IPアドレスは前にまとめたから大丈夫だと思う。

192.168.***.***的なやつだったからプライベートIPだろう。リモートのIPでいいと思う。

ちょっとこのあたりは後で確定してから修正しよう。

初めてログインする時は本当に接続するか聞かれるのでyesと入力する

するとパスワードを求められるので入力する

これでリモートサーバにsshログイン出来た。

特徴

デフォルの認証方法なので、明示的に無効にしない限りはこれで入れる。

ユーザー名とパスワードは接続先OSのユーザーアカウントの情報が使われる。

セキュリティ的に脆弱なので無効にしてることも多い。

参考記事

https://qiita.com/tag1216/items/5d06bad7468f731f590e

 

2公開鍵でログインする

抑えておくべきとこ

公開鍵と秘密鍵の理解は別の話になりそうだから一旦置いといて

パスワード認証は危ないので普通こっちにする。

公開鍵はサーバーへのSSH通信を始める時に一緒に送る。

秘密鍵は、ローカル環境内に保存しておく(絶対。gitとかにあげんなよ)

 

実際のログイン手順

①公開鍵と秘密鍵を生成(ローカル環境側)

②公開鍵をサーバ側に設置(ローカル環境側→サーバ側)

③公開鍵認証でログイン

 

詳しくみていく

①公開鍵と秘密鍵を生成

1  cd .ssh  で.sshディレクトリに移動

ssh-keygen  -t rsa  で公開鍵と秘密鍵を作成

3 上のコマンドを実行すると 

# 秘密鍵を保存するときの名前は、デフォルト(id_rsa)のままで良いので何もせずにenterキーを押します。
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/hogehoge/.ssh/id_rsa): [秘密鍵の置き場所] 

# 秘密鍵に設定するパスワードを入力(忘れないよう覚えておきましょう)
Enter passphrase (empty for no passphrase): [パスワード]
Enter same passphrase again: [パスワード]

 (上のは抜粋)、という画面になるので

秘密鍵の保存場所と秘密鍵に設定するパスワードを設定する

 

ローカル環境の公開鍵と秘密鍵の保存場所はデフォルトで決まっていて。

公開鍵は~/.ssh/id_rsa.pub

秘密鍵は~/.ssh/id_rsa

に保存される

.sshディレクトリ内でlsしてファイルがあるか確認する。

catコマンドで中も覗けるけど見ても意味はわからん。

 

②公開鍵をサーバ側に設置

1リモートサーバにローカル環境の公開鍵のファイル(id_rsa.pub)をコピーする

scpコマンドを使う。

scpコマンドは、送信先のディクトリを指定してファイルを送ることができるコマンド。このあたりちょこちょこ抜粋使いながら注釈入れてく

# .sshディレクトリにローカル環境の公開鍵のファイル(id_rsa.pub)をコピー
$ scp ~/.ssh/id_rsa.pub [ユーザー名]@ [IPアドレス]:~/.ssh

 

※ただしAWSではpemを使うのでこのコマンドとは異なる。AWSの記事の方で説明する。

2ローカル環境の公開鍵のファイル(id_rsa.pub)の中身をリモートサーバの公開鍵ファイル(~/.ssh/authorized_keys)に保存。

ここ要暗記。

ローカル環境では公開鍵はid_rsa.pubに保存してた。リモートでは.sshディレクトリ内なのは同じだがauthorized_keysというファイルを作って、そこに公開鍵の中身を追記する。

# リモートサーバにログイン
$ ssh [ユーザー名]@ [IPアドレス]

# .sshディレクトリへ移動
$ cd ~/.ssh  

# リモートサーバの公開鍵のファイル(~/.ssh/authorized_keys)を作成
touch .ssh/authorized_keys

# 公開鍵の中身を追記
$ cat ~/id_rsa.pub >> authorized_keys

 

ちょっとわかりづらいがLinuxでは

>で上書き

>>でファイルへの追記

で、矢印が刺さってる側に書き込まれるみたい。

catで中身みてそれを追記してるって解釈でええんやろう。

https://qiita.com/i35_267/items/a19f065691fdc17ae476

 

最後にauthorized_keysファイルの権限を設定する。

.sshディレクトリには読み・書き・実行の全ての権限

authorized_keysファイルには読み・書きの権限を設定

もちろん所有者だけね

chmod 700 ~/.ssh

chmod 600 ~/.ssh/authorized_keys

 

③公開鍵認証でログインできるか確認

秘密鍵が~/.ssh/id_rsaに保存されていればリモートサーバにログインする時に自動的に鍵をしようした接続を行うようになってる。

1リモートサーバにログインする

ssh [ユーザー名]@[IPアドレス]

パスワード入力求められるので秘密鍵に設定してたやつを入力する

2ログインを確認

ログイン出来たら

[ユーザー名]@[IPアドレス]%

となってるはず

 

おしまい。ざっくりまとめても長かったけどこの辺りしっかりわかってないと自分が何やってるかわかんなくなるのでちゃんと理解しとく。