SSHを使用した証明書転送によるトンネル経由のファイルのコピー

SSHを使用した証明書転送によるトンネル経由のファイルのコピー

mymachineパブリックIPを持つサーバーを介してプライベートNATネットワーク上のサーバーからファイルをコピーする方法を見つける必要があります。 NATの背後にあるシステムには証明書のみがあるため、証明書を介して渡す必要があります。priv-serverpub-serverpriv-serveruser@mymachinemymachinepub-serverpriv-server

したがって、単一のコマンドでSSHを介してログインするには、次のようにします。

$ ssh -tA user@pub-server 'ssh user@priv-server'

——非常にうまく動作します。証明書はviaから渡され、mymachineすべてがうまく設定されました。priv-serverpub-server

今私は通常、scpすべてのファイル転送要求にこれを使用しますが、すべてのトンネル情報をscp

答え1

cat代わりに、ファイルをローカルにコピーしてリモートcat > filenameコマンドにパイピングする低レベルの形式を使用してくださいpriv-server

$ cat file1.txt | ssh -A user@pub-server 'ssh user@priv-server "cat > file1.txt"'

または圧縮:

$ gzip -c file1.txt | ssh -A user@pub-server 'ssh user@priv-server "gunzip -c > file1.txt"'

抜粋man ssh:

-A は認証プロキシ接続転送をイネーブルにします。これは設定ファイルでホストごとに指定することもできます。

-t は擬似 tty 割り当てを強制します。これは、リモートコンピュータ上で任意の画面ベースのプログラムを実行するために使用することができ、これは、例えばメニューサービスを実装する場合に有用である。複数の -t オプションは、ssh にローカル tty がない場合でも tty 割り当てを強制します。


最初は答えを知りませんでしたが、よく眠り、この質問を書いた後に最初に試したコマンドに問題があることを発見して修正しました。しかし、これは役に立つと思い、答えを共有することにしました。

答え2

ネイティブを使用すると簡単です。sshfsこれは最近追加されました。

インストールするsudo apt-get install sshfs

sshfs -ttA user@pub-server ssh user@priv-server

これは魔法を発揮します。

詳しくはこちらをご覧くださいLinuxマガジン

答え3

複雑なSSH転送チェーンを処理する方法を疑問に思うのではなく、問題を分離してください。

  1. 各ホストに透過的にアクセスするようにシステムを構成します。これはあなたの仕事で一度だけ行われます。~/.ssh/config文書。

    SSHを教えるあるマシンを別のマシンのプロキシとして使用する、を宣言しますProxyCommand

    Host priv-server
    User user
    ProxyCommand ssh -W %h:%p -t user@pub-server
    

    返品接続共有の有効化。これにより、複数のクライアントインスタンスが同じチャネルを使用できるため、接続設定時間が節約されます。一番上.ssh/config(すべての行の前Host)を追加

    ControlMaster auto
    ControlPath ~/.ssh/control:%h:%p:%r
    
  2. 可能であれば、認証が完全に透過的であるようにキー認証とプロキシ転送を設定します。そうでない場合は、一部のホストは対話的に認証する必要があり、セッションごとに一度だけ認証するか、ネットワーク障害が発生した後にのみ認証する必要があります。デフォルトの接続を開きます。

    ssh -Nf priv-server
    
  3. 一般通貨ssh(または、、scpなどsftp)。sshfsrsync

関連情報