–°–Ω—Ã –Ü—Ä–∏—Ö–Æ–¥—È—Ç
目次:
1つのオプションは、リモートサーバー接続ごとにbashエイリアスを作成することです。 ただし、この問題に対する別のはるかに優れた、より簡単な解決策があります。 OpenSSHを使用すると、ユーザーごとの構成ファイルをセットアップして、接続するリモートマシンごとに異なるSSHオプションを保存できます。
このガイドでは、SSHクライアント構成ファイルの基本について説明し、最も一般的な構成オプションのいくつかについて説明します。
前提条件
OpenSSHクライアントがインストールされたLinuxまたはmacOSシステムを使用していると想定しています。
SSH構成ファイルの場所
OpenSSHクライアント側の構成ファイルは
config
という名前で、ユーザーのホームディレクトリの下の
.ssh
ディレクトリに保存され
.ssh
。
~/.ssh
ディレクトリは、ユーザーが初めて
ssh
コマンドを実行したときに自動的に作成され
ssh
。 システムにディレクトリが存在しない場合は、次のコマンドを使用して作成します。
mkdir -p ~/.ssh && chmod 700 ~/.ssh
デフォルトでは、SSH構成ファイルは存在しない可能性があるため、touchコマンドを使用して作成する必要があります。
touch ~/.ssh/config
このファイルは、ユーザーのみが読み取りおよび書き込み可能で、他のユーザーがアクセスできないようにする必要があります。
SSH構成ファイルの構造とパターン
SSH構成ファイルは次の構造を取ります。
Host hostname1 SSH_OPTION value SSH_OPTION value Host hostname2 SSH_OPTION value Host * SSH_OPTION value
SSHクライアント構成ファイルの内容は、スタンザ(セクション)に編成されています。 各スタンザは
Host
ディレクティブで始まり、リモートSSHサーバーとの接続を確立するときに使用される特定のSSHオプションが含まれています。
インデントは必須ではありませんが、ファイルを読みやすくするためにお勧めします。
Host
ディレクティブには、1つのパターンまたは空白で区切られたパターンのリストを含めることができます。 各パターンには、0個以上の非空白文字または次のパターン指定子のいずれかを含めることができます。
-
*
-0個以上の文字に一致します。 たとえば、Host *
すべてのホストに一致し、192.168.0.*
は192.168.0.0/24
サブネット内のホストに一致します。?
-正確に1文字に一致します。 パターン、Host 10.10.0.?
10.10.0.
すべてのホストに一致します10.10.0.
範囲。!
-パターンの開始時に使用すると、一致が無効になります。 たとえば、Host 10.10.0.* !10.10.0.5
は、10.10.0.0/24
を除く10.10.0.5
サブネットのすべてのホストと一致します。
SSHクライアントは、構成ファイルのスタンザをスタンザごとに読み取ります。複数のパターンが一致する場合、最初に一致するスタンザのオプションが優先されます。 したがって、ファイルの先頭でよりホスト固有の宣言を行い、ファイルの末尾でより一般的なオーバーライドを行う必要があります。
端末で
man ssh_config
と入力するか、ssh_configのmanページにアクセスすると、使用可能なsshオプションの完全なリストを見つけることができます。
SSH構成ファイルは、
scp
、
sftp
、および
rsync
などの他のプログラムによっても読み取られます。
SSH構成ファイルの例
SSH構成ファイルの基本について説明したので、次の例を見てみましょう。
通常、SSH経由でリモートサーバーに接続する場合、リモートユーザー名、ホスト名、およびポートを指定します。 たとえば、
john
という名前のユーザーとしてコマンドラインからポート
2322
dev.example.com
というホストにログインするには、次のように入力します。
ssh [email protected] -p 2322
単に
ssh dev
と入力して、上記のコマンドで提供されているのと同じオプションを使用してサーバーに接続するには、
"~/.ssh/config
ファイルに次の行を追加します。
Host dev HostName dev.example.com User john Port 2322
ssh dev
と入力すると、sshクライアントは設定ファイルを読み取り、
dev
ホストに指定されている接続の詳細を使用します。
共有SSH構成ファイルの例
この例では、ホストパターンとオプションの優先順位に関する詳細情報を提供します。
次のサンプルファイルを見てみましょう。
Host targaryen HostName 192.168.1.10 User daenerys Port 7654 IdentityFile ~/.ssh/targaryen.key Host tyrell HostName 192.168.10.20 Host martell HostName 192.168.10.50 Host *ell user oberyn Host * !martell LogLevel INFO Host * User root Compression yes
-
ssh targaryen
と、sshクライアントはファイルを読み取り、最初に一致したオプション(Host targaryen
からオプションを適用します。 次に、次のスタンザを1つずつ照合してパターンをチェックします。 次に一致するものはHost * !martell
(martell
を除くすべてのホストを意味する)であり、このスタンザからの接続オプションを適用します。 最後の定義Host *
も一致しますが、User
オプションはHost targaryen
スタンザですでに定義されているため、sshクライアントはCompression
オプションのみをUser
ます。ssh targaryen
と入力したときに使用されるオプションの完全なリストは次のとおりです。HostName 192.168.1.10 User daenerys Port 7654 IdentityFile ~/.ssh/targaryen.key LogLevel INFO Compression yes
ssh tyrell
実行する場合、一致するホストパターンは次のHost tyrell
、Host *ell
、Host * !martell
およびHost *
。 この場合に使用されるオプションは次のとおりです。HostName 192.168.10.20 User oberyn LogLevel INFO Compression yes
HostName 192.168.10.50 User oberyn Compression yes
他のすべての接続では、sshクライアントは
Host * !martell
およびHost *
セクションで指定されたオプションを使用します。
SSH構成ファイルオプションのオーバーライド
sshクライアントは、次の優先順位で構成を読み取ります。
- コマンドラインから指定されたオプション
~/.ssh/config
定義されたオプション/etc/ssh/ssh_config
定義されたオプション
Host dev HostName dev.example.com User john Port 2322
そして、他のすべてのオプションを使用したいが、
john
代わりにユーザー
root
として接続するには、コマンドラインでユーザーを指定するだけです。
ssh -o "User=root" dev
-F
(
configfile
)オプションを使用すると、代替のユーザーごとの構成ファイルを指定できます。
ssh構成ファイルで指定されたすべてのオプションを無視するように
ssh
クライアントに指示するには、次を使用します。
ssh -F /dev/null [email protected]
結論
ユーザーssh構成ファイルを構成する方法を示しました。 SSHキーベースの認証を設定し、パスワードを入力せずにLinuxサーバーに接続することもできます。
デフォルトでは、SSHはポート22でリッスンします。デフォルトのSSHポートを変更すると、自動化された攻撃のリスクが軽減され、サーバーのセキュリティがさらに強化されます。
sshターミナル