OpenSSH7.3以上

OpenSSH7.3以上

ブリッジサーバーを介してサーバーにトンネリングしようとしています。これまで、以下を使用してコマンドシェルで動作させることができました。

ssh -A -t [email protected] ssh -A [email protected]

しかし、それを私のファイルにパッケージ化しようとしましたが、~/.ssh/config問題が発生しました。私は試した:

Host axp
  User          remote_userid
  HostName      remoteserver.com
  IdentityFile  ~/.ssh/id_rsa.eric
  ProxyCommand ssh -A -t bridge_userid@bridge_userid.com ssh -A remote_userid@%h

しかし、これを行うと、次のエラーメッセージが表示されremoteserver.com、原因が何であるかわかりません。

ksh: SSH-2.0-OpenSSH_6.8^M: 見つかりません

私はログイン時にremoteserver.com私のシェルがあることを知っています/usr/bin/ksh

構成ファイルのsshコマンドにパスパラメータを追加しようとしましたが、違いはありませんでした。

どんなアイデアがありますか?

答え1

Jakujieの回答そうですね。ただし、OpenSSH以降は、より簡単な方法を7.3使用できます。-J ProxyJump私のメモを見る:

OpenSSH7.3以上

使用ProxyJump。マニュアルに記載されているように:

-J [user@]host[:port]
まず、ジャンプホストへの SSH 接続を確立し、そこから最終宛先への TCP 転送を設定して宛先ホストに接続します。複数のジャンプをコンマで区切って指定できます。これはProxyJump設定ディレクティブを指定するショートカットです。

ProxyJump~/.ssh/configの例

~/.ssh/config

Host server1
  Hostname server1.example.com
  IdentityFile ~/.ssh/id_rsa

Host server2_behind_server1
  Hostname server2.example.com
  IdentityFile ~/.ssh/id_rsa
  ProxyJump server1

~とつながる

ssh server2_behind_server1 -v

-v詳細出力の追加

ProxyJump-Jコマンドラインの例

~/.ssh/config

Host server1
  Hostname server1.example.com
  IdentityFile ~/.ssh/id_rsa

Host server2
  Hostname server2.example.com
  IdentityFile ~/.ssh/id_rsa

~とつながる

ssh server2 -J server1 -v

または使用-o

ssh server2 -o 'ProxyJump server1' -v

OpenSSH5.4以上

ProxyCommandそして使用-W

~/.ssh/config

Host server1
  Hostname server1.example.com
  IdentityFile ~/.ssh/id_rsa

Host server2
  Hostname server2.example.com
  IdentityFile ~/.ssh/id_rsa
  ProxyCommand ssh server1 -W %h:%p

~とつながる

ssh server2 -v

または使用-o

ssh server2 -o 'ProxyCommand ssh server1 -W %h:%p' -v

OpenSSHは次のとおりです5.4

~/.ssh/config

Host server1
  Hostname server1.example.com
  IdentityFile ~/.ssh/id_rsa

Host server2
  Hostname server2.example.com
  IdentityFile ~/.ssh/id_rsa
  ProxyCommand ssh server1 nc %h %p 2> /dev/null

とつながる:

ssh server2 -v

または使用-o

ssh server2 -o 'ProxyCommand ssh server1 nc %h %p 2> /dev/null' -v

源泉

-Jに追加するオープンSSH 7.3

  • ssh(1): 1 つ以上の SSH 要塞または「ジャンプホスト」を介した単純化された間接アクセスを許可するには、ProxyJump オプションと対応する -J コマンドラインフラグを追加します。

-Wに追加するオープンSSH 5.4

  • ssh(1) に "netcat モード" を追加しました: "ssh -W ホスト:ポート ..." これは、クライアントの stdio をサーバーの単一ポート転送に接続します。たとえば、sshをProxyCommandとして使用して、中間サーバーを介して接続をルーティングできます。 bz#1618

答え2

netcat足の上にある必要はありません。 DanSutがコメントで提案したように、コマンドラインオプションを使用することができ、ssh -Wこの設定は適切です。

Host axp
  User          remote_userid
  HostName      remoteserver.com
  IdentityFile  ~/.ssh/id_rsa.eric
  ProxyCommand ssh -AW %h:%p bridge_userid@bridge_userid.com

関連情報