「ssh ProxyCommandを利用した多段ssh」の版間の差分
(同じ利用者による、間の2版が非表示) | |||
行1: | 行1: | ||
− | + | [[sshd]] のアクセス元の制限をしている環境では、[[ssh]] でログインするために、特定のサーバーを経由してログインすることがあります。中継サーバーを利用した、多段 [[ssh]] を簡単にする方法を説明します。[[OpenSSH]]の[[netcat]]モードを利用します。 | |
− | + | ||
− | + | ||
− | [[sshd]] のアクセス元の制限をしている環境では、[[ssh]] でログインするために、特定のサーバーを経由してログインすることがあります。中継サーバーを利用した、多段 ssh を簡単にする方法を説明します。 | + | |
'''読み方''' | '''読み方''' | ||
行9: | 行6: | ||
== 概要 == | == 概要 == | ||
− | + | セキュリティを目的として、アクセス元を制限することは多くあります。アクセスの制限は、 hosts.allow や [[ファイアーウォール]] などで行えます。 | |
− | セキュリティを目的として、アクセス元を制限することは多くあります。アクセスの制限は、 | + | |
ネットワークの構成が理由で、プライベートネットワークのサーバにアクセスするために、ゲートウェイとなるサーバを経由するケースもあります。 | ネットワークの構成が理由で、プライベートネットワークのサーバにアクセスするために、ゲートウェイとなるサーバを経由するケースもあります。 | ||
行28: | 行24: | ||
また、中継するサーバーが増えると、効率が悪くなります。 | また、中継するサーバーが増えると、効率が悪くなります。 | ||
+ | [[OpenSSH]] 5.4 以降の [[netcat]] モードを利用する方法以外に、[[ncat]] / [[netcat]] を使用して、同様のことが実現できます。 | ||
== ProxyCommand == | == ProxyCommand == | ||
− | |||
[[ssh]] には、 ProxyCommand という機能が提供されています。 | [[ssh]] には、 ProxyCommand という機能が提供されています。 | ||
行51: | 行47: | ||
|} | |} | ||
− | この ProxyCommand ディレクティブは、 [[netcat]] ( | + | この ProxyCommand ディレクティブは、 [[netcat]] (nc, [[ncat]]) を併用すると便利です。 |
− | + | ||
== 使い方 == | == 使い方 == | ||
− | |||
=== 中継サーバー1台のssh === | === 中継サーバー1台のssh === | ||
− | |||
下記の多段 ssh を簡単にする方法を説明します。 | 下記の多段 ssh を簡単にする方法を説明します。 | ||
local - gw1 - target1 | local - gw1 - target1 | ||
行66: | 行59: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | [[ssh]] の -W は、[[netcat]] モードを有効にするオプションです。 | ||
+ | [[netcat]] モードは、[[OpenSSH]] 5.4 で実装されました。 | ||
=== 中継サーバー2台のssh === | === 中継サーバー2台のssh === | ||
− | |||
下記の多段 ssh を簡単にする方法を説明します。 | 下記の多段 ssh を簡単にする方法を説明します。 | ||
local - gw1 - gw2 - target2 | local - gw1 - gw2 - target2 | ||
行78: | 行72: | ||
ProxyCommand ssh -q -W %h:22 gw1 | ProxyCommand ssh -q -W %h:22 gw1 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
== 関連項目 == | == 関連項目 == | ||
− | + | * [[sshの使い方]] | |
* [[ssh]] | * [[ssh]] | ||
* [[ncat]] | * [[ncat]] | ||
* [[netcat]] | * [[netcat]] | ||
− | * | + | * hosts.allow |
+ | <!-- vim: filetype=mediawiki | ||
+ | --> |
2015年9月22日 (火) 22:09時点における最新版
sshd のアクセス元の制限をしている環境では、ssh でログインするために、特定のサーバーを経由してログインすることがあります。中継サーバーを利用した、多段 ssh を簡単にする方法を説明します。OpenSSHのnetcatモードを利用します。
読み方
- 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 を簡単にできます。
記号 | 説明 |
---|---|
%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