0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

~/.ssh/configのディテクティブについて

0
Posted at

はじめに

SSH接続を行う場合、クライアント側で、コンフィグファイルの設定を行う必要があります。コンフィグファイルのディテクティブには、デフォルトで用意されているもの以外に、たくさんのディテクティブが存在します。普段は見過ごされがちなディテクティブについて書いてみました。

基礎知識

公式マニュアルはこちらです。
https://linux.die.net/man/5/ssh_config

OpenSSHのコンフィグファイルには2種類あります。個人の環境で使う分にはどちらで設定しても同じです。ログインするユーザーによって切り分けて使いたい場合は、「~/.ssh/config」で設定することになります。

  • システム全体で有効にさせる場合
/etc/ssh/ssh_config 
  • ユーザー単位で有効にさせる場合
~/.ssh/config
~/.ssh/config

SSHでホストに接続するときの認証の仕方には、パスワード認証と公開鍵方式との2種類があります。サーバーがどちらの認証方式を受け付けているかによって、クライアント側の設定が変わってきます。外部に公開されているサーバーであれば、殆どの場合、公開鍵方式を採用しているはずです。社内用のサーバーであれば、パスワード認証にしている場合も普通にあります。両方を受け付けているようなことはあまりないはずです。

コンフィグファイルのディテクティブの設定は、基本的にこのような設定になります。
HostNameとuserの設定は必須になります。

  • ひな形
Host 任意の名前
    HostName 接続先のIP
    user ログインするユーザーID
  • 設定例
Host hoge_host
    HostName 192.168.1.10
    user hoge_user

ディテクティブの説明

PasswordAuthentication

パスワード認証を行うかどうかの設定になります。デフォルトではyesです。公開鍵方式だけを使っており、パスワードによる認証は行っていない場合は、明示的にnoすると、パスワード認証は試みなくなります。

接続を試みる優先度を、パスワード認証より公開鍵方式の方を高くした場合、yesにしていても、先に公開鍵方式で接続しにいき、そこで認証がOKになれば、パスワード認証は行われなくなるため、なんら問題になることはありません。

公開鍵方式で接続を行いたいが、接続を試みる優先度を公開鍵方式よりもパスワード認証の方を高くした場合、yesにすると、先にパスワード認証で接続しにいこうとするため、注意が必要になります。

IdentityFile

クライアント側に保存されている秘密鍵のファイルのパスを指定します。

省略するとデフォルトで、~/.ssh/id_rsa およ​​び ~/.ssh/id_dsa になります。作成した鍵のファイル名をデフォルトのまま運用している場合は、省略して問題ないでしょうが、複数の鍵を保存していて、接続先ごとに使い分けて運用している場合は、ファイル名を明示的に設定する必要があります。

Port

SSHのデフォルトのポート番号は22です。省略すると22が有効になります。セキュリティ強化のため、22を変更している場合も想定されます。22以外を使っている場合は、明示的に指定する必要があります。

PreferredAuthentications

認証を試みる順番を指定します。デフォルトではつぎの順番になっています。

「gssapi-with-mic、hostbased、publickey、keyboard-interactive、password」

password認証しか行わない場合はpasswordを先頭に持ってきておいた方が、ネゴシエーションが発生しなくなるため、接続速度が若干上がるはずです。

ssh

sshのバージョンを指定します。デフォルトでは、1,2となっているため、あまりこだわる個所ではないでしょう。ssh1にはセキュリティ的な脆弱性があるため、殆どの場合ssh2を使っているはずです。ssh1での接続を禁止するような場合は、2を明示的に指定することになります。

StrictHostKeyChecking

ホスト認証で使われる公開鍵をクライアント側の.ssh/known_hostsに登録するかどうかを設定する個所です。デフォルト値はaskです。つまり、.ssh/known_hostsに登録がなければ、登録するかを聞いてきます。noにすると、.ssh/known_hostsに登録がなければ、聞いてくることなく、強制的に書き込みをおこいます。yesにすると、.ssh/known_hostsへの登録を自動で行わなくなるため、毎回必ず手動で登録することになります。いちいち面倒なので、yesにするようなことはあまりないかと思われます。しかし、yesにすればトロイの木馬攻撃に対しては有効になるといったメリットがあります。

askの場合、既存鍵が新しい鍵に変更になった場合、新しい鍵が.ssh/known_hostsに自動で登録されないため、接続に失敗するといったデメリットがあります。この場合は手動で鍵を登録することになります。しかし、noにしておけば、新しい鍵になっても何事もなかったかのように接続してくれるといったメリットがあります。

UserKnownHostsFile

ホスト認証で使われる、公開鍵を登録するファイルのパスを指定します。普通、~/.ssh/known_hostsを使いますが、
別ファイルを用意するような場合は設定が必要になります。恐らく、そのようなことはほぼほぼないでしょう。

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?