NCなしでサーバーを介して自動SSHホッピングを設定しようとしています。
これはコマンドラインから実行できます。
ssh -A gateway ssh steve@target
(SSHエージェントに公開鍵を追加しました。)
ただし、これを ~/.ssh/config に追加すると、次のことは行われません。
Host target
User steveb
ProxyCommand ssh -A gateway ssh steve@targetip
$ ssh target
Pseudo-terminal will not be allocated because stdin is not a terminal.
^CKilled by signal 2.
問題を強制的に解決しようとするのは-t
面白いですが、役に立ちません。
ProxyCommand ssh -A -t gateway ssh steve@targetip
$ ssh target
Pseudo-terminal will not be allocated because stdin is not a terminal.
Pseudo-terminal will not be allocated because stdin is not a terminal.
^CKilled by signal 2.
もっと-t
?悪い。
ProxyCommand ssh -A -t -t gateway ssh steve@targetip
$ ssh target
tcgetattr: Inappropriate ioctl for device
^CKilled by signal 2.
可能ですか?ほとんどのチュートリアル(例:http://www.arrfab.net/blog/?p=246)をお勧めしますnc
。
ベストアンサー1
netcatなしのSSHプロキシコマンド
ProxyCommandは、ホストに間接的にのみアクセスできる場合に便利です。 netcatの場合は比較的進歩的です。
ProxyCommand ssh {gw} netcat -w 1 {host} 22
ここで、{gw} と {host} はゲートウェイとホストのプレースホルダーです。
ただし、ゲートウェイにnetcatがインストールされていない場合でも可能です。
ProxyCommand ssh {gw} 'exec 3<>/dev/tcp/{host}/22; cat <&3 & cat >&3;kill $!'
/dev/tcpは標準bashに組み込まれている機能です。これらのファイルは存在しません。 Bashにこの機能が組み込まれていることを確認するには、次の手順を実行します。
cat < /dev/tcp/google.com/80
...ゲートウェイで。
Bashを使用していることを確認するには、以下を使用してください。
ProxyCommand ssh {gw} "/bin/bash -c 'exec 3<>/dev/tcp/{host}/22; cat <&3 & cat >&3;kill $!'"
ControlMasterでも動作します。
(背景猫をクリーンアップするためにKillを含めるように10月22日に更新)
Roland Schulzに100%クレジットを提供します。ソースは次のとおりです。
http://www.rschulz.eu/2008/09/ssh-proxycommand-without-netcat.html
より有用な情報については、コメントをご覧ください。
詳細は次のとおりです。
http://www.linuxjournal.com/content/tech-tip-tcpip-access-using-bash
http://securityreliks.securegossip.com/2010/08/enabling-devtcp-on-backtrack-4r1ubuntu/
修正する:何か新しいと思います。表示
次の行を含む ~/.ssh/config の ProxyCommand を参照してください。
ProxyCommand ssh gateway nc localhost %p
マルコはこう言いました。
最新バージョンのOpenSSHを使用している場合は、netcatは必要ありません。 nc localhost %p を -W localhost:%p に置き換えることができます。
結果は次のとおりです。
ProxyCommand ssh gateway -W localhost:%p