diadia

興味があることをやってみる

サーバー構築 ssh関係

大枠

ssh接続するための手続きについて少しわかった。ssh接続するには以下のコマンドをローカルで入力する。全てはこのコマンドを成立させるために必要なことを準備しなければならない。

ssh -p [sshのポート番号] -i [秘密鍵] サーバのユーザ名@サーバのipまたはドメイン

このコマンドを入力するためには

  • サーバにssh用のポートを準備すること
  • 公開鍵周りを準備すること
この2つが必要。

サーバにssh用のポートを準備すること

ざっくり言えば、

  1. ポートの番号設定
  2. firewallの当該ポート番号を許容する設定
をすることになる。

ポートの番号設定

ssh用のポート番号設定は、ssh関係の設定ファイルのポート番号を変更するだけで良い。イメージとしては、設定(config)ファイルをvi(m)で変更して上書きする。
設定ファイルは/etc/ssh/sshd_config である。

vim /etc/ssh/sshd_config

例えばポート番号を15156と適当に決めたとすると、#Port 22と書いてある場所を見つけ Port 15156と書く。ポート番号をデフォルトの22から変更するのは、他の人にサーバを乗っ取られにくくするためである。

#Port 22
上記を下記に書き換え
Port 15156

追加で以下もするのが望ましい。

#PermitRootLogin yes
上記を下記に書き換え
PermitRootLogin no

これでポート番号の設定は完了しました。sshdは変更したらそれを実行するために、以下を行う。

systemctl restart sshd.service

firewallの当該ポート番号を許容する設定

ポート番号の変更は、ssh内にある設定ファイルをいじって、systemctl restart ... という流れでした。firewallについても同じ流れでやるという感覚で捉えれば覚える量が少なくなります。別に留意することは、firewallの設定(定義)ファイルが/usr/lib/firewalld/services/ssh.xmlというパスで存在しています。これを直接編集せずにこのファイルをコピーし、/etc/firewalld/services以下に置く。コピーした定義ファイルをsshd_configで設定したポート番号を許容するために記述する。

ファイアウォールの定義ファイルをコピー

cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services

コピーしたファイルにポート番号22から変更ポート番号に記述変更

<port protocol="tcp" port="15156"/>

ファイルを変更したので、実行するために以下を行う。

firewall-cmd --reload


公開鍵周りの準備

接続先サーバには公開鍵認証を用いるのが望ましいらしい。やり方は対となる公開鍵と秘密鍵のペアを作る。公開鍵をサーバに登録する。ローカルには秘密鍵を保持しとく。で上記のsshコマンドに秘密鍵を入力するという使い方をする。これを実現するには、

  1. 公開鍵秘密鍵を作成する
  2. 公開鍵をサーバに送る
  3. 送られた公開鍵をauthorized_keysファイルに登録する。

公開鍵秘密鍵の作成

作成方法はmacwindowsで異なるようだ。windowsの場合は、teratermを使ってssh鍵を作成する。macの場合は以下のコマンドを入力する。

$ ssh-keygen -t [公開鍵名]

公開鍵をサーバに送る

macの場合は以下のようにした。このときsshのポートを利用したけど、事前にポート開放とうしておかないといけないかも?

scp -P [ポート番号] -i [公開鍵] [送信したいファイルパス] [ユーザー名]@[サーバーのドメインorIP] : 

サーバ側から受け取った公開鍵をauthorized_keysファイルに登録する

mkdir .ssh
chmod 700 .ssh
cat id_rsa.pub >> .ssh/authorized_keys
chmod 600 .ssh/authorized_keys