web-dev-qa-db-ja.com

3番目のマシンにトンネリングするようにssh構成ファイルの設定を修正

ブリッジサーバー経由でサーバーにトンネル接続しようとしています。これまでのところ、次のコマンドを使用してコマンドシェルから適切に機能させることができました。

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コマンドにパス引数を追加しようとしましたが、違いはありませんでした。

それが何であるかについてのアイデアはありますか?

21
Eric B.

Jakujeの答え は正しいですが、OpenSSH 7.3により、-JProxyJumpを使用できるようになりました。 。私のメモを参照してください:

OpenSSH 7.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

OpenSSH 5.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が追加されました OpenSSH 7.3

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

-WOpenSSH 5.4 に追加されました

  • Ssh(1)に「netcatモード」を追加:「ssh -W Host:port ...」これにより、クライアント上のstdioがサーバー上の単一のポート転送に接続されます。これにより、たとえば、sshをProxyCommandとして使用して、中間サーバー経由で接続をルーティングできます。 bz#1618
26
GabLeRoux

ブリッジに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
3
Jakuje