公開鍵を使ってSSHでリモートサーバに接続する
ローカルPCからリモートサーバへSSH接続する必要があったので手順をまとめます。
(SSHや公開鍵などがよくわからない人は調べてください...)
フィヨルドブートキャンプの課題にもあった内容で、私は2020年3月にやってました。自分の日報にも助けられた。しかし課題やってても知らないことだらけだなー。
環境
手順
1. 【サーバ】.sshフォルダを作成しパーミッションを設定する
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
2. 【ローカル】RSA鍵を作成
ターミナルで実行。.sshフォルダへ移動(なければ作る)して、
$ cd ~/.ssh
ssh-keygenコマンドで公開鍵と秘密鍵を作成する。-tオプションで鍵の暗号化形式を指定する。
$ ssh-keygen -t rsa -f id_rsa_sakura_vps
-fオプションでファイル名を指定しなければid_rsaという名前になる。おそらくあとで変更したくなるのでid_rsa_sakura_vpsという名前にした。
パスフレーズを入力するとid_rsa_sakura_vps(秘密鍵)とid_rsa_sakura_vps.pub(公開鍵)が作成される。
3. 【ローカル】作成した公開鍵をサーバに送る
scpはファイルコピーのコマンド。直接サーバでコピペしてもOK。
$scp ~/.ssh/id_rsa_sakura_vps.pub サーバのユーザ名@サーバのアドレス:~/.ssh/authorized_keys
Warningが出たけどAre you sure you want to continue connecting (yes/no/[fingerprint])? にyesと入力してサーバのパスワードを入力したらできた。
サーバ側でauthorized_keysファイルができていることを確認。
4. 【サーバ】受け取った公開鍵のパーミッションを設定
$ chmod 600 ~/.ssh/authorized_keys
5. 【サーバ】sshd_configを変更
設定ファイルを開いて編集する。
$ sudo vi /etc/ssh/sshd_config
<変更内容>
- PermitRootLogin noを設定
- PasswordAuthentication noを設定
- Port 22を変更(ウェルノウンポートは避ける)
これはセキュリティ対策のため、
- rootでのログイン禁止
- パスワード認証ログインを禁止
- 22番ポートでログインできないようにする
という設定をしている。
変更後$ sudo /etc/init.d/ssh restart
を実行して反映させる。
6. 【ローカル】サーバにログイン
これでログインできるはず!
$ ssh サーバのユーザ名@サーバのアドレス -i ~/.ssh/id_rsa_sakura_vps -p ポート番号
毎回このコマンドを打つのは面倒なので、設定ファイル~/.ssh/configを書き換えてみよう。
Host sakura HostName xxx.xxx.xxx.xxx Port xxxxx User ユーザ名 IdentityFile ~/.ssh/id_rsa_sakura_vp
これで$ ssh sakura
でログインできるようになる。スッキリ!!