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接続
#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でのログインはできなくなっています。