• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

sshとsshd

date: 2020-11-01 excerpt: sshとsshdの使い方

tag: sshsshdsecuritylinuxwindows


sshとsshdの使い方

概要

  • secureなコンソール接続を実現できるソフトウェア
  • サーバサイドをsshd, クライアントサイドをsshと表現することが多い
  • linuxのデフォルトであるが、windowsにもインストールできる
  • パスワード認証より、公開鍵暗号方式のほうがセキュアであるとされている
    • 秘密鍵の管理には気を払う必要がある

sshのデバッグ

  • -vvvをつけると詳細が表示される
  • -E <path>でログの出力先
$ ssh -E ~/ssh.log -vvv <hostname>

インストール

ubuntu, debian

$ sudo apt install openssh-server

windows

> Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
> Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
> Start-Service sshd # サービスの開始
> Set-Service -Name sshd -StartupType 'Automatic' # 自動起動に登録
> Get-NetFirewallRule -Name *ssh* # firewallの例外に設定

設定とセキュリティ

設定ファイルについて

  • ubuntu, debian
    • /etc/ssh/sshd_config
      • sshのサーバ側の設定
    • /etc/ssh/ssh_config
      • sshのクライアント側の設定
  • windows
    • %programdata%\ssh\sshd_config
      • sshのサーバ側の設定

サーバサイドの公開鍵の配置場所について

  • $HOME/.ssh/authorized_keysに公開鍵情報を書き込む

~/.ssh/known_hostsについて

  • クライアントからサーバへの接続先が偽造されたときに気付けるように、フィンガープリント情報が異なるようなことがあった場合、警告がでる

sshした際のサーバサイドの環境変数について

  • ssh server "echo $PATH"すると、必要なpathがサーバサイドで通っていないことがある
  • サーバサイドにて、~/.ssh/environmentファイルを作成しpathの情報を追加する
    • PATH=/Users/<username>/.bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
  • サーバサイドにて、/etc/ssh/sshd_configにて、以下の内容を追加してsshdを再起動する
    • PermitUserEnvironment PATH

絶対やっておくべきセキュリティ対策

  • passwordログインを無効化
  • サービスの再起動

ubuntu, debian

#passwordログインの無効化
$ echo "PasswordAuthentication no" | sudo tee -a /etc/ssh/sshd_config
#ssh.serviceの再起動
$ sudo systemctl restart ssh.service

windows

> vim %programdata%\ssh\sshd_config # "PasswordAuthentication no"を追加
> Restart-Service sshd # サービスの再起動

~/.ssh/configの書き方

  • /ssh-config/

/etc/ssh/sshd_configの項目

  • PermitRootLogin <yes|no>
    • default yes
  • PasswordAuthentication <yes|no>
    • default yes
  • PermitEmptyPasswords <yes|no>
    • default no
  • PubkeyAuthentication <yes|no>
    • sshのプロトコルv2で認証するか
  • X11Forwarding <yes|no>
    • default no
  • AllowUsers <user1> <user2> ...
    • 接続を許可するユーザ
  • DenyUsers <user1> <user2> ...
    • 接続を禁止するユーザ
  • AllowGroups <group1> <group2> ...
    • 接続を許可するグループ
  • DenyGroups
    • 接続を禁止するグループ

sshdで複数のポートで待ち受ける

  • /etc/ssh/sshd_configまたは%programdata%\ssh\sshd_configに複数のポートを以下のように記述して再起動
  • 複数のstepサーバを単一のglobal IPに対してマップするときなどに使える
Port 22
Port 1022

TIPS

多くのファイルを転送する

  • /transport_a_lot_files/

脆弱なユーザ名とパスワードは使用しない

  • 例えば、ユーザ名test, パスワードtestのような脆弱な組み合わせは用いてはならない。ssh経由でログインされて、仮想通貨のバイナリ等を送られてマイニングに利用されたりするからである。

参考

  • OpenSSH Server configuration for Windows Server and Windows/Microsoft Build
  • Enable PowerShell SSH Remoting in PowerShell 7

トラブルシューティング

macosで突然sshできなくなる

  • 原因
    • sshのキー指定に対して自動で読み込む順序などがあるようで、OCIなどのクラウドの一時的なsshの秘密鍵と公開鍵を.sshに置くと、configで設定したファイルが読み込まれなくなる
  • 対応
    • .ssh/ociのようなサブフォルダに分けて管理することで解決する
  • 参考
    • Permission denied (publickey) - mac/serverfault


sshsshdsecuritylinuxwindows Share Tweet