「ssh ProxyCommandを利用した多段ssh」の版間の差分

提供: セキュリティ
移動: 案内検索
 
行6: 行6:
  
 
== 概要 ==
 
== 概要 ==
セキュリティを目的として、アクセス元を制限することは多くあります。アクセスの制限は、 [[hosts.allow]] や [[ファイアーウォール]] などで行えます。
+
セキュリティを目的として、アクセス元を制限することは多くあります。アクセスの制限は、 hosts.allow や [[ファイアーウォール]] などで行えます。
 
ネットワークの構成が理由で、プライベートネットワークのサーバにアクセスするために、ゲートウェイとなるサーバを経由するケースもあります。
 
ネットワークの構成が理由で、プライベートネットワークのサーバにアクセスするために、ゲートウェイとなるサーバを経由するケースもあります。
  
行25: 行25:
  
 
[[OpenSSH]] 5.4 以降の [[netcat]] モードを利用する方法以外に、[[ncat]] / [[netcat]] を使用して、同様のことが実現できます。
 
[[OpenSSH]] 5.4 以降の [[netcat]] モードを利用する方法以外に、[[ncat]] / [[netcat]] を使用して、同様のことが実現できます。
 
 
== ProxyCommand ==
 
== ProxyCommand ==
 
[[ssh]] には、 ProxyCommand という機能が提供されています。
 
[[ssh]] には、 ProxyCommand という機能が提供されています。
行48: 行47:
 
|}
 
|}
  
この ProxyCommand ディレクティブは、 [[netcat]] ([[nc]], [[ncat]]) を併用すると便利です。
+
この ProxyCommand ディレクティブは、 [[netcat]] (nc, [[ncat]]) を併用すると便利です。
 
+
 
== 使い方 ==
 
== 使い方 ==
 
 
=== 中継サーバー1台のssh ===
 
=== 中継サーバー1台のssh ===
 
下記の多段 ssh を簡単にする方法を説明します。
 
下記の多段 ssh を簡単にする方法を説明します。
行64: 行61:
 
[[ssh]] の -W は、[[netcat]] モードを有効にするオプションです。
 
[[ssh]] の -W は、[[netcat]] モードを有効にするオプションです。
 
[[netcat]] モードは、[[OpenSSH]] 5.4 で実装されました。
 
[[netcat]] モードは、[[OpenSSH]] 5.4 で実装されました。
 
 
=== 中継サーバー2台のssh ===
 
=== 中継サーバー2台のssh ===
 
 
下記の多段 ssh を簡単にする方法を説明します。
 
下記の多段 ssh を簡単にする方法を説明します。
 
  local - gw1 - gw2 - target2
 
  local - gw1 - gw2 - target2
行77: 行72:
 
ProxyCommand ssh -q -W %h:22 gw1
 
ProxyCommand ssh -q -W %h:22 gw1
 
</syntaxhighlight>
 
</syntaxhighlight>
 
 
== 関連項目 ==
 
== 関連項目 ==
 
* [[sshの使い方]]
 
* [[sshの使い方]]
行83: 行77:
 
* [[ncat]]
 
* [[ncat]]
 
* [[netcat]]
 
* [[netcat]]
* [[hosts.allow]]
+
* hosts.allow
<!--
+
<!-- vim: filetype=mediawiki
vim: filetype=mediawiki
+
 
-->
 
-->

2015年9月22日 (火) 22:09時点における最新版

sshd のアクセス元の制限をしている環境では、ssh でログインするために、特定のサーバーを経由してログインすることがあります。中継サーバーを利用した、多段 ssh を簡単にする方法を説明します。OpenSSHnetcatモードを利用します。

読み方

ProxyCommand
ぷろきし こまんど

概要

セキュリティを目的として、アクセス元を制限することは多くあります。アクセスの制限は、 hosts.allow や ファイアーウォール などで行えます。 ネットワークの構成が理由で、プライベートネットワークのサーバにアクセスするために、ゲートウェイとなるサーバを経由するケースもあります。

クライアントからターゲットの間にある中継サーバーたちは、 ssh のプロキシ、踏み台サーバー(乗っ取られたサーバーという意味ではなく)、ssh ゲートウェイサーバー などと呼ばれています。

多段 ssh とは、たとえば、以下の経路のことです。

local - gw1 - target1
local - gw1 - gw2 - target2

多段 ssh を実行する場合に、面倒なやり方として以下のログイン手順があります。

local% ssh gw1
gw1% ssh target1

毎回、この作業をやるのは、面倒です。 また、中継するサーバーが増えると、効率が悪くなります。

OpenSSH 5.4 以降の netcat モードを利用する方法以外に、ncat / netcat を使用して、同様のことが実現できます。

ProxyCommand

ssh には、 ProxyCommand という機能が提供されています。

サーバへ接続するときに使うコマンドを指定します。このコマンドは、ユーザのシェルで実行されます。

~/.ssh/config (ssh_config) に ProxyCommand を定義することにより、多段 ssh を簡単にできます。

ProxyCommand 置き換えられる文字列
記号 説明
 %h 接続するホスト名に置き換えられます。
 %p ポート番号に置き換えられます。
 %r リモートユーザー名に置き換えられます。

この ProxyCommand ディレクティブは、 netcat (nc, ncat) を併用すると便利です。

使い方

中継サーバー1台のssh

下記の多段 ssh を簡単にする方法を説明します。

local - gw1 - target1

~/.ssh/config (ssh_config) に下記の設定を行います。

Host target1
	ProxyCommand ssh -q -W %h:22 gw1

ssh の -W は、netcat モードを有効にするオプションです。 netcat モードは、OpenSSH 5.4 で実装されました。

中継サーバー2台のssh

下記の多段 ssh を簡単にする方法を説明します。

local - gw1 - gw2 - target2

~/.ssh/config (ssh_config) に下記の設定を行います。

Host target2
	ProxyCommand ssh -q -W %h:22 gw2
Host gw2
	ProxyCommand ssh -q -W %h:22 gw1

関連項目