ユーザ用ツール

サイト用ツール


サイドバー

Top

検索タグ

変更履歴

メニュー


linux:openssh:server

ssh サーバーの設定

基本設定

sshログインメッセージの設定

$ sudo vi /etc/motd
Tomoyan.net. Server 1号機

ssh サーバーの設定

以下のファイルの内容を編集する。

$ sudo vi /etc/ssh/sshd_config

標準設定の port 22 の変更

#Port 22
Port 22022

root ユーザーのログインを禁止

#PermitRootLogin yes
PermitRootLogin no

パスワードではなく鍵によるログインに変更

#PasswordAuthentication yes
PasswordAuthentication no

設定の反映

sshd サービスを再起動する。

CentOS 6

$ sudo service sshd restart
sshd を停止中:                                             [  OK  ]
sshd を起動中:                                             [  OK  ]

Fedora / CentOS 7

$ sudo systemctl restart sshd

ファイヤーウォール設定

CentOS 6

定義を追記する。

$ sudo vi /etc/sysconfig/iptables 
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22022 -j ACCEPT

Fedora / CentOS 7

許可されているサービスの確認。

$ sudo firewall-cmd --list-services
mdns dhcpv6-client ssh

ssh の許可を永続的に削除

$ sudo firewall-cmd --permanent --remove-service=ssh

代わりにポート 22022 を永続的に許可。

$ sudo firewall-cmd --permanent --add-port=22022/tcp

firewalld の状態を失わずにリロード。

$ sudo firewall-cmd --reload


許可されているサービスの確認。

$ sudo firewall-cmd --list-services
mdns dhcpv6-client

許可されているポートの確認。

$ sudo firewall-cmd --list-ports
22022/tcp

sudo の後もエージェントフォワードを引き継ぐ方法

$ sudo visudo
#
# Adding HOME to env_keep may enable a user to run unrestricted
# commands via sudo.
#
# Defaults   env_keep += "HOME"
Defaults    env_keep += "SSH_AUTH_SOCK"

SSH chroot の設定

ユーザー作成

$ sudo useradd [username]

SSHユーザーのルートディレクトリを作成

$ sudo mkdir -p /var/ssh_root/[username]

SSH公開キーの設定

※SSHサーバーが公開鍵認証に設定されていることを前提とします。

  1. SSHの設定を保存するディレクトリを作成。
    $ sudo mkdir /home/[username]/.ssh
  2. SSHユーザーがオーナーになるように設定。
    $ sudo chown [username].[username] /home/[username]/.ssh
  3. オーナーのみアクセスを許可するようにパーミッションを設定。
    $ sudo chmod 700 /home/[username]/.ssh
  4. 認証を許可するユーザーの公開鍵(OpenSSH形式)を登録。
    $ sudo vi /home/[username]/.ssh/authorized_keys
    ssh-rsa AAAAB...
  5. 公開鍵のオーナー/パーミッションを設定。(これを適切に行わないとssh/sftpの認証エラーが発生する。)
    $ sudo chown [username].[username] /home/[username]/.ssh/authorized_keys
    $ sudo chmod 600 /home/[username]/.ssh/authorized_keys

sshdの設定

  1. sshd設定ファイルを編集。
    $ sudo vi /etc/ssh/sshd_config
  2. sftp-server をコメントアウトして internal-sftp を利用するように変更。
    # override default of no subsystems
    #Subsystem      sftp    /usr/libexec/openssh/sftp-server
    Subsystem       sftp    internal-sftp
  3. ユーザー毎のchroot設定を追加。
    Match User [username]
            ChrootDirectory /var/ssh_root/[username]
            X11Forwarding no
            AllowTcpForwarding no
            ForceCommand internal-sftp

sshdの設定を反映

Fedora
$ sudo systemctl reload sshd.service
CentOS
$ sudo service sshd reload

トラブルシューティング

secure ログに subsystem request for sftp failed, subsystem not found が記録される

sshd_config に internal-sftp の設定漏れ。

# override default of no subsystems
#Subsystem      sftp    /usr/libexec/openssh/sftp-server
Subsystem       sftp    internal-sftp
linux/openssh/server.txt · 最終更新: 2019/05/18 02:23 (外部編集)