出来るだけシンプルにまとめてみました。root用のSSH Key不要です。
最初に決めておくこと
項目 | 例 | 説明 |
---|---|---|
rootパスワード | 好きなものを | rootユーザー用のログインパスワード |
作業用ユーザー名 | newuser | rootで常にログインするのは危険なので作業用ユーザーを作成します |
作業用ユーザーパスワード | 好きなものを | 作業用ユーザーのログインパスワード |
SSH鍵を保存するファイル名 | conoha |
ssh-keygen コマンドに渡すファイル名です |
SSH鍵のパスフレーズ | 好きなものを | SSH鍵を使うためのパスワードです |
SSHサービスを動かすポート番号 | 10022 | デフォルトの22で動かし続けるのは危険なので適当なポート番号に変更します。 WELL NONEやREGISTEREDポートを避けた49152~65535辺りがおすすめらしいです。 |
この6項目を先に決めてどこかにメモってからはじめるとスムーズに作業を進めることができます。(以下、メモ用のリスト)
- rootパスワード
- 作業用ユーザー名
- 作業用ユーザーパスワード
- SSH鍵を保存するファイル名
- SSH鍵のパスフレーズ
- SSHサービスを動かすポート番号
サーバー追加
デフォルトの900円プラン
- OSはCentOS 7.1(x64)
- SSH Key は「使用しない」
IPアドレスを確認
IPアドレスが分からないとログイン出来ないので先に調べておきます。
パスワード認証でrootにログイン
さきほど確認したIPアドレスでログインします。xxx.yyy.zzz.aaa
だったらroot@xxx.yyy.zzz.aaa
です。
/etc/ssh/sshd_config
の初期設定がPermitEmptyPasswords yes
になっているのでパスワード認証でログインできます。
2017-01-29 追記
@s_of_p さんから指摘がありました。Ubuntu 16.04 64bitでは
PermitEmptyPasswords no
かつPasswordAuthentication no
となっているそうです。
この辺りは選択したOSの種類などによって初期設定に微妙に違いがあると思います。(CentOS 7.1でもすでにnoになっているかも、その場合はブラウザ経由など別の方法でSSH鍵を置きましょう)
$ ssh root@xxx.yyy.zzz.aaa -p 22
root@xxx.yyy.zzz.aaa's password: # パスワード入力
# ログイン成功!
[root@1xxx.yyy.zzz.aaa ~]#
ユーザー作成
newuser
という名前で作るものとします。
# ユーザー作成
$ adduser newuser
# パスワード設定
$ passwd newuser
# wheelグループに追加
$ gpasswd -a newuser wheel
# 作成したnewuserでログインできるか確認
$ su newuser
作成したユーザーからsudoやsuが出来ることを確認
初期設定ですでにwheelグループに特権が付いているはずです。
$ sudo echo "aaa"
[sudo] password for newuser:
aaa
$ su # rootになる
パスワード: # rootのパスワードを入力
$ su newuser # newuserに戻る
SSHログインを許可
$ sudo vi /etc/ssh/sshd_config
以下の3つの設定を変更してください(設定箇所は離れているかも)。viの使い方はこちら
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
$ sudo service sshd restart
SSH鍵を作成
ホスト側で鍵を作成
# ~/.ssh を作成
$ cd ~/
$ mkdir .ssh
$ chmod 700 .ssh
# 鍵を作成
$ cd ~/.ssh
$ ssh-keygen -t rsa -b 2048
Enter file in which to save the key: conoha # ファイル名はconoha(好きなもので)
Enter passphrase: # パスフレーズを設定
Enter same passphrase again: # パスフレーズをもう一度
# AuthorizedKeysFileで設定したファイル名に名前変更
$ mv conoha.pub authorized_keys
$ chmod 600 authorized_keys
ローカルPCに秘密鍵をコピー
$ cat conoha
$ cd ~/.ssh
$ vi conoha //先ほどcat conohaでコピーした内容をペーストして保存してください
$ chmod 600 conoha
#ConoHa
Host conoha
HostName xxx.yyy.zzz.aaa
User newuser
Port 22
IdentityFile ~/.ssh/conoha
作ったユーザーでSSHリモートログインできるかテスト
ローカルPCからコマンド入力
$ ssh conoha
もっと安全に
rootからのログインを禁止
PermitRootLogin no
$ sudo service sshd restart
パスワードによるログインを禁止
PasswordAuthentication no
$ sudo service sshd restart
これでrootからのリモートログインが不可能になります。
$ ssh root@xxx.yyy.zzz.aaa -p 22
Received disconnect from xxx.yyy.zzz.aaa
SSHのポート番号を変更
sshdだけでなくiptablesにも設定変更が必要なので注意。CentOS7はデフォルトでiptablesサービスが入っていないのでまずインストール
$ sudo yum install iptables-services
sudo vi /etc/sysconfig/iptables
を編集。
--A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
+-A INPUT -m state --state NEW -m tcp -p tcp --dport 10022 -j ACCEPT
iptablesサービスを再起動します。
$ sudo service iptables restart
sudo vi /etc/ssh/sshd_config
を編集。
Port 10022
$ sudo service sshd restart
ローカルPCに戻ってssh_configを編集します。
#ConoHa
Host conoha
HostName xxx.yyy.zzz.aaa
User newuser
+ Port 10022
- Port 22
IdentityFile ~/.ssh/conoha
これで10022ポートを使ってSSHログイン出来るようになりました。
$ ssh conoha
# 22番ポートのログインは不可能に
$ ssh newuser@xxx.yyy.zzz.aaa -p 22
ssh: connect to host xxx.yyy.zzz.aaa port 22: Connection refused
再起動(sudo reboot)したときのために自動起動も設定しておきましょう。(ルーティングにiptablsを使うことを選んだのでfirewalldを停止する必要があることに注意です)
$ sudo systemctl stop firewalld.service
$ sudo systemctl mask firewalld.service
$ sudo systemctl enable iptables.service
まとめ
次はDockerなど必要なアプリケーションを入れていきましょう。おかしな部分がありましたら突っ込みなどいただけると幸いです。