ユーザ用ツール

サイト用ツール


serverapps:security:ssh

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
serverapps:security:ssh [2017/08/17 15:54]
hayashi [認証用のKeyの作成]
serverapps:security:ssh [2024/02/02 12:28]
hayashi [パスワードログインを禁止]
行 1: 行 1:
 +====== SSH ======
 +===== ポートフォワード =====
 +''~/.ssh/config''
 +<file>
 +Host  __r_target_8080
 +  Hostname      forwarder
 +  User          UserName
 +  LocalForward  8080  target:80
 +</file>
  
 +これでssh接続をすると''forwarder''に接続されます\\
 +その状態で''localhost:8080''にアクセスすると ''target:80''にフォワードされます
 +
 +なお、''forwarder''のアクセスへ踏み台(basion)が必要な場合は普通に踏み台経由でssh接続するときと同じように記述すればOKです
 +<file>
 +ProxyCommand  ssh -W %h:%p basion
 +</file>
 +
 +===== ssh-agent =====
 +通常は.bashrcなどに記述するが、tcshなども利用しているので以下のスクリプトを作成
 +<code>
 +#!/bin/sh
 +# for ssh-agent
 +cd ~
 +if [ -f ~/.ssh-agent ]; then
 +    . ~/.ssh-agent
 +fi
 +if [ -z "$SSH_AGENT_PID" ] || ! kill -0 $SSH_AGENT_PID; then
 +    /usr/bin/ssh-agent -s > ~/.ssh-agent
 +    . ~/.ssh-agent
 +fi
 +ssh-add -l > /dev/null 2>&1 || ssh-add
 +</code>
 +
 +===== rootログインの禁止 =====
 +CentOSなどはデフォルトで許可されているので注意
 +
 +  # cat /etc/ssh/sshd_config | grep Permit
 +  PermitRootLogin no
 +
 +===== パスワードログインを禁止して公開鍵認証 =====
 +
 +==== 認証用のKeyの作成 ====
 +認証用の秘密鍵と公開鍵のペアが作成される\\
 +**安全性からed25519を推奨します** 2017.05.22((ecdsaを非推奨とするため削除しました))
 +
 +  $ cd
 +  $ ssh-keygen -t ed25519
 +  OR
 +  $ ssh-keygen -t rsa -b 4096 
 +  OR
 +  $ ssh-keygen -t rsa -b 4096 -N "passphrase" -f /path/to/keyfile -C comment
 +
 +利用可能な鍵証明書一覧
 +  $ ssh -Q key-cert
 +
 +利用可能な鍵一覧
 +  $ ssh -Q key
 +
 +=== 暗号強度の確認 ===
 +
 +  $ ssh-keygen -l -f ~/.ssh/id_ed25519.pub
 +  256 SHA256:71.......................................nQ user@host (ED25519)
 +  $ ssh-keygen -l -f ~/.ssh/id_ecdsa.pub
 +  384 SHA256:6z7QX....................................Ew user@host (ECDSA)
 +  $ ssh-keygen -l -f ~/.ssh/id_rsa.pub
 +  4096 SHA256:/p5W9....................................IQ user@host (RSA)
 +
 +
 +==== 公開鍵をリモートホストのauthorized_keysに追加 ====
 +
 +  $ cat ./.ssh/id_rsa.pub | ssh user@remote_host "cat >> ./.ssh/authorized_keys"
 +.sshディレクトリがないと失敗するのでその場合には
 +  $ ssh user@remote_host "mkdir ./.ssh && chmod 700 ./.ssh"
 +とかやってディレクトリを作っておく。
 +
 +CentOSならssh-copy-idが入っているのでそちらを使うも良し。\\
 +FreeBSDにも入りました。((2017.05.22:10.3で確認))\\
 +<del>FreeBSDはPortsのsecurity/ssh-copy-idでインストールしても良いのですがpkgngにはありません</del>。((2014/12/05現在))
 +  $ ssh-copy-id -i .ssh/id_rsa.pub user@remote_host
 +
 +なお、authorized_keysはPermissionを **600**にしておかないとLogin に失敗するので注意
 +==== パスワードログインを禁止 ====
 +  # cat /etc/ssh/sshd_config
 +  ......
 +  PasswordAuthentication no
 +  ChallengeResponseAuthentication no
 +
 +
 +FreeBSDは標準でPasswordAuthentication を禁止しているがChallengeResponseAuthentication は許可されているのでこちらも必ず「No」にしておく。
 +
 +Ubuntuで「/etc/ssh/sshd_config.d/50-cloud-init.conf」に以下の設定があったためこちらも禁止にする
 +
 +<file /etc/ssh/sshd_config.d/50-cloud-init.conf>
 +#PasswordAuthentication yes
 +PasswordAuthentication no
 +</file>
 +==== 公開鍵認証をON ====
 +
 +  PubkeyAuthentication yes
 +<del>AuthorizedKeysFile      .ssh/authorized_keys</del>
 +
 +AuthorizedKeysFileを指定すると、このマシンから他へssh接続する際に//**Bad configuration option: AuthorizedKeysFile**//と表示して落ちます。((昔は生きていたはずで、その為このオプションを指定するよう説明しているサイトや書籍多数です…))
 +
 +
 +==== user's configuration file ====
 +.ssh/configファイルで複数サーバーのSSH接続を管理
 +<code>
 +Host example
 +  HostName     example.com
 +  Port         10022
 +  User         nanako
 +  IdentityFile ~/.ssh/id_rsa.example
 +</code>
 +これで以下のようにアクセス可能
 +  $ ssh example
 +
 +===== 秘密鍵から公開鍵を生成する =====
 +
 +
 +  ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
 +
 +===== 公開鍵からfinger printを生成する =====
 +
 +
 +  ssh-keygen -lf ~/.ssh/id_rsa.pub
 +
 +===== knownhostの更新 =====
 +
 +  host="target-hostname"
 +  ssh-keygen -R $host
 +  ssh-keyscan -H $host >> ~/.ssh/known_hosts
serverapps/security/ssh.txt · 最終更新: 2024/02/02 12:28 by hayashi