IT未経験のスクール生が学んだことをアウトプットします
初めての投稿です。よろしくお願いします。
SSHとは
離れた場所にあるサーバ(リモートサーバ)の中で作業したい場合に、暗号や認証の技術を利用して、安全にリモートコンピュータと通信するプロトコル
SSHのメリット
・通信を盗聴される危険性を回避して、安全に操作ができる
・サーバ上でのファイル操作、設定ファイルの編集ができる
SSHでログイン
パスワード認証と公開鍵認証の2つの方法でログインできる
SSHを利用するためには、リモートにSSHサーバ、ローカルにSSHクライアントというソフトウェアをインストールする必要があります。しかし、LinuxサーバやMac OSには標準でインストールされているのでインストールする必要はありません。
$ ssh [ ログインユーザー名 ]@[ IPアドレス ]
初めてログインする場合は、本当に接続するのか確認されるのでyesと入力
次にパスワードの入力が求められるので、パスワードを入力すればログインすることができます
Linuxマシン(192.168.2.67)にはじめてsshログインする場合
macmini: ~ user1 $ ssh hinako@192.168.2.67
The authenticity of host '192.168.2.67(192.168.2.67)' can't be established.
RSA key fingerprint is c3 : e3 : 8d :5e ea :58 : 0e :a9 : e5 : 03 : 34 : 56 : b3 : ca : a3 : 60.
Are you sure you want to continue connecting (yes, no)? yes ←yesを入力
Warning : Permanently added '192.168.2.67'(RSA) to the list of known hosts.
hinako@192.168.2.67's passward: ←パスワード入力
Last login: Sat Aug 23 18:34:30 2014 from 192.168.2.67
[hinako@localhost ~]$
秘密鍵と公開鍵
不特定多数の人がサーバに入れるのはセキュリティ上よくありません
秘密鍵と公開鍵という2つのファイルを作成しサーバに入れる人を制限します
公開鍵はサーバへのSSHを始める時に一緒に送ります。秘密鍵はローカル環境内に保存します。
公開鍵によって暗号が生成され、ローカル環境ではサーバから送られてきた暗号を秘密鍵で解読します
このようにして、サーバーとローカル環境間の情報のやりとりが安全に行われます
公開鍵でログイン
手順
1.公開鍵と秘密鍵を生成(ローカル環境)
2.公開鍵をサーバ側に設置(ローカル環境→サーバ)
3.公開鍵認証でログインできるか確認
1.公開鍵と秘密鍵を生成
~ $ cd .ssh # .sshディレクトリへ移動
.ssh $ ssh-keygen -t rsa # 公開鍵と秘密鍵を作成
入力後、以下のように表示され、秘密鍵の保存場所と秘密鍵に設定するパスワードを入力します
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***に保存されています
以下のコマンドを入力して、出力結果に以下の2つが含まれていれば作成成功です
$ ls
=> [鍵の名前]_key_rsa [鍵の名前]_key_rsa.pub
公開鍵と秘密鍵を作成できたか、catコマンドを使って公開鍵の中身を確認します
# 公開鍵の中身を確認
$ cat [公開鍵]_key_rsa.pub
# 秘密鍵の中身を確認
$ cat [秘密鍵]_key_rsa
コマンドを実行すると、複雑な文字列がターミナル上に表示されます。これが、先ほど作成した公開鍵と秘密鍵の中身になります
2.公開鍵をサーバ側に設置
・リモートサーバにローカル環境の公開鍵のファイルをコピー
公開鍵をリモートにサーバにコピーするにはscpコマンドを使います
scpコマンド 送信先のディレクトを指定してファイルを送ることができるコマンド
$ scp ~/.ssh/id_rsa.pub [ユーザー名]@ [IPアドレス]:~/.ssh
※AWSの場合
$ ssh -i [ダウンロードした鍵の名前].pem ec2-user@[作成したEC2インスタンスと紐付けたElastic IP]
・ローカル環境の公開鍵のファイルの中身を、リモートサーバの公開鍵のファイルに追記
今までローカル環境では、公開鍵はid_rsa.pubに保存しましたが、リモートサーバでは公開鍵は ~/.ssh/authorized_keysに保存します。
# リモートサーバにログイン
$ ssh [ユーザー名]@ [IPアドレス]
# .sshディレクトリへ移動
$ cd ~/.ssh
# リモートサーバの公開鍵のファイル(~/.ssh/authorized_keys)を作成
touch .ssh/authorized_keys
# 公開鍵の中身を追記
$ cat ~/id_rsa.pub >> authorized_keys
最後に.sshディレクトリとauthorized_keysファイルの権限を設定します。 .sshディレクトリには読み・書き・実行のすべての権限、authorized_keysファイルには読み・書きの権限を設定します
# .sshディレクトリとauthorized_keysファイルの権限を設定
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
3.公開鍵認証でログインできるか確認
# リモートサーバにログイン
$ ssh [ユーザー名]@ [IPアドレス]
コマンドを打った後、下記のような表示がされます。①公開鍵と秘密鍵を生成の# 秘密鍵に設定するパスワードを入力のところで記述したパスワードを入力します。その後[ユーザー名]@ [IPアドレス]% と表示されていればログイン成功です
Enter passphrase for key '~/.ssh/id_rsa': ←パスワードを入力
[ユーザー名]@ [IPアドレス]% ←SSHサーバにログイン成功