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(パラメータ)のデフォルトの組み込みバージョンを提供します。

おすすめ記事