Hit the books!!

プログラミング学習記録

公開鍵を使ってSSHでリモートサーバに接続する

ローカルPCからリモートサーバへSSH接続する必要があったので手順をまとめます。

(SSHや公開鍵などがよくわからない人は調べてください...)

フィヨルドブートキャンプの課題にもあった内容で、私は2020年3月にやってました。自分の日報にも助けられた。しかし課題やってても知らないことだらけだなー。

環境

  • さくらVPSを契約中
  • サーバ: Debian11
  • クライアント: macOS Monterey

手順

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でログインできるようになる。スッキリ!!

参考