ようこそNICのホームページへ(なが〜い試運転中)   
HP パソコン 健康 落語 海外 思うまま 電子工作

XS36V4にSSHを導入(2015/10/15)とその後

Last update:2017/09/13    Build:2017/08/10



0.ssh導入 



サーバー導入時に(2015/10/15)sshも導入した。 その後、設定をいろいろと行ったのでメモしておくこととした。
OS:Ubuntu 14.04LTS(64bit)。

1.sshをスーパデーモン下に置く(2015/10/27頃)

 1) xinetdを導入


  roorで apt-get xinetd install

 2)sshdの初期設定


  /etc/xinetd.conf と /etc/xinetd.d/下のファイルを修正
   xinetd.conf 修正箇所

      存在しなかったので、ネットでググって   /etc/xinetd.d/ssh を作成

root@ubuntu-server-nic:/etc/xinetd.d# cat ssh
service ssh
{
        disable         = no
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/sshd
        server_args     = -i
        log_on_success  += DURATION USERID
        log_on_failure  += USERID
        nice            = 10
}

 3)sshdが自動で立ち上がらないようにする


root@ubuntu-server-nic:/etc/init# cat ssh.conf
# ssh - OpenBSD Secure Shell server
#
# The OpenSSH server provides secure shell access to the system.

description     "OpenSSH server"

#start on runlevel [2345]  <===== ここをコメントアウト
stop on runlevel [!2345]

respawn
respawn limit 10 5
umask 022

env SSH_SIGSTOP=1
expect stop

# 'sshd -D' leaks stderr and confuses things in conjunction with 'console log'
console none

pre-start script
    test -x /usr/sbin/sshd || { stop; exit 0; }
    test -e /etc/ssh/sshd_not_to_be_run && { stop; exit 0; }

    mkdir -p -m0755 /var/run/sshd
end script

# if you used to set SSHD_OPTS in /etc/default/ssh, you can change the
# 'exec' line here instead
exec /usr/sbin/sshd -D
root@ubuntu-server-nic:/etc/init# 
コメントアウトしたことでsshdの起動時の自動立ち上げはなくなった。 しかしxinetdの管理下にないのかsshでログインしようとしても 受け付けない。もっぱらtelnetのみ。

==参考== telnetのメモ

root@ubuntu-server-nic:/etc/xinetd.d# cat telnet
service telnet
{
        disable = no
        flags   = REUSE
        socket_type = stream
        user    = telnetd
        wait    = no
        server  = /usr/sbin/in.telnetd
        server_args     = -h
        only_from       = 192.168.0.0/24 127.0.0.1 <=====誤
        only_from       = 192.168.0.0/16 127.0.0.1 <=====正
        log_on_failure  += USERID
}



 4)トラブル対応


  リブートするとsshdが自動で立ち上がらない
  xinetdを使ってtelnetでは接続できるがsshが全く接続できない。

==原因== 
   1)/var/run/ssh/ ディレクトリーが作成されていない。ログを見てわかった。
     /var/log/auth.logでsshdに関係するところを見ると
 
Oct 25 02:09:05 ubuntu-server-nic sshd[1591]: error: Could not load host key: /etc/ssh/ssh_host_rsa_key
Oct 25 02:09:05 ubuntu-server-nic sshd[1591]: error: Could not load host key: /etc/ssh/ssh_host_dsa_key
Oct 25 02:09:05 ubuntu-server-nic sshd[1591]: error: Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Oct 25 02:09:05 ubuntu-server-nic sshd[1591]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Oct 25 02:09:05 ubuntu-server-nic sshd[1591]: fatal: Missing privilege separation directory: /var/run/sshd <=ここ  

Oct 25 02:09:19 ubuntu-server-nic sshd[1592]: error: Could not load host key: /etc/ssh/ssh_host_rsa_key
Oct 25 02:09:19 ubuntu-server-nic sshd[1592]: error: Could not load host key: /etc/ssh/ssh_host_dsa_key
Oct 25 02:09:19 ubuntu-server-nic sshd[1592]: error: Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Oct 25 02:09:19 ubuntu-server-nic sshd[1592]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Oct 25 02:09:19 ubuntu-server-nic sshd[1592]: fatal: Missing privilege separation directory: /var/run/sshd <=ここ
               
Oct 25 02:19:32 ubuntu-server-nic sshd[1636]: error: Could not load host key: /etc/ssh/ssh_host_rsa_key
Oct 25 02:19:32 ubuntu-server-nic sshd[1636]: error: Could not load host key: /etc/ssh/ssh_host_dsa_key
Oct 25 02:19:32 ubuntu-server-nic sshd[1636]: error: Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Oct 25 02:19:32 ubuntu-server-nic sshd[1636]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Oct 25 02:19:32 ubuntu-server-nic sshd[1636]: fatal: No supported key exchange algorithms [preauth]  =>
                                             別のエラーになった。


xinetd経由をひとまずあきらめてそのままデーモンで立ち上げようとすると立ち上がらない

root@ubuntu-server-nic:/etc/rc0.d# /usr/sbin/sshd
Missing privilege separation directory: /var/run/sshd <==このディレクトリがないとのこと
 xinetd経由でも同様のエラーが/var/log/auth.logに記録されている。

 /var/run/ ディレクトリーがtmpファイルのため、リブートするたびに消えて、メモリー上に作成される設定のようだ
  /var/run/ --> /run/ にリンク
root@ubuntu-server-nic:/etc/init# df
Filesystem     1K-blocks    Used Available Use% Mounted on
udev             1932000       4   1931996   1% /dev
tmpfs             388704     608    388096   1% /run <==ここ
/dev/dm-0      110478160 1823892 103019196   2% /
none                   4       0         4   0% /sys/fs/cgroup
none                5120       0      5120   0% /run/lock
none             1943500       0   1943500   0% /run/shm
none              102400       0    102400   0% /run/user
/dev/sda2         241965   49222    180251  22% /boot
/dev/sda1         523248    3456    519792   1% /boot/efi
root@ubuntu-server-nic:/etc/init# 


ディレクトリー /run/sshd を手動で作る。
root@ubuntu-server-nic:/etc/rc0.d# cd /var/run
root@ubuntu-server-nic:/var/run# mkdir sshd <<==ディレクトリを作ると
root@ubuntu-server-nic:/var/run# ls
acpid.pid     mysqld                      sshd  <==ここ
acpid.socket  network                     systemd
apache2       network-interface-security  udev
atd.pid       ntpd.pid                    upstart-file-bridge.pid
crond.pid     plymouth                    upstart-socket-bridge.pid
crond.reboot  pppconfig                   upstart-udev-bridge.pid
dbus          resolvconf                  user
initramfs     rsyslogd.pid                utmp
lock          screen                      watershed
motd.dynamic  sendsigs.omit.d             xinetd.pid
mount         shm
root@ubuntu-server-nic:/var/run# /usr/sbin/sshd  デーモンで立ち上げた
root@ubuntu-server-nic:/var/run# ps aux |grep sshd
root 1610 0.0 0.0 61372 3076 ? Ss 02:57 0:00 /usr/sbin/sshd <=====うまくいった。
root 1612 0.0 0.0 12716 2252 pts/1 S+ 02:57 0:00 grep --color=auto sshd


==xinetdを通さずデーモンの立ち上げ==
   ○ /var/run/sshd ディレクトリをつくる /var/run --> /run/ シンボリックリンク
  このディレクトリはリブートすると消える ==> rc.rocalに自動作成を作る必要あり
 ○/usr/sbin/sshd  デーモンで立ち上げた

 5)立ち上げ時に自動で/var/run/ssh/ ディレクトリーを作成する。(2015/10/27)


ubuntuの自動立ち上げで/run/sshd ディレクトリを自動で作ることにした。
/etc/init.d/ に以下のプログラムをつくった
md-dir-var-run-sshd.sh
#!/bin/sh -e 
#
# 2015/10/25   make directory /var/run/sshd
# 
# Create the PrivSep enpty dir if necessary
if [ ! -d /var/run/sshd ]; then
  mkdir  /var/run/sshd
  chmod 0755 /var/run/sshd
fi
nkfを使ってunicode unixの改行コード(LF)に変換
rc.localに記述するとの表現もあったが(古いようだ)、起動時の実行プログラムは /etc/init.d/  に置けば良いとのこと。
所有権をrootに変更 chmod 755 を実行し実行可能にモード変更

自動実行に登録
update-rc.d md-dir-var-run-sshd.sh defaults

うまくいった。xinetd経由で立ち上がった。 netstat −lで確認きちんと聞いている
nic@ubuntu-server-nic:~$ netstat -l
tcp        0      0 *:ssh                   *:*                     LISTEN     
tcp        0      0 *:telnet                *:*                     LISTEN     
tcp        0      0 localhost:mysql         *:*                     LISTEN     
tcp6       0      0 [::]:http               [::]:*                  LISTEN     
udp        0      0 192.168.24.111:ntp      *:*                                
udp        0      0 localhost:ntp           *:*                                
udp        0      0 *:ntp                   *:*                                
udp6       0      0 fe80::82ee:73ff:fe9:ntp [::]:*                             
udp6       0      0 2001:a023:374d:0:82:ntp [::]:*                             
udp6       0      0 localhost:ntp           [::]:*                             
udp6       0      0 [::]:ntp                [::]:*                             
Proto RefCnt Flags       Type       State         I-Node   ・yヒキ
unix  2      [ ACC ]     SEQPACKET  LISTENING     325      /run/udev/control
unix  2      [ ACC ]     STREAM     LISTENING     859      /var/run/mysqld/mysqld.sock
unix  2      [ ACC ]     STREAM     LISTENING     9995     @/com/ubuntu/upstart
unix  2      [ ACC ]     STREAM     LISTENING     11884    /var/run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     11987    /var/run/acpid.socket
解除は
update-rc.d -f md-dir-var-run-sshd.sh remove

 6)sshdのポート番号変更


  22番ポートを変更
  /etd/services ファイルのsshのポート番号を変更
  これだけだとsshdが22番ポートをlistenするので
  /etc/xinetd.d/ssh ファイルのポート番号も合わせて変更した


リブートした。うまくいった。(^_^)!!


   

2.RSA公開鍵認証の導入(2017/7/26頃)

 1)鍵の作成


userで ssh-keygen -t rsa 2048 を実行
ubuntu-server-nic:~$ ssh-keygen -t rsa <=ディフォルトで2048bits
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): <=cr
Created directory '/home/user/.ssh'.
Enter passphrase (empty for no passphrase): <= パスフレーズ 
Enter same passphrase again:         <= パスフレーズ
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
d9:67:3a:97:b1:47:72:3e:d3:69:90:d8:3e:12:87:68 user@ubuntu-server-nic
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|                 |
|         o. + .  |
|        SE.+==o  |
|        .  ++O...|
|          o.+o=o.|
|           o..oo |
|                 |
+-----------------+
ubuntu-server-nic:~$ pwd


 2)公開鍵の登録


~/自分/.ssh/ ディレクトリの下にauthrized_keyファイルを作成
touch authrized_key
アクセス権の変更
chmod 644 authrized_key
公開鍵 id_rsa.pub を authrized_key に登録
cat id_rsa.pub >> authrized_key
秘密鍵 id_rsa はクライアントのホルダーに入れる


 3)ホストキーの作成


  ホストキーはsshを導入したときに作成されていた。   ここでは作成しない。   

 4)トラブル対応


  RSAでアクセスするとログインできない。
  エラーコード#10060がでる。確認するとタイムオーバー。
  原因がわからない。3日ほど悩んだ。
  結果は、  サーバーのIPアドレスが違っていた。(初歩的ミス)
  まったく!! 思い込みは怖い。


  



電子工作へ     HomePage     このページのトップ