web-dev-qa-db-ja.com

PuttyでSSH構成ファイルを使用する

SSHクライアントとして PuTTY を使用する SourceTree (Git GUI)を使用しています。リポジトリにSSH経由でトンネルする必要があるコードをプッシュする必要があります。問題は、リポジトリとSSH認証サーバーが別々のサーバー上にあることです。したがって、1つのサーバーにログインしてから、別のサーバーにプッシュする必要があります。

次のconfigファイルが渡されましたが、PuTTYでの使用方法がわかりません。

Host login
HostName login.nets.*******.**

Host zeus
HostName zeus.nets.*******.**
ProxyCommand ssh login nc %h %p 2> /dev/null
#ProxyCommand ssh login -W %h:%p
ForwardAgent yes
IdentityFile ~/.ssh/id_rsa
1
Sam Rad

PuTTYはその構成を保存しません ファイルに 。ただし、PuTTYは here のように「プロキシコマンド」を使用できます。

あなたの場合、設定ファイルの例は、2つのカプセル化されたSSH接続が必要であることを示しています。

  • 外部のSSHはホスト_login.nets.***_に対して行われます。その接続が完了すると、コマンドncがそのホストで実行されます。基本的には、データバイトを内部ホスト_zeus.nets.***_のポート22に転送します。

  • マシンからホスト_zeus.nets.***_への内部SSHが再度実行され、すべてのデータバイトが外部SSHを介して送信されます。

ProxyCommandオプションの_ssh login_部分は、ユーザー(またはGUIアプリケーション)が「zeus」に接続しようとしたときの外部SSHの呼び出しです。 PuTTY自体をそのように呼び出すことができるかどうかは明らかではありません。そこにisa command line がありますが、そのすべてを転送するには「内部PuTTY」も必要です「外部PuTTY」へのバイト。その「外部PuTTY」が「標準入力」のバイトを受け入れるかどうかは不明です(WindowsはUnixではなく、さらに、PuTTYはターミナルまたはrawで実行することを想定していません)バイト;それはそれ自身のウィンドウを開こうとします)。

可能な選択肢:

  • ポート転送 を使用してみてください。その場合、PuTTYを手動で開始して_login.nets.***_にし、ローカルポート5000(これは例です)からリモートホスト_zeus.nets.***_およびリモートポート22にポート転送します。次に、対話するようにGUIを構成します(ポート5000でlocalhostに接続するPuTTYをGUIが起動すると、ポート5000でlocalhostに接続するPuTTYを起動すると、他のPuTTY(手動で開始したもの)がバイトをホスト_login.nets.***_に転送し、そのホストをポート22の_zeus.nets.***_に接続します。

    _login.nets.***_上のSSHサーバーの構成に応じて、これは機能する場合と機能しない場合があります(このようなトンネルのサポートは、sysadminによって有効または無効にできます)。

  • よりUnixライクなSSHクライアントを使用します。 Cygwin を介して。これはthe通常の OpenSSH なので、提供されたSSH構成ファイルを読み取って使用し、ネストされた呼び出しを行うことができます。もちろん、「SourceTree」アプリケーションがそのようなSSHクライアントを使用するように構成できるという保証はありません。

6
Thomas Pornin