SSH 自分にとって大事なとこ
前にもSSHについて何か書いたような気もするけど今の自分にとって何が大事、どこがポイントなのか整理しとく。
何故使うか
割りと安全にリモートサーバーを動かせる。
ファイルの操作や編集とかこれでできる。
リモートにSSHサーバがインストールされてる必要がある(LinuxOSなら入ってる)
ローカルにSSHクライアントがインストールされてる必要がある(MacOSなら入ってる)
要は普通に使えて安全なssh通信でリモートの設定しようねって話。
どうやって使うか
ターミナルからサーバーにログインして、ターミナルから遠隔操作するわけなんだけれども、どうやってsshログインするかについては2通り方法があり、2つ目が推奨される。
1パスワード認証でログインする
IPアドレスは前にまとめたから大丈夫だと思う。
192.168.***.***的なやつだったからプライベートIPだろう。リモートのIPでいいと思う。
ちょっとこのあたりは後で確定してから修正しよう。
初めてログインする時は本当に接続するか聞かれるのでyesと入力する
するとパスワードを求められるので入力する
これでリモートサーバにsshログイン出来た。
特徴
デフォルの認証方法なので、明示的に無効にしない限りはこれで入れる。
ユーザー名とパスワードは接続先OSのユーザーアカウントの情報が使われる。
セキュリティ的に脆弱なので無効にしてることも多い。
参考記事
https://qiita.com/tag1216/items/5d06bad7468f731f590e
2公開鍵でログインする
抑えておくべきとこ
公開鍵と秘密鍵の理解は別の話になりそうだから一旦置いといて
パスワード認証は危ないので普通こっちにする。
公開鍵はサーバーへのSSH通信を始める時に一緒に送る。
秘密鍵は、ローカル環境内に保存しておく(絶対。gitとかにあげんなよ)
実際のログイン手順
①公開鍵と秘密鍵を生成(ローカル環境側)
②公開鍵をサーバ側に設置(ローカル環境側→サーバ側)
③公開鍵認証でログイン
詳しくみていく
①公開鍵と秘密鍵を生成
2 ssh-keygen -t rsa で公開鍵と秘密鍵を作成
3 上のコマンドを実行すると
(上のは抜粋)、という画面になるので
ローカル環境の公開鍵と秘密鍵の保存場所はデフォルトで決まっていて。
に保存される
catコマンドで中も覗けるけど見ても意味はわからん。
②公開鍵をサーバ側に設置
1リモートサーバにローカル環境の公開鍵のファイル(id_rsa.pub)をコピーする
scpコマンドを使う。
scpコマンドは、送信先のディクトリを指定してファイルを送ることができるコマンド。このあたりちょこちょこ抜粋使いながら注釈入れてく
※ただし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ファイルの権限を設定する。
authorized_keysファイルには読み・書きの権限を設定
もちろん所有者だけね
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
③公開鍵認証でログインできるか確認
秘密鍵が~/.ssh/id_rsaに保存されていればリモートサーバにログインする時に自動的に鍵をしようした接続を行うようになってる。
1リモートサーバにログインする
パスワード入力求められるので秘密鍵に設定してたやつを入力する
2ログインを確認
ログイン出来たら
[ユーザー名]@[IPアドレス]%
となってるはず
おしまい。ざっくりまとめても長かったけどこの辺りしっかりわかってないと自分が何やってるかわかんなくなるのでちゃんと理解しとく。