読者です 読者をやめる 読者になる 読者になる

株も歩けば犬に当たる

ブラックSlerで働くSEが株やPythonや思ったことについて書いています。

Ubuntuからconoha(VPS)にSSH接続してみる

苦労したよ

SSH接続、けっこう詰まったので自分なりにまとめておきます。

あと、conohaのサイトは案外サラッとしか書いていないので、自分なりにではありますが設定を行う理由なんかも書いて詳しめの記事にしています。

間違っていたらすみません。笑

SSH接続をする理由

conohaはサイト上からコンソールを開けるので、とても便利です。

しかし、いちいちconohaのサイトに行ってコンソールを開いて...ってやるのは面倒なので、自分のPC(クライアント)からconohaのVPSをリモート操作しましょう。

っていう導入的な部分は他のサイトにたくさん書いてあるので、さっさと本題に行きます。

まずはパスワード認証でSSH接続

SSH接続には2つの接続方法があります。

  • パスワード認証方式
  • 公開鍵認証方式

パスワード認証方式は、セキュリティの面から推奨されていません。(後に後述)

まずはパスワード認証によるSSH接続を行い、後でパスワード認証から公開鍵認証に変更します。


まずはrootでVPSにログインします。

そして、sshd_configを設定を変更します。

sshd_configにssh接続に関する設定が記述してあります。

ここで2つの設定を変更します。

vi /etc/ssh/sshd_config
  • PasswordAuthentication no → yes
  • ChallengeResponseAuthentication no → yes

この2つをnoからyesに変更します。

私の乏しい知識でこの2つの設定の意味を説明すると、パスワード認証を許可するか否かです。

PasswordAuthenticationはパスワード認証の許可、ChallengeResponseAuthenticationはパスワードを送った際にログイン成功か失敗かを示すためのものです。

基本的にサーバーは、ブルートフォースアタック(何通りものパスワードを送りつけてログインを試みる力技攻撃)を避けるためにパスワード認証は許可しません。

そのため、これら2つはデフォルトでnoになっています。

SSH接続を行うために一時的にyesにするだけなので、後でnoに変更します。

2つともnoに変更したら。

service sshd restart

sshd_configの変更を反映。


これでクライアントPCからSSH接続を試みると成功するはずです。

ssh root@157.7*******

公開鍵方式でSSH接続

VPS側のホームディレクトリにいきます。

#cdでホームディレクトリに移動
cd

このホームディレクトリに公開鍵を入れるフォルダを作ります。

たしかubuntuにはデフォルトでなかったで、私は自分で作ったのですが、すでにあれば作る必要はありません。

#公開鍵をいれるフォルダがあるかを確認
#オプション-aで隠しファイルも表示される
ls -a

そこに.sshというフォルダがなければ。

mkdir .ssh

次に、この.sshフォルダに書き込み、読み込み、実行の権限を与えます。

chmod 700 /root/.ssh/

ここで先ほどいじったsshd_configをもう一度いじり直しにいきます。

vi /etc/ssh/sshd_config

設定を変更するのは公開鍵認証を許可するためです。

#RSA鍵を許可
RSAAuthentication yes

#公開鍵認証を許可
PubkeyAuthentication yes

#公開鍵の場所をここで明示
AuthorizedKeysFile      .ssh/authorized_keys


以上の作業が終わったら、ここからクライアントPCに戻ります。

#クライアントPCの.sshフォルダに移ります
ls -a
cd .ssh

ここで秘密鍵と公開鍵を生成します。

ssh-keygen -t rsa -b 2048

ssh-keygenはSSHで利用する認証用の鍵を生成・管理・変換するコマンドです。

鍵のタイプはRSA、2048bitの鍵を生成します。

生成時にパスフレーズを要求されますが、全てデフォルトでかまわないので、全部Enterで問題ないと思います。

生成されるid_rsa秘密鍵、これは絶対にばらしちゃいけないので大切にPCに保管しておきます。

id_rsa.pubは公開鍵で、こちらをVPS側にアップロードします。

そして、公開鍵に読み書きの権限を付与します。

chmod 600 ~/.ssh/id_rsa.pub

そして、VPS側に送ります。

scp id_rsa.pub root@157.7*******:/root/.ssh/authorized_keys

scpはリモートとクライアント間でファイルをコピーするためのコマンドです。

今回はid_rsa.pubをauthorized_keysという名前に変えてVPSにコピーしています。

authorized_keysというファイル名は伝統のようです。


これで公開鍵認証方式でのSSH接続が可能になるはずです。

ssh root@157.7*******

パスワードなしで接続されれば、成功です。

逆にパスワードを要求されれば、失敗です。

root以外でのユーザーでSSH接続を行う

rootで接続を許可してしまうのは、なかなかまずいです。

もし、サーバーを乗っ取られた場合rootだと何でもできてしまうからです。

なので、SSH接続はroot以外のユーザーで行う必要があります。

VPS側でユーザーを追加し、これまでと同じ手順で公開鍵認証方式でのSSH接続を設定します。

ユーザーの追加。

#ユーザー追加
adduser user_name

#追加したユーザーがsudoコマンドを使えるようにする
gpasswd -a user_name sudo

ここまでやったら、あとはrootでの手順と同じなので省略。

ただ、公開鍵を送るときに気をつけたいのは。

scp id_rsa.pub root@157.7*******:~/.ssh/authorized_keys

ではなく、

scp id_rsa.pub root@157.7*******:/home/user_name/.ssh/authorized_keys

と、user_nameのフォルダに送ることをしっかりと記述しないといけません。

前者だとrootのほうのフォルダに送られてしまいます。

私はこのミスに気づくのにかなり時間を費やしました...笑

最後にrootでのログインとパスワード認証を禁止する

#パスワード認証の禁止
PasswordAuthentication no
ChallengeResponseAuthentication no

#rootでのログイン禁止
PermitRootLogin no

設定し終わったら、

service sshd restart

これで設定が反映されたはず。

rootでのログインはできなくなっています。

まとめ

conohaはさくらVPSより安くて良いのですが、さくらVPSと比べると情報量はどうしても劣りますね。

とくに私のようにはじめてVPSを使用する人からすると、エラーでたときにかなり困りました。

日本のサービスなので海外サイトにものっていませんし。

なので、私のようなVPS初心者のかたがconohaを使った時のためにけっこう詳しめに書きました。

(エラーがでまくったので、その都度調べるたびに勝手に詳しくなってしまった感はあるが)

誰かの助けになれば幸いですね。

以上終わり!