Debian SSH 接続について

-OpenSSH- 公開鍵認証で安全にリモートホストへ接続する

TelnetやFTPは、平文でパスワードを送信してしまうため、
使用法を限らないと結構リスクがある。
SSH暗号通信は、公開鍵認証を用いて相手のPCへ暗号化通信するので、
安全性に優れているそうだ。

暗号2000年の歴史?で、どーしても解決できなかった命題。
暗号界はずーっとモヤモヤしていた。ところが。。。
天才あらわる。一気に解決!
それが公開鍵暗号方式。
暗号用の鍵と、複合用の鍵、異なる2つの鍵を
別々に使用するらしい ( ~_~)?

そんな訳で今回は、OpenSSHを用いて、
リモートホストに接続してみるまでを試してみたい。

< 環 境 >

・Remote Host
    相手のPC(接続される側)
    IPアドレス:192.168.1.11
    hostname:green-pen
    ユーザーアカウント:hanako
    ユーザーhanakoのパスワード:12345

・Local Host
    自分のPC(接続する側)
    ユーザーアカウント:taro

■ Remote Host 側の設定

・SSHパッケージの確認とインストール
    $ aptitude show openssh-server
    ---なければインストール
    $ sudo apt-get install openssl-server

・SSHバージョン確認
    $ ssh -V
    ---脆弱性の指摘されたバージョンは使用しない

・設定ファイルの編集
    $ sudo vi /etc/ssh/sshd_config

    # Port 22から任意Portへ変更
    Port 50022

    # 脆弱性回避、明示的に指定
    Protocol 2

    # PermitRootLogin without-password の下行に追記
    # rootのログイン拒否 / ログイン許可するユーザー **1
    PermitRootLogin no
    AllowUsers hanako

    # 純粋な RSA 認証を許可 デフォルトyesのままでOK
    RSAAuthentication yes

    # 公開鍵認証を許可 デフォルトyseのままでOK
    PubkeyAuthentication yes

    # 公開鍵を格納しているファイル デフォルトでOK
    AuthorizedKeysFile    %h/.ssh/authorized_keys

    # コメントアウト外し有効化
    # パスワード認証を許可
    # 公開鍵の受渡しが完了したら no に変更する
    PasswordAuthentication yes

    # 脆弱性指摘の回避
    X11Forwarding no

・sshd_configファイルの更新~有効化/SSH再起動
    $ sudo systemctl restart ssh.service

・Portの通信許可
    $ iptables -A INPUT -p tcp --dport 50022 -j ACCEPT
    $ iptables -A OUTPUT -p tcp --sport 50022 -j ACCEPT
        *実際の運用ではもっと限定的にルールを設ける
        *ufw のルール設定はコチラ


  **1 AllowUsers 書式


■ Local Host 側の設定

・SSHパッケージの確認とインストール
    $ aptitude show openssh-client
    ---なければインストール
    $ sudo apt-get install openssl-client

・公開鍵(public key) / 秘密鍵(private key)の作成
    公開鍵:public key ----- Remote Host 相手PCに渡す
    秘密鍵:private key ---- Local Host 自分PCで保管(漏洩なきよう注意)

    $ ssh-keygen

    Enter file in which to save the key (/home/taro/.ssh/id_rsa):
    -----任意のファイル名を入力 空のまま Enter Key でも良い(上記ファイル名で作成)
    Enter passphrase (empty for no passphrase):
    -----鍵用のパスワードを入力:******
    Enter same passphrase again:
    -----同じパスワード入力:******
    The key fingerprint is:
    -----表示されればOK

・公開鍵 / 秘密鍵の名前とパーミッション確認
    $ ls -al /home/taro/.ssh/
    drwx------ 2 taro raro 1024 Dec 24 09:00 .
    drwxr-xr-x 2 taro raro 1024 Dec 24 08:00 ..
    -rw------- 2 taro raro 1024 Dec 24 09:00 id_rsa    秘密鍵
    -rw-r--r-- 2 taro raro 1024 Dec 24 09:00 id_rsa.pub   公開鍵


■ Local Hosto から Remote Host へ公開鍵を渡す

・Local Host側での操作

    $ ssh-copy-id -p 50022 hanako@192.168.1.11

    -----ポート指定のオプション:-p
    -----公開鍵を任意の名前に変えている場合の指定オプション:-i
    -----オプション -i 指定なし:/home/taro/.ssh/id_rsa.pub(公開鍵)を渡す
    -----@hostname でも可

    /use/bin/ssh-copy-id: INFO: attempting to log in with the new key(s),
    to filter out any that are already installed
    /use/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed --
    if you are prompted now it is to install the new keys

    ***鍵のパスワードを聞かれる場合は***
    Enter passphrase for key '/home/taro/.ssh/id_rsa':
    -----鍵作成の時のパスワード入力:******
    *********************

    hanako@192.168.1.11's password:
    -----hanakoのパスワード入力:12345
    Number of key(s) added: 1
    Now try logging into the machine, with: "ssh -p '50023' 'hanako@192.168.1.11'"
    and check to make sure that only the key(s) you wanted were added.

  *うまく渡せない時は
    Remote Host側の /etc/ssh/sshd_config ファイルで、
    PasswordAuthentication no となっている。
    Remote Host側で、sshd_config変更したが、有効化されていない。
    Remote Host側で、ポートの許可がない。
  *成功するとRemote Host の ~/.ssh/authorized-keys ファイルに上書きされる。


■ Local Host から Lemote Host へSSH接続する

・Local Host側での操作

    $ ssh -p 50022 hanako@192.168.1.11

    -----ポート指定のオプション:-p
    -----公開鍵を任意の名前に変えている場合の指定オプション:-i
    -----オプション -i 指定なし:/home/taro/.ssh/id_rsa(秘密鍵)
    -----@hostname でも可

    Enter passphrase for key '/home/taro/.ssh/id_rsa:
    -----鍵作成の時のパスワード入力:******

    接続が成功すれば、hanako@green-pen:~$ と表示

・Remote Host の /ect/ssh/sshd_config ファイルを修正する
    PasswordAuthentication yes ---> no
    認証方式は鍵認証のみ許可する パスワードでの認証拒否


■ エラーの確認

・動作状況のcheck
    $ sudo systemctl status -l ssh.service

・ログをcheck
    $ sudo journalctl -u ssh.service


■ ユーザー設定とSSHログインとの関係

--shell /bin/false X
--shell /bin/nologin X
--disabled-login
--disabled-password
--no-create-home authorized-keysの置き場がない

Copyright(C) green-pen miyagi