2016-12-07 3 views
0

タイトルはそれのほとんどと言うが、私はより具体的になるだろう:私はscpサーバーへの私のローカルマシンからファイルにしたい場合はssh経由でサーバにログインしているときにローカルマシンにファイルをscpする方法はありますか?

は、私が使用します。

[email protected]_hostname:~$ scp local_file.txt [email protected]_server:~/ 
[email protected]_servers password: 
local_file.txt    100%  0  0.0KB/s  00:00 
[email protected]_hostname:~$ 

あなたが見ることができるように、私はそのsshサーバーのパスワードを求められ、ファイルは安全にコピーされます。私は、リモートのSSHサーバからの私のローカルマシンにコピーしたファイルを使用する場合はこれまでのところ、私はこのようなSCP使用してきた


[email protected]_hostname:~$ scp [email protected]_server:~/server_file.txt ~/ 
[email protected]_servers password: 
server_file.txt    100%  0  0.0KB/s  00:00 
[email protected]_hostname:~$ 

をあなたが見ることができるように、私は尋ねていますもう一度パスワードを入力します。私がすでにサーバにSSH経由でログインしている場合、パスワードをスキップするとよいでしょう。

[email protected]_hostname:~$ ssh [email protected]_server 
[email protected]_servers password: 
server login success! 
[email protected]_server:~$ scp server_file.txt [email protected]_hostname:~/ 
[email protected]_sercer:~$ 

これは可能ですか?それとも実用的?

+0

私の知る限り、これは 'ssh'と' scp'を直接使用することはできません。ただし、追加のユーティリティを使用することはできます。非常に柔軟なものは 'netcat'です。このチュートリアルをご覧ください:https://nakkaya.com/2009/04/15/using-netcat-for-file-transfers/ – arkascha

+0

またはrsyncを使用していますか? – Hackerman

答えて

1

sshをリモートホストに追加するときは、逆方向トンネルを設定します。

ssh -R 12345:localhost:22 remo[email protected]_server 

リモートホスト上のポート12345は現在12345への接続を意味し、あなたのホスト上のポート22に接続されているが、ローカルマシンのsshdサービスへの既存のssh接続を介してバックトンネリングされています。リモートマシン上

、バックホームディレクトリにファイルをコピーするために

scp -P 12345 server_file.txt localhost:~/ 

を実行します。

あなたが-Rを使用することを忘れないようにしたくない場合は、ローカルの.ssh/configファイルに以下を追加することができます。

Host * 
    RemoteForward 12345:localhost:22 

とトンネルが自動的に任意の接続用に設定されます。

また、ポート0(0:localhost:22)を指定して、sshが使用可能なポートを選択できるようにすることもできます。接続が確立されると、選択されたポートが標準出力に書き込まれます。

+0

remote_user @ some_server:〜$ scp -P 12345 test.txt localhost:〜/ connect_to localhost port 22:failed。 ssh_exchange_identification:リモートホストによって接続が切断されました 接続が切断されました –

+0

実際にポート22で 'sshd'が実行されていることを確認してください。 – chepner

関連する問題