最初の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つのコマンドにまとめて同じ結果を得るにはどうすればよいですか?私はnetcatとProxyCommandがここで役に立つかもしれませんが、私はまだ理解していません。
- これら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
要求された項目に接続してからhostname
(netcat
標準IOを接続して:host
)port
(パラメータ)のデフォルトの組み込みバージョンを提供します。