Twitterに投稿 はてなブックマークに追加 Google Bookmarksに追加

目次 >> SSH >> sshd

SSHデーモンの設定

SSHサーバの設定ファイルは、通常Linuxでは/etc/ssh/sshd_config、OS X Serverでは/etc/sshd_configある。通常はデフォルトの設定で、sshdを起動すれば使えるはずである。なお、OSをインストールした時点では、sshdは自動起動するようになっていないものも多い。

接続できない!

接続できないのは、大抵、ファイアウォールがブロックしているか、sshd自体が起動していないことが多いので、まずはその確認を。

Fedoraではインストールした時点では自動起動しないのでOS起動時に自動的に起動するようにするには、rootで

# chkconfig sshd on

と打つ。

ssh関係ファイルのアクセス権

まず、id_rsa、authorized_keysファイルは、600に設定する。/home/foo/.sshディレクトリのアクセス権は0700(0600ではダメ)に設定する。

また公開鍵認証を行いたい場合は、ホームディレクトリ(/home/foo)のアクセス権の内、groupとotherの書き込み権を切っておかなければならない。すなわちホームディレクトリのアクセス権は755か設定可能な最大のアクセス権である。

鍵の形式を確認

例えば、OpenSSHなのに、商用SSHの鍵を、あるいは、PuTTyの鍵を使っていたりすると、当然ながら認証が通らず、接続できない。

この場合、それぞれの形式に変換する必要がある。詳しくはこちら

sshのポート番号を変えてsshへの攻撃を防ぐ

もしsshのポート番号を変えることができるようであれば、変えてしまった方がssh経由の攻撃を受けるリスクはずっと低くなる。

変更方法は、/etc/ssh/sshd_config内の

#Port 22

とコメント化されている行を

Port 22222

の様に変更して、再起動する。(この場合は22222番ポートを指定している。)

なお、OS Xの場合、ほとんどの設定は、sshd_configでできるが、ポート番号のみ、sshd_configで設定しても効果がない。
OS Xではポート番号は、

/System/Library/LaunchDaemons/ssh.plist

で設定する。具体的には、

                <dict>
                        <key>SockServiceName</key>
                        <string>ssh</string>
                        <key>Bonjour</key>
                        <array>

とある部分を

                <dict>
                        <key>SockServiceName</key>
                        <string>22222</string>
                        <key>Bonjour</key>
                        <array>

の様に変更する。これでデフォルトの22番から22222番に変更される。

sshは複数のPort番号を指定できる

/etc/ssh/sshd_configでポート番号を指定できるが、その際に、複数Port行を書くと、それらすべてのポートでsshが可能となる。
たとえば、

Port 22
Port 222
Port 2222
Port 22222

とした場合、sshクライアントは、22番、222番、2222番、22222番の4つのいずれかのポートで接続することができる様になる。

圧縮転送を指定するとsshに接続できない

sshサーバの設定でCompressionの項目のデフォルト値はdelayedになっている。
最近のディストリビューションはこのデフォルト値を採用しているものが多いが、この設定だといくつかの古いsshクライアントでは圧縮転送を指定すると接続できない。その場合、/etc/ssh/sshd_configファイル内で

Compression yes

とすることによって、接続できるようになる。

接続に時間がかかる

IPアドレスからリモートホスト名を逆引きできないような環境からアクセスしている場合、逆引きを試みる時間分だけ時間がかかる。
この場合、

UseDNS no

と設定すると、逆引きを行わなくなる。

商用SSHクライアントから接続できない。

新しい(6.8あたり以降)OpenSSHからは弱いアルゴリズムが削除された。
そのため商用SSHクライアントからパスワードでアクセスできない。
http://togakushi.bitbucket.org/build/html/openssh-6.8.html
以前と同じようにするには、sshd_configに下記の2つを追加する。

KexAlgorithms diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,diffie-hellman-group1-sha1,curve25519-sha256@libssh.org

Ciphers 3des-cbc,blowfish-cbc,cast128-cbc,arcfour,arcfour128,arcfour256,aes128-cbc,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com

sshでは接続できるが、sftpで接続できない

/etc/ssh/sshd_config内のSubsystem sftp /usr/libexec/openssh/sftp-serverで指定しているsftp-serverの位置が間違えている。

再起動を忘れずに

上記の設定をしたら、設定を反映させるためにはsshdを再起動する。通常、リモートからsshdを再起動しても、切断はされないようである。

$ sudo /etc/init.d ssh restart


最終更新日


本文中のFC4はFedora ProjectのFedora Core 4を、FC5はFedora Core 5を、FC6はFedora Core 6をopenSUSEはNovellのSUSE Linux OSSを表します。Fedora7以降は、単にFedora7、Fedora8、Fedora9、Fedora10、Fedora11、Fedora12、Fedora13、Fedora14、Fedora15と表示しています。Ubuntuは、必要に応じて20.04、21.04のようにバージョン番号をつけて区別しています。

ここに登場するドメイン名やIPアドレスなどはフィクションです。実在の人物・団体等とは一切関係がありません。
実際に使用する際は、各自の環境に合わせて書き換えてください。
もし何か間違いなどありましたらこちらからご連絡ください
リンクに許可は不要です。
Copyright (C) 2021 Chikuma Engineering Co., Ltd. All Rights Reserved.