Tech Hotoke Blog

IT観音とは私のことです。

【Linux】さくらVPSにインストールしたサーバーにクライアント側からSSH接続でログインする

f:id:TechHotoke:20220309222010p:plain

目的

表題の作業の手順や注意すべきポイント、 自分のエラーの記録などを残すこと。

環境

ローカル:Mac BigSir 11.4 M1 シェル:zsh リモート:Debian11 64amd シェル:bash

前提

  • リモートサーバーにsshがインストールされていること
  • 一般ユーザーが作成されていること

作業

管理用ユーザーの作成

usermod -G wheel <既存の一般ユーザー>

usermodコマンドはユーザーのホームディレクトリやグループ、パスワードなどを変更するためのコマンドです。

f:id:TechHotoke:20220309225724p:plain

どうやらwheelグループが存在しないようで、代わりにsudoが存在しています。Debianにはwheelがデフォルトで存在しないため作成する必要があるそうです。

f:id:TechHotoke:20220309225633p:plain

  • 参考:

https://atmarkit.itmedia.co.jp/ait/articles/1612/14/news022.html

http://hnakamur.blogspot.com/2008/12/debianwheel.html

  • とりあえずまずは一般ユーザーがsudoを使えれば良いので、usermod -G sudo <ユーザー名>でいきます

  • 一般ユーザーにログインし直して、適当なファイルを作成し、sudo chmod 777 hogehoge的なコマンドを叩いてsudoが使えることを確認します

SSHの設定を書き換え~接続試行

  • /etc/ssh/sshd_configファイルを開きます

  • PermitRootLogin no:rootユーザーでのログインを禁止

  • Port <任意のポート番号>:ポートをデフォルトから変更(ウェルノウンポートと被らないように注意)

  • PubkeyAuthentication yesSSHプロトコル ver.2 で公開鍵認証を許可する

  • ファイルを保存した後、sudo systemctl restart sshで設定の変更を反映

SSHキーの生成から転送

  • サーバー側に~/.sshディレクトリを作成し、sudo chmod 755 ~/.sshでパーミションを変更する

  • クライアント側(今回だとローカル環境)に~/.sshディレクトリを作成し、sudo chmod 700 ~/.sshでパーミションを変更する( ここのパーミッションが重要

  • クライアント側の.sshディレクトリ上でssh-keygen -t eded25519コマンドを実行

    • RSAが使われることが多いようですが、ED25519 の方が RSA よりも強度が高く、しかも速いためこちらを使用
  • パスフレーズなどは設定せずに生成し、添付画像のようになっていればOKです f:id:TechHotoke:20220310183805p:plain

  • 続いて、scp -p <設定したポート> id_ed25519.pub <root以外のユーザー名>@49.212.179.153:~/.ssh/コマンドで生成した公開鍵(.pubの方)をリモートサーバーに転送します。

  • リモートサーバーの~/.ssh/ディレクトリ配下に公開鍵がコピーされていればOKです

  • サーバに転送した公開鍵のパーミションをsudo chmod 600 <鍵名>に変更( OpenSSHでは~/.ssh/内のファイルがモード600[ユーザーのみ読み書き可能]でないと使用できないため

  • ssh -i ~/.ssh/id_ed25519 -p <設定したポート> <root以外のユーザー名>@<ホスト>で接続試行し、ログインできればOKです

パスワードなしで接続を可能にする

  • /etc/ssh/sshd_configファイルを開きます
  • PasswordAuthenticationnoにします
  • sudo systemctl restart sshを実行します
  • クライアント側でssh -i ~/.ssh/id_ed25519 -p <設定したポート> <root以外のユーザー名>@<ホスト>で接続試行すると。。。

  • Permission denied (publickey).と突然怒られました。。。Damn...

Permission denied (publickey)の解消

  • ~/.ssh直下にtouchコマンドでauthorized_keys(接続を許可する公開鍵を登録しておくサーバー側のファイル)を作成
  • sudo chmod 600 authorized_keysコマンドでパーミションの変更
  • /etc/ssh/sshd_configファイルを開きます
  • AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2コメントアウトを外します
  • sudo systemctl restart sshを実行します
  • 再度、クライアント側で接続確認し、正常に行われることを確認できればOKです

補足

  • デバッグssh -vT <ユーザー名>@<ホスト>で(-v:ログ出力、-T:疎通確認)

今回はここまでとなります!

お付き合い頂きありがとございます!

参考