mymachine
パブリックIPを持つサーバーを介してプライベートNATネットワーク上のサーバーからファイルをコピーする方法を見つける必要があります。 NATの背後にあるシステムには証明書のみがあるため、証明書を介して渡す必要があります。priv-server
pub-server
priv-server
user@mymachine
mymachine
pub-server
priv-server
したがって、単一のコマンドでSSHを介してログインするには、次のようにします。
$ ssh -tA user@pub-server 'ssh user@priv-server'
——非常にうまく動作します。証明書はviaから渡され、mymachine
すべてがうまく設定されました。priv-server
pub-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転送チェーンを処理する方法を疑問に思うのではなく、問題を分離してください。
各ホストに透過的にアクセスするようにシステムを構成します。これはあなたの仕事で一度だけ行われます。
~/.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
可能であれば、認証が完全に透過的であるようにキー認証とプロキシ転送を設定します。そうでない場合は、一部のホストは対話的に認証する必要があり、セッションごとに一度だけ認証するか、ネットワーク障害が発生した後にのみ認証する必要があります。デフォルトの接続を開きます。
ssh -Nf priv-server
一般通貨
ssh
(または、、scp
などsftp
)。sshfs
rsync