単純にsshをカスケードした場合の図:
% ssh gateway ssh target command args [localhost] [gateway] [target] command args _________________________________|______ ssh target sshd ________________________________________ | stdin/out stdin/out _|_______________________|_____________ ssh gateway sshd _______________________________________
gatewayからtargetにログインするのに、targetにprivate keyを置くかAgentForwardingをつかってlocalhostの鍵でtargetの認証を行うか二通りある。
ncでトンネルをつくって接続した場合の図:
% ssh -o 'ProxyCommand ssh gateway nc %h %p' target command args [localhost] [gateway] [target] command args stdin/out | _|______________ _________________________________|______ . . . . . . . . . . . ssh target nc %h %p : . . . . . . . . . . sshd : : ____________: :_ __________: :___________________________ | : : | : : stdin/out : : stdin/out : : _|__________: :__________|________: :___ : : . . . . . . . . . : : : . . . . . . . . . . . : ssh gateway sshd ________________________________________
localhostの鍵でgatewayとtargetの両方にログインする。