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アドレスが違っていた。(初歩的ミス)
まったく!! 思い込みは怖い。
|