2つのSSHコマンドの組み合わせ

2つのSSHコマンドの組み合わせ

最初のsshコマンドはマイコンピュータで実行され、キーパスワードを入力してサーバーにログインすると、2番目のsshコマンドが入力されます。

ssh -i cloudkey -L 6000:localhost:6001 [email protected] -p 9000
#i get prompted for a password to use the key 
ssh -D 6001 -p 6666 localhost -l dancloud
#i get prompted for a password associated with user dancloud
  1. これらのコマンドを1つのコマンドにまとめて同じ結果を得るにはどうすればよいですか?私はnetcatとProxyCommandがここで役に立つかもしれませんが、私はまだ理解していません。
  2. これら2つのパスワードをハードコードしてbashスクリプトに入れるにはどうすればよいですか?./login.shスクリプトにハードコードされたパスワードを使用してこれらのコードをすべて実行し、同じ最終結果が得られることを願っています。

答え1

最初の可能性は明らかです(-tスイッチを参照)。

ssh -t -i cloudkey -L 6000:localhost:6001 [email protected] -p 9000 \
   "ssh -D 6001 -p 6666 localhost -l dancloud"

一見すると複雑に見えますが、概念的にProxyCommandは1つだけを渡すことができます(推奨netcatされていないバージョンであり、-Wスイッチを使用する方がエレガントです)。

Host proxy
  Hostname 54.152.188.55
  User admin
  IdentityFile cloudkey
Host target
  Hostname localhost
  Port 6666
  User dancloud
  DynamicForward 6000
  ProxyCommand ssh -W %h:%p proxy

その後、接続に使用しますssh target(参照...今、bashスクリプトも必要ありません:))。

説明する:2番目のソケットsshもコンピュータ上で実行されるため、動的転送ソケット(SOCKSプロキシ)がコンピュータに直接作成されます。

パスワードに関してはこれはお勧めできません(パスワードは次のようにする必要があります)。秘密)しかしそれ可能仕事用にsshpass前面に使用する方が適していますssh


マニュアルページでは、スイッチについて次のようにssh説明します-W

-W host:port

要求は、クライアントの標準入力および出力に対するセキュアチャネルを介してポートのホストに転送されます。-N、、、-TおよびExitOnForwardFailureを意味しますClearAllForwardings。プロトコルバージョン2にのみ適用されます。

と一緒に使用すると、ProxyCommand要求された項目に接続してからhostnamenetcat標準IOを接続して:hostport(パラメータ)のデフォルトの組み込みバージョンを提供します。

答え2

次のような目的を達成できるはずです。

ssh -i cloudkey -L 6000:localhost:6001 [email protected] -p 9000 -t "ssh -D 6001 -p 6666 localhost -l dancloud"

この-tフラグは最初のシステムでpseudo-ttyを強制し、最初のシステム(この場合はsshからdancloudトンネルへ)で残りのコードを実行します。次のコマンドの場合、二重引用符はオプションです。

ssh 10.0.0.0 -t ssh 192.168.0.0

引用符は必要ありません。私はこのコマンドを毎日使用します(もちろん正しいIPを使用して)。ただし、引用符なしで失敗すると、マイルが変わる可能性があります。ちょうど追加してください;-)

スクリプトにハードコードされたパスワードの場合、これを達成するために私が考えることができる唯一の方法は、次のものを使用することです。予想されるスクリプトですが、これにはTCLコードの知識が必要です。該当するすべてのシステムで SSH 転送と鍵ベースの認証を使用するのが最善です。という簡単なプログラムを確認できます。キーホルダー$HOME/.bashrcファイルに以下を追加するだけです。keychain --agents ssh キーチェーンはSSHキーを見つけ、必要に応じてSSHエージェントを作成するか、既存のエージェントを使用します。sshこれは、複数の端末で使用する場合に便利です。

-A鍵ベースの認証を使用するには、SSHパラメーターに以下を追加するだけです。

ssh -A -i cloudkey -L 6000:localhost:6001 [email protected] -p 9000 -t "ssh -D 6001 -p 6666 localhost -l dancloud"

関連情報