0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ConoHaサーバ構築(SSHログイン編)備忘録

Last updated at Posted at 2020-04-28

サーバ情報

■ 契約プラン

  • リージョン:東京
  • メモリ:1GB
  • CPU:2コア
  • SSD:100GB

■ OS情報

$ cat /etc/redhat-release
CentOS Linux release 8.1.1911 (Core)

■ CPU情報

$ cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 79
model name      : Intel(R) Xeon(R) CPU E5-2640 v4 @ 2.40GHz
stepping        : 1
microcode       : 0x1
cpu MHz         : 2397.222
cache size      : 4096 KB
physical id     : 0
siblings        : 1
core id         : 0
cpu cores       : 1
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt
bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs taa itlb_multihit
bogomips        : 4794.44
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical, 48 bits virtual
power management:

processor       : 1
vendor_id       : GenuineIntel
cpu family      : 6
model           : 79
model name      : Intel(R) Xeon(R) CPU E5-2640 v4 @ 2.40GHz
stepping        : 1
microcode       : 0x1
cpu MHz         : 2397.222
cache size      : 4096 KB
physical id     : 1
siblings        : 1
core id         : 0
cpu cores       : 1
apicid          : 1
initial apicid  : 1
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt
bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs taa itlb_multihit
bogomips        : 4794.44
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical, 48 bits virtual
power management:

■ メモリ情報

$ cat /proc/meminfo
MemTotal:         841024 kB
MemFree:          221220 kB
MemAvailable:     543912 kB
Buffers:          104976 kB
Cached:           325808 kB
SwapCached:            0 kB
Active:           331072 kB
Inactive:         186516 kB
Active(anon):      87972 kB
Inactive(anon):    15072 kB
Active(file):     243100 kB
Inactive(file):   171444 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       2097148 kB
SwapFree:        2097148 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:         86856 kB
Mapped:            81360 kB
Shmem:             16244 kB
KReclaimable:      43428 kB
Slab:              74596 kB
SReclaimable:      43428 kB
SUnreclaim:        31168 kB
KernelStack:        1760 kB
PageTables:         7276 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     2517660 kB
Committed_AS:     356324 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
HardwareCorrupted:     0 kB
AnonHugePages:     10240 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB
DirectMap4k:       90104 kB
DirectMap2M:      958464 kB
DirectMap1G:           0 kB

■ ストレージ情報

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        396M     0  396M   0% /dev
tmpfs           411M     0  411M   0% /dev/shm
tmpfs           411M   16M  395M   4% /run
tmpfs           411M     0  411M   0% /sys/fs/cgroup
/dev/vda2        50G  3.8G   44G   8% /
tmpfs            83M     0   83M   0% /run/user/0
tmpfs            83M     0   83M   0% /run/user/1000

サーバ構築

【STEP1】一般ユーザの作成

ユーザを作成

$ useradd [ユーザ名]

作成したユーザのパスワードを変更

$ passwd [ユーザ名]

スーパーユーザ権限でコマンドを実行できるように変更

$ gpasswd -a [ユーザ名] wheel

ちょっと疑問に思ったこと・・・
リンク:なぜ、Wheelグループと呼ばれるのか?

$ su [ユーザ名]

【STEP2】SSH ログイン環境の整備

SSHの設定ファイルを編集する前にバックアップ

$ cd /etc/ssh
$ cp -pi sshd_config sshd_config.org

Rootログインを禁止する

$ vi sshd_config
---------------
PermitRootLogin yes -> no
---------------

SSHのポート番号を変更する
※ ここでは例として10099を設定する

$ vi sshd_config
---------------
Port 22 -> 10099
---------------

ウェルノウンポートを設定しないように注意!
リンク:ウェルノウンポート

パスワード無しログインを禁止する

$ vi sshd_config
---------------
PermitEmptyPasswords yes -> no
---------------

特定のユーザのみ、SSHでログイン可能とする

$ vi sshd_config
---------------
# 1ユーザだけ許可する場合
AllowUsers [ユーザ名]

# 複数のユーザを許可する場合
AllowUsers [ユーザ名1] [ユーザ名2] [ユーザ名3]
---------------

設定ファイルの構文チェックを実施する
※ 何も表示されなければ、問題なし。

$ sshd -t

sshdサービスを再起動して、設定を反映させる

$ systemctl restart sshd.service

SSHの設定反映は完了したが、ファイアウォールで22番ポートを未許可に変更し、10099番ポートを許可へ変更する必要がある。

まずは、ファイアウォールのステータスを確認する

$ systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor p>
   Active: active (running) since Wed 2020-04-08 17:48:55 JST; 39min ago
     Docs: man:firewalld(1)
 Main PID: 701 (firewalld)
    Tasks: 2 (limit: 5056)
   Memory: 30.6M
   CGroup: /system.slice/firewalld.service
           mq701 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork ->

active (running) なので、ファイアウォールが動作している。

ファイアウォールの設定を確認する

$ firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: cockpit dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

ssh(22番ポート)が許可状態にあるため、22番ポートを許可対象から除外する

# 恒久的にsshを許可対象から除外する
$ firewall-cmd --permanent --remove-service=ssh

# ファイアウォールの設定を反映する
$ firewall-cmd --reload

ssh(22番ポート)が未許可状態になったことを確認する

$ firewall-cmd --reloadlist-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: cockpit dhcpv6-client
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

servicesの項目からsshが除外されていれば、設定反映は成功。

次に、ポート番号10099を許可対象として追加する

# ポート番号10099を許可対象として追加する
$ firewall-cmd --zone=public --add-port=10099/tcp --permanent

# ファイアウォールの設定を反映する
$ firewall-cmd --reload

ssh(10099番ポート)が許可状態になったことを確認する

$ firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: cockpit dhcpv6-client
  ports: 10099/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

portsの項目に10099/tcpが追加されていれば、設定反映は成功。

SSH,ファイアウォールの設定反映が完了したため、以下のことを確認する

  • RootユーザでSSHできないこと
  • 一般ユーザでSSHできること
  • ポート番号22でSSHできないこと
  • ポート番号10099でSSHできること
  • 未許可ユーザではSSHできないこと
  • 許可ユーザではSSHできること

上記の結果がOKであれば、SSHの設定はひとまず完了。

【STEP3】SSH 鍵認証ログインの設定

公開鍵配置用のディレクトリを作成する

# 鍵認証ログインさせたい一般ユーザでホームディレクトリへ移動
$ cd ~

# 公開鍵配置用のディレクトリを作成
$ mkdir .ssh

# 所有者のみ公開鍵へのアクセスを許可する
$ chmod 700 .ssh

一旦、ローカル側の作業に移動する。
以下、公開鍵と秘密鍵を生成方法を説明する。

teratermを起動し、新しい接続が表示されたら[キャンセル]する

新しい接続.png

上段メニューの[設定]を選択する

設定メニュー.png

[SSH鍵生成]を選択すると、鍵生成画面が表示される

生成.png

[生成]を押下し、パスフレーズを入力する。
その後、[公開鍵の保存]と[秘密鍵の保存]を選択して、ローカルに公開鍵と秘密鍵を保存する。

パスフレーズ.png

ここでサーバ側の作業に戻る。
鍵認証ログインさせたい一般ユーザのホームディレクトリへ移動する

$ cd ~

teratermに対して、先ほど生成した公開鍵をドラッグ&ドロップする

scp_149.png

[SCP]を選択すると、一般ユーザのホームディレクトリに公開鍵が配置される

$ ls
id_rsa.pub

公開鍵をauthorized_keysへ結合する

# 公開鍵をauthorized_keysへ結合する
$ cat id_rsa.pub >> ~/.ssh/authorized_keys

# 不要となった公開鍵は削除する
$ rm id_rsa.pub

# authorized_keysのパーミッションを600で制限する
$ chmod 600 authorized_keys

公開鍵の配置が完了したので、teraterm等のSSHクライアントを使用して、秘密鍵を使用した接続ができるか確認してみる。

鍵認証ログイン.png

ログインに成功すれば、ひとまず鍵認証ログインは成功であるが、まだ通常のパスワードログインが可能であるため、SSHの設定を変更する。

パスワード認証によるログインを禁止する

# SSHの設定ファイルがあるディレクトリへ移動する
$ cd /etc/ssh

# 設定変更前にSSHの設定ファイルをバックアップする
$ cp -pi sshd_config sshd_config.YYYYMMDDHHMM

# パスワード認証を禁止するように、設定を修正する
$ vi sshd_config
---------------
PasswordAuthentication yes -> no
---------------

# 構文チェックを実施する
$ sshd -t

# sshdサービスを再起動して、設定を反映する
$ systemctl restart sshd.service

設定反映が完了したので、パスワード認証ログインができず、鍵認証のみでログインができればOKである。

Teraterm から自動ログインするマクロ

auto_login.ttl
;=====================================================================
; 接続情報
HOSTADDR = 'ホストアドレス'
USERNAME = 'ユーザ名'
PASSWORD = 'パスフレーズ'
KEYFILE  = '秘密鍵のフルパス'
;=====================================================================

; 処理ディレクトリを現在ディレクトリに変更
getdir DIR
setdir DIR

; コマンドオプション組立て
COMMAND = HOSTADDR
strconcat COMMAND ':[ポート番号] /ssh /2 /auth=publickey /user='
strconcat COMMAND USERNAME
strconcat COMMAND ' /passwd='
strconcat COMMAND PASSWORD
strconcat COMMAND ' /keyfile='
strconcat COMMAND KEYFILE

; 接続
connect COMMAND

end
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?